✨ v0.1.1 is here

a tiny buddy that lives on your Mac.

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 ⌘ ⇧ spacefree · open source · macOS 13+

a day with twin

you've met the other kind of assistant.

The kind that needs your calendar and texts to be useful, then ships all of it to a server you'll never see. Twin skips that trade, keeping everything in a DuckDB file at ~/.twin/twin.duckdb, right on your Mac. No accounts, no sync, no cloud database. Here's an ordinary Tuesday with it, and exactly what does or doesn't leave your laptop.

Everyone who installs Twin gets their own brand-new twin.duckdb, created on their Mac the first time they run it. Nothing is shared, synced, or pooled between users, and the database itself never leaves your machine.

Voice, the digest and nudges never touch an AI provider at all, they're built and matched entirely on your Mac. When you chat, one request goes to the provider you picked with your message, your name, the current time, today's event titles, and a fuzzy summary like "spent money on food earlier this week". Amounts, balances, account numbers and raw SMS never leave.

🦆
7:41am · pulls bank texts and today's calendar into twin.duckdb
stays home
🗒️
12:30pm · "what did I miss?" counts texts by topic
no API key
🎙️
3:15pm · ⌘⇧V or "hi twin," speech turns to text on-device
on-device
🔔
9:40pm · flight tomorrow, a payment text nearby, one nudge
local only
🔑
your API key · kept in the macOS Keychain
stays home
🫧
fuzzy summary · "got paid yesterday," not "$1,240"
built locally
💬
your AI provider · message, name, events + summary only
only exit
🚫
our servers · we don't have any, genuinely
never

and a few smaller things

small buddy. surprisingly handy.

That's the daily stuff. No dashboard, no onboarding flow, no 14-step tour, just a little bubble on your screen with a few more tricks up its sleeve.

one hotkey away

Hit ⌘ ⇧ space from anywhere and Twin pops up in a floating bubble. Hit it again and it goes away. No app to switch to.

a little bit weird

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.

fully open source

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.

peeks at your screen (only when asked)

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.

bring your own AI

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

five moods. same buddy.

Twin comes in five flavors. Same local brain, different attitude. Colors below are the exact palettes the app uses.

Twindefault
hanging out
hey friend! what's up?

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
Shade
lurking behind windows
Heh… you rang, friend? Ask me anything. Cmd+Shift+Space and I vanish.

A mischievous shadow-ghost. Grins a lot, teases a little, still firmly on your side.

/persona gengar
Ember
all fired up
Hey hey, friend! Ember's all fired up. What are we doing today?

A bright little spark who hypes you up and makes errands sound like an adventure.

/persona ember
Luna
here whenever you need me
Hi friend. Take a breath. What's on your mind?

Soft, patient, unhurried. Talks about money without judgment and helps you breathe out.

/persona calm
Assistant
ready
Hi friend. How can I help?

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

download. drag. say hi.

Twin is a real Mac app. No terminal, no Python, no config files. Setup happens inside Twin and takes about a minute.

Twin for Mac

v0.1.1 · macOS 13 Ventura or later · Apple silicon · free and open source

One command: downloads the latest .dmg, mounts it, copies Twin into Applications, and clears the quarantine flag so Gatekeeper doesn't block the first launch.

curl -fsSL https://raw.githubusercontent.com/woustachemax/twin/main/scripts/install.sh | bash

Not keen on piping a script from the internet into bash? Fair enough, download the .dmg manually instead.

01

get it onto your Mac

Run the quick install command above, or drag the manually downloaded .dmg into Applications. Either way, Twin.app ends up in your Applications folder.

02

first launch

Quick install already cleared Gatekeeper for you, so it just opens. Downloaded manually? See the Open Anyway steps above the first time you launch it.

03

set it up in the bubble

Pick your AI provider, paste your API key (it goes straight into your Keychain), tell Twin your name, and pick a buddy. Done.

what macOS will ask about

⌨️
Accessibilityso ⌘ ⇧ space works from anywhere
for the hotkey
📅
Calendarsso Twin can mention what's coming up today
optional
💬
Full Disk Accessso Twin can read bank texts in Messages for your spending summary
optional
🖥️
Screen Recordingonly asked for the first time you ask Twin to look at your screen
optional

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.