Download, drag,
answer the cards
A signed Mac app with its own backend inside. No Python, no terminal, no build step. Ten minutes from download to the first thing she does for you.
Apple Silicon (M1-M4) is the default. On an Intel Mac, use the Intel build.
Three steps
Open the disk image
Double-click Justine.dmg. A window opens with Justine and an Applications shortcut.
Drag, then open
Drag Justine onto Applications and double-click her there. She starts her backend and opens the welcome cards.
Answer eight cards
Who you are, which brain, the voice key, four permissions, a persona, your files, your people, your connections. Re-run it any time, it edits, never duplicates.
Your Claude login, or a key
Both are your account. The card that asks makes the difference clear.
Claude subscription
Justine installs the Claude Code CLI if it is missing and opens its login. Sign in once with the Claude account you already pay for.
- Full brain, real builds, no per-token bill
- The dashboard shows your five-hour and seven-day windows
- When the login expires she tells you, she sounds like a human who lost their glasses, not an error code
OpenRouter key
Paste one key, choose a model on the card: Claude Sonnet or Opus, Gemini Flash, GPT, Grok.
- No Claude Code install; tools run in-process
- Pay per use on your OpenRouter account
- Builds that spawn Claude Code sessions need the subscription path
Two keys, both free to start
Her ears and mouth are a Gemini Live socket; her spoken voice is Fish Audio. The card links to each, and stores what you paste in a file on your Mac.
Gemini API key
From Google AI Studio. Powers the live conversation, listening, answering, interrupting. Pick one of eight voices on the card by listening to them.
Fish Audio key
From fish.audio. Her spoken voice for the longer things, the report, a document read back, the night call.
Where they go
Into .env beside her data, through a writer that only ever reports "set" or "not set" back to the page. Never into a Justine server, there is none.
# .env, on your Mac, and only there GEMINI_API_KEY=set FISH_API_KEY=set JARVIS_BRAIN=claude # or: openrouter USER_NAME=Adwait JARVIS_DATA_DIR=~/Justine # memory, knowledge, runs, the tool token # Never read. Scrubbed from every child process. # ANTHROPIC_API_KEY=…
What the settings page writes. The values are shown here as "set" because that is all the page itself is ever allowed to see.
Four switches, each with a reason
The card opens the exact System Settings pane for each one and tells you when it is granted. Nothing is requested that she does not use.
Microphone
To hear you. Audio goes to the live socket while she is awake and nowhere while she sleeps.
Accessibility
Real mouse and keyboard, and answering a permission prompt in a Terminal window with a keystroke when you say yes.
Screen Recording
One downscaled screenshot when you ask her to look. Never on a timer, never saved, never sent anywhere but the model answering that one question.
Automation
AppleScript to Chrome, Terminal, Keynote and the Adobe apps. macOS asks the first time she reaches each app.