Your agent reads less.
You decide what.
Claude Code or opencode runs unchanged in a real terminal. It greps Lirah's index instead of reading your repo, and gets the files you pick at the detail you pick.
Against Claude Code alone, on Lirah's own codebase · how we measured
Plate I · The workspace. The terminal at the centre; everything else orbits it.Scale: Claude Code alone = 1.00
In the terminalClaude Codeopencode/As headless jobsCodexGeminiCursorAmp/Your own CLI, login and plan/No account/MIT licensed/
Same agent, same questions. With and without the index.
8 questions that each need 3+ files, 3 runs each way, on a small repo and on Lirah's own app. Every answer graded against the files it should name. Sonnet · Claude Code 2.1.280. The evals
| Measure | Claude Code alone vs with Lirah | Change |
|---|---|---|
| Cost per cross-file questionLirah's codebase | alone1.00 with Lirah0.76 | −24% |
| Time to the same answerLirah's codebase | alone1.00 with Lirah0.84 | −16% |
| API costboth repos | alone1.00 with Lirah0.87 | −13% |
| Tool callsboth repos | alone1.00 with Lirah0.82 | −18% |
| Tasks that got cheaper | 7 of 8 | |
| Answers correct | alone 100% · with Lirah 100% | Sameevery answer right |
Stop paying for files your agent didn't need.
Pick what the agent sees, and send big files as signatures. schema.ts goes from 12.6k tokens to 2.1k.
EDIT, READ or COPY: change it, read it, or copy its pattern.Your agent greps an index instead of reading the repo.
Lirah keeps a symbol index of your project. The agent greps it, then reads only the lines a hit names.
src/auth/tokens.ts:42–61the lines to readrotateRefresh()the enclosing function← login.ts · refresh.tsits callers:compact on. A failing hook never blocks a prompt.One window, an agent per project.
Every project tab runs its own agent, and its row lights up when the agent needs you.
- 1acme-apiclaudeediting limiter.ts
- 2acme-webopencodeasks: run the migration now?
- 3acme-dbclaudeidle
- 4infraopencodeidle
Budgets that catch a runaway session.
Daily or weekly token budgets per project, with warnings at 80% and 95%.
Work you don't have to watch. You choose what lands.
Race headless agents in their own worktrees, or let a plan commit itself chunk by chunk. You apply what you want.
- 1–3implemented · 3 commitsdone
- 4rotate refresh tokens on usenow
- 5revoke sessions on password changenext
- 6–7add api key scopes · audit log for auth eventsqueued
Autopilot stops when the agent asks a question, needs permission or skips a commit.
Commits drafted. Merges shown first.
An agent drafts the commit message. A merge lists every git command before it runs.
- 1
git checkout mainlisted - 2
git merge --no-ff feat/token-rotationlisted - 3
git branch -d feat/token-rotationlisted
Nothing runs until you confirm. Lirah never pushes or pulls.
Let the agent run, inside a sandbox.
On Linux each tab can run in bubblewrap: the system read-only, the project writable, keys and git config locked. macOS and Windows run without it.
- Iisolatedpid · ipc · uts namespacesown
- IIread-only
/·~/.ssh·~/.gnupg·~/.gitconfig· shell rc fileslocked - IIIread-write
~·~/projects/acme-apiopen - IVprivate
/tmpper tab
Questions before you install.
Does Lirah replace or wrap my agent?
No. It starts the agent's own CLI in a real terminal, with your config, login and plan. Lirah never calls a model API itself.
Which agents and platforms does it support?
Claude Code and opencode run in tabs; Codex, Gemini, Cursor and Amp run as background jobs. Linux first; macOS and Windows work without the sandbox.
Does anything leave my machine?
Only an update check to GitHub's API, with none of your data. No telemetry, and Lirah never pushes or pulls.
Is it free?
Yes. MIT licensed, no account, source at github.com/emdmed/lirah. You still pay for your agent plan.
What happens if I stop using Lirah?
Nothing to migrate. The agents are the same CLIs, and every commit is ordinary local git.
Why not tmux and my editor?
Keep them; nvim and lazygit open in the second terminal. Lirah adds what a multiplexer can't see: what the agent reads, how full its context is, whether it's waiting on you, and jobs and plans.
Install Lirah.
The script picks .deb, .rpm or AppImage for your distro, and builds from source on Arch.
curl -fsSL https://raw.githubusercontent.com/emdmed/lirah/main/scripts/install.sh | bashLinux x86_64: .AppImage · .deb · .rpmmacOS: .dmg for Intel and Apple siliconWindows x64: .exe · .msiBuild from source