Skip to content

~3 min readgrounded in apps/web/app/api/chat/route.ts (create_ai, modify_ai) · apps/web/app/api/tiny/route.ts

Your first tiny·

A tiny is a personal AI that lives at /<slug> on your deployment: a system prompt, knowledge, optional data, optional tools, memory, and a public profile card with a vCard, QR code and Open Graph image.

1 · Sign in·

Open your deployment and sign in with GitHub. This is the only login method until you add a passkey (Settings → passkeys); from then on the passkey is enough.

2 · Create it by chatting·

On the home tiny, ask for what you want:

Create a tiny called atlas that answers questions about my reading list. Be terse, cite the book.

The agent calls its create_ai tool, which takes exactly these fields:

Field Required What it does
name yes becomes the slug (slugify, lower-case, strict)
systemPrompt yes the tiny's instructions
systemKnowledge yes facts it should know
data no free-form data the tiny can consult
worker no an OpenAPI URL — the tiny gains that API's operations as tools
hook no a webhook that receives the tiny's messages
hero, logo, theme {accent, bg} no landing banner, avatar, per-tiny colours
tagline, chips no landing subtitle (≤ 200 chars) and 1–4 starter chips (≤ 60 chars each)
intro_vibe no haptic greeting on mobile: tap, double, success, warning, error, heartbeat, sos, long, escalate, wave

Your new tiny is live at /<slug> as soon as the tool returns.

3 · Shape it·

Keep chatting — on the tiny itself or on the home tiny. modify_ai takes the same fields; an empty string clears hero, logo, theme or intro_vibe, an empty chips array restores the defaults.

4 · Share it·

The profile card at /<slug> is public. Every tiny also serves /vcard/<slug> and an Open Graph image, so a link pasted into a chat app unfurls with the tiny's name and colours.