Quickstart
Five minutes: install, first session, first trim.
The whole path below takes about five minutes. Each step says what to run, what you should see, and what to do when you see something else.
-
Start Iris
From anywhere. Leave this terminal running for as long as you are working — Claude Code reaches the API through it.
npx @zero-drift/irisExpected: a banner naming the project, the proxy URL, and the paths it is using.
If the port is busy: Iris prints which project is using it. If it is another Iris instance, it moves to the next free port and re-points that project's settings itself. See Troubleshooting.
-
Initialize the project
From the project directory that contains
.claude/, in a second terminal.npx @zero-drift/iris initExpected: a summary of what was written —
ANTHROPIC_BASE_URL, the two hooks, the envelope draft, and four.gitignoreentries. Re-running is safe; it never wipes an existingpermissions.deny.If it says the project has no
.claude/: you are in the wrong directory, or the project has not been opened in Claude Code yet. -
Restart Claude Code
Claude Code reads
.claude/settings.jsonat session start, so a running session will not pick up the change. Quit it fully and start it again.Expected: nothing visible. Claude Code behaves exactly as before.
-
Send one message
Anything that makes Claude read a file is ideal, because it produces both a model request and a tool call.
What does src/guard/policy.mjs do?Expected: a normal answer. If Claude Code reports that it cannot reach the API, Iris is not running — see step 1.
-
Open Iris
open http://127.0.0.1:8787Expected: the Overview, with at least one call recorded. Keys
1–7switch views and⌘K/Ctrl-Kopens the command palette.If it says "waiting for agent": the proxy is up but no traffic has reached it. Confirm you restarted Claude Code after
init. -
Inspect Context
Press
4. The band at the top is the most recent turn drawn to scale.What to read: the fixed prefix — system prompt plus tool schemas — is the part re-sent on every message. If tool schemas are a large share of it, step 7 is worth your time. Details: Context.
-
Open Optimize and stage a trim
Press
5and sort by never-called. Toggle off a large optional or MCP schema you know this project does not need.Expected: the change is staged. Nothing is written until you press Publish changes, and the deny list applies from the next Claude Code session, not the next turn. Details: Optimize.
-
Open Guard and accept an envelope
Press
6, write one line describing what this task is allowed to do, and press Accept envelope.Expected: subsequent tool calls appear in the decision ledger with a rule name attached. Until an envelope is accepted, Guard uses the restrictive default. Details: Guard.
Context tells you what went out, Optimize removes what was never used, Guard decides what may run, and Flight Recorder records what did.