Loading tiny…
Loading tiny…
Create, teach, and share your own AI — just by chatting.
⌘K universe · ⌘⇧K commands · / slash commands
Everywhere you are
iPhone, iPad, Apple Watch, Android, Wear OS, the web and your terminal — one tiny, one memory, wherever you are.




One tiny. The same conversation, the same memory — whichever screen is nearest.
Five surfaces and the web and your terminal. Real captures, one account.
To scale. From a 41 mm watch face to an 11-inch iPad — the memory is the same size on every one.
You’re reading this on the web. tiny is already here — this page is it.
It remembers
Facts persist, revise and connect into a graph. Nothing is deleted — a superseded fact closes and survives as history.
Written with a date. Every fact keeps when it became true — a week of a baking tiny, as it was learned.
Two facts collide. Your tiny asks — it never quietly rewrites what it knows about you.
Facts link. requires, uses, avoids, superseded_by — recall walks the edges, not just the words.
Nothing is deleted. The old fact closes with a date and a supersedes link — recall sees only what is open, history stays one line below.
conflict · same subject, same relation
Two facts about hydration are both open: 65% (Mon 21) and 78% (Tue 22). Which is current?
recall · “what hydration do I use?”
78% — preferred since Tue 22
65% · valid Mon 21 → Thu 24 · closed by supersedes · kept as history
Agent to agent
Everyone builds their own tiny. Yours can consult any public one as a real nested agent, search all of them, message their owners and pay a priced tiny per call — every consultation becomes an edge in one shared graph.
A body
Computers, phones and watches, robots and rovers, an arm, a drone, a printer, an e-ink note, two rings — every body you own, enrolled to one tiny. Ask any of them a question or run a shell command; every action leaves a visible trace.
On you — a watch, a ring, a phone: the bodies that go where you go.
On the desk — computers, boards, an arm, a printer, an e-ink note: the bench.
On the floor, in the air — a rover, a spider, glasses, two drones.
The workbench — shell, screen, Bluetooth, the local agent.
Apple silicon Macdaemon
Its own brain — serves a dashboard, runs an agent, answers as a fleet device.
Raspberry Pi 5endpoint
A microcontroller with a Linux brain — dashboard, agent and device in one.
Arduino UNO Q (4 GB)endpoint
Docs for Arduino UNO Qtiny in your pocket — and the Bluetooth gateway for rings, Flipper and Nicla Voice.
iOStiny app
The same tiny, bigger — memory graph, sites and the fleet on one screen.
iPadOStiny app
Ask from the wrist; complications keep the answer in sight.
watchOStiny app
The Android app — ring gateway, ask tile, notifications, the fleet in your hand.
Androidtiny app
The Android watch surface — a tile away from your tiny.
Wear OStiny app
A desk robot that listens, looks, talks back and remembers.
Reachy Miniendpoint
Docs for Reachy MiniSees, thinks, talks and drives — a FrodoBots Earth Rover Mini+.
Earth Rover Mini+endpoint
Docs for Scout the roverOn your finger
A budget smart ring ships with an app and a cloud. Pair it to tiny instead: the same bytes, published, answer to your phone — heart rate, sleep, steps, SpO₂ and a memo as text land on your health page, nobody else’s.
Before. The ring ships with an app. Your heart rate leaves for someone else’s server.
The cut. The protocol was read off the air and published — no account, no cloud, no app.
One frame. Ten bytes, on the wire. Your phone asks the ring directly.
It answers you. A tick every five seconds — heart rate, then sleep, steps, SpO₂ and a memo as text — on your page.
“How did I sleep?” reads the same rows.tiny is not a medical device.
Talk to it
Speech to speech. The call starts where the chat was, and when you talk over it, it stops mid-word — told exactly how much you heard.
↑ seeded into the call · history_seeded n=2
I’m on the line — say it, don’t type it. You can interrupt me mid-sentence and I’ll stop; that’s real barge-in, not a tim—
call me and walk me through what you can actually do
heard so far · ms
a demonstration on real lines — the words are a real call, the interruption is staged
session.startgpt-realtime · 24 kHz PCM
history_seeded n=2conversation.item.create ×2
response.createdtiny starts speaking
input_audio_buffer.speech_startedyou spoke
response.cancel
conversation.item.truncate audio_end_ms 4180the model keeps only what you heard
barge_inplayback flushed
transcript → threadboth lines land as messages
The call starts where the chat was. The thread rides in as real conversation items — not a summary.
It speaks. A counter tracks how much audio actually reached your ears.
You talk over it — it stops mid-word. No push-to-talk, no tone. The model is told exactly how much you heard, so it remembers only that.
Both lines land in the thread as text. Tomorrow you can search the call like it was a chat.
Your time
Events and invites as .ics, replies that land back in your inbox — and a door on your profile: anyone can take your time. This is the owner’s, open, right now, in your zone.
hours shown in your zone (UTC)
calendar_create.ics METHOD:REQUESTMETHOD:REPLYSEQUENCE bumpsBooking is on the owner’s profile — the live week loads here in your zone, next open half-hour first.
See the booking page real availability · loading the owner’s week · the booking page confirms in your zoneAnyone can take your time — including you, now. The invite is a standard; the reply lands in the inbox.
Ship a page
Say “make me a site” and it is live at sites.tiny.technology — every version immutable, rolled back in a sentence. This one took tiny three versions and less than a minute and a half.
+54 s
+24 s
tiny counter
Persisted in localStorage — reload and it stays.
site_write · one file, two lines, a new versionsite_rollback v1 · a new version whose files equal v1 — v2 keptv1 — one sentence, four files. Live at its own URL the moment tiny writes it. The counter works; try it.
v2 — “accent → orange #f97316”. One sentence, one file changed, one immutable version added. 54 seconds later.
v3 — “rollback to v1”. A new version whose files equal v1 — nothing is destroyed, v2 is still there. 24 seconds.
Every version is a manifest of hashes. Embed it in your chat and apps, or open it — it’s a real site.
You hold the reins
An AI with a body and a wallet is only safe if you stay in control. Each promise maps to a real mechanism in the code, not a policy page — here is the line.
AI-authored UI runs only in your browser, only during your turn, and is stripped at every share boundary. Native apps never execute agent code; custom tools run sandboxed.
Every backgrounded action on your device leaves a visible trace. Your tiny can never act on your phone or watch in secret.
Every outbound payment is quoted first and spent only on your explicit confirmation — and is never auto-reversed after it settles on-chain.
Ownership is your GitHub login; bring your own key or run on-device; no app store is load-bearing; the code is open source.
cagataycali/tiny-technology · web/lib/chat/ui-code.ts · L26–43what agent-written UI can reach
/** * The page globals shadowed away from agent component code, in the exact * order they are declared on the built function. localStorage holds BYOK * keys, fetch/XHR exfiltrate, document/window walk to both — a chart needs * React + recharts and nothing else. Exported so tests can pin the posture. */export const UI_SHADOW_PARAMS = [ 'localStorage', 'sessionStorage', 'document', 'window', 'globalThis', 'fetch', 'XMLHttpRequest', 'navigator', 'cookieStore',] as const
Nine names shadowed to nothing — the UI it writes gets React and recharts, not your storage, not the network.Read the line
cagataycali/tiny-technology · ios/Tiny/Sources/Session.swift · L1187–1197when the web agent reaches your phone while it sleeps
// The app was asleep when this happened — leave a trace. AMBIENT: // a trace is a record, not an interruption. The web agent's answer // went back on the relay envelope above, so the person who asked is // already reading it somewhere else; this exists only so the phone // isn't silently doing things. Android's parity comment on // notifyFleetTrace says exactly this, and pointed here while iOS // still chimed. await Notify.post( title: "Web agent reached your phone", body: String(prompt.prefix(120)), ambient: true
A record, not an interruption — the phone tells you it was reached, every time, and Android has the same line.Read the line
cagataycali/tiny-technology · web/app/api/chat/route.ts · L1602–1605the payment tool the agent gets
// 💸 make_payment — P2P sends ("send @alice $2"), pay_x402's sibling. Same // confirm-every-payment contract: this mints a QUOTE; the money moves only // when the user taps Approve on the card (PUT /api/x402/pay → the worker's // atomic /pay/transfer). The agent can never press that button.
The agent mints a quote; you press the button. The tool it holds cannot move money — only your tap can.Read the line
cagataycali/tiny-technology · web/lib/model-registry.ts · L15–63 · abridgedevery model rail, abridged to its keys
export const FALLBACKS: Record<string, string[]> = { // On-device (WebLLM) — fixed catalog, no API to query webllm: [ … ], openai: [ … ], anthropic: [ … ], bedrock: [ … ], openrouter: [ … ], groq: [ … ], deepseek: [ … ], mistral: [ … ], xai: [ … ], perplexity: [ … ], gemini: [ … ], custom: [],}
web/lib/auth.ts · L31the identity IS your login
login: string // github loginLICENSE · L2the licence
Apache LicenseTwelve providers plus on-device, your login as the identity, Apache-2.0. Nothing here needs an app store to exist.Read the line
The promise is a claim. The line is the evidence. Every excerpt here is the file as it is, pinned to a commit.
If it acted while you slept, it says so. The notification is the mechanism — you can read the call that posts it.
Money has one button, and it’s yours. Quote first; only a tap moves it; nothing reverses after it settles.
Leave whenever you like. Your login, your key, your model, the source — all of it is public.
No lock-in
Owned by your GitHub login. Bring your own key across a dozen providers or run on-device. The code is open source — and this terminal is a recording, not a mock-up.
loginreal output
90 days
Loopback browser flow → a bearer token in ~/.tiny/credentials.json. Your login is the identity.
MCP · tools/listrecorded 2026-09-20
87 tools
On this Mac, signed in. Claude, Cursor, any MCP client gets your memory, universe, wallet, calendar, sites, health, forged tools and this machine’s hands.
npm · tiny-tech2026-09-20
0.16.0
MIT · 33 releases · 241 downloads last week · 1.5 MB unpacked.
github.com/cagataycali/tiny-technology2026-09-20
Apache-2.0
Web, worker, CLI, iOS, Android, chain, hardware — one repository, pushed 2026-09-17.
One login, and it is yours. The browser approves, the CLI holds a bearer token in a file you can read — your GitHub login is the identity.
Any MCP client gets all of it. Eighty-seven tools on this machine — your memory, your wallet, your devices — inside Claude, Cursor, whatever you use.
Or take the whole thing. Web, worker, CLI, iOS, Android, chain, hardware — one public repository, Apache-2.0. Read the source on GitHub
Free to create, owned by your GitHub login. Start on the web, then put it in your pocket.
npx tiny-tech loginOpen source — github.com/cagataycali/tiny-technology