~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.