Twin floats on your desktop, knows roughly what you've been up to, and keeps all of it on your machine.
summon it anytime with ⌘ ⇧ space
why local
Twin keeps everything it knows about you in a DuckDB file at ~/.twin/twin.duckdb, right on your Mac. No accounts, no sync, no cloud database, no analytics. Twin has no server of its own, so there's nowhere for your data to go.
Twin is a real app anyone can install, not somebody's personal script. Everyone who installs it gets their own brand-new twin.duckdb, created on their Mac the first time they run Twin. Nothing is shared, synced, or pooled between users, so your data never mixes with anyone else's, and the database itself never leaves your machine.
What leaves your Mac: when you chat, one request goes straight to the AI provider you picked (Anthropic, OpenAI, Google or xAI) with your message, your name, the current time, today's calendar event titles and times, and a fuzzy spending summary like "spent money on food earlier this week". Amounts, balances, account numbers, merchants and raw SMS never leave, and Twin scrubs every request before it's sent. Ask about your screen and only a one-line description goes along. The screenshot itself is deleted on your Mac right away.
stuff it does
No dashboard, no onboarding flow, no 14-step tour. It's a little bubble on your screen that talks back.
Hit ⌘ ⇧ space from anywhere and Twin pops up in a floating bubble. Hit it again and it goes away. No app to switch to.
Every time Twin starts, it pulls new bank texts from Messages into a local DuckDB file and checks today's calendar, so it has a rough picture of your day without you explaining it.
Twin itself is warm and easygoing. Want more flavor? Swap in a sly shadow-ghost, a hype-machine spark, or a sleepy moon ghost with one click. None of them write you five-paragraph essays with headers.
Every line is on GitHub. Read it, fork it, rip out the parts you don't like, give it a new personality. It's plain Python, not a black box.
Ask "what am I looking at?" and Twin takes one quick screenshot, reads it on your Mac, and deletes it right away. The AI only ever gets a one-line description, never the image.
Claude, GPT, Gemini or Grok. Paste a key from whichever you like and Twin talks to it directly. Your key lives in the macOS Keychain, not in some file.
pick a vibe
Twin comes in five flavors. Same local brain, different attitude. Colors below are the exact palettes the app uses.
The one you get out of the box. Warm, cheerful, easygoing, like a good friend who's happy to help. Light and kind, no big act.
/persona twin
A mischievous shadow-ghost. Grins a lot, teases a little, still firmly on your side.
/persona gengar
A bright little spark who hypes you up and makes errands sound like an adventure.
/persona ember
Soft, patient, unhurried. Talks about money without judgment and helps you breathe out.
/persona calm
No quirks, no puns, no ghost. Clear, neutral answers, all business.
/persona plain
Pick your buddy during setup, then switch anytime by clicking a different one in Twin or typing /persona <name> with the lowercase name on each card. Pick nothing and you get Twin. Want no personality at all? /persona plain switches to Assistant, the no-frills fallback.
get twin
Twin is a real Mac app. No terminal, no Python, no config files. Setup happens inside Twin and takes about a minute.
Unzip the download and drop Twin into your Applications folder. That's the whole install.
Twin isn't notarized by Apple yet, so macOS will say it can't check it. Head to System Settings → Privacy & Security and click Open Anyway. After that it opens like any app.
Pick your AI provider, paste your API key (it goes straight into your Keychain), tell Twin your name, and pick a buddy. Done.
You'll need an API key from Anthropic, OpenAI, Google Gemini or xAI. Twin sends your chats straight to whichever you pick. Skip any permission and Twin still works, it just knows a little less.