⑂ Parallel agents
One worktree and branch per task, with setup and teardown scripts and a $PORT of its own. Pick the agent, its model and effort. Fork a workspace, archive it, restore it — the chat resumes.
v0.1 · macOS · free & MIT · no account · Linux & Windows coming soon
Laki is a free macOS workbench for Claude Code, Codex, Gemini, Grok, OpenCode and any CLI. Every task gets its own git worktree, a real terminal and a live status — and keeps running when you close the window.
~/storefront $ laki new storefront --prompt "fix the cart total rounding"
✓ worktree laki/fix-cart-rounding ← main · $PORT 3100
✓ setup · added 412 packages in 3s
◐ claude is working… close the window, it keeps going
$ laki diagnose --your-workflow
Plain terminals don't scale past two agents. Laki patches each of these.
severity: high · status: patched
✗ before
✓ laki
$ laki pricing
What other agent tools sell as a subscription, Laki ships free and MIT-licensed. You bring the agent subscriptions you already pay for; Laki adds nothing on top.
Claude Code, Codex, Gemini, Grok, OpenCode or any command, as many at once as your Mac runs. No seats, no markup on tokens.
One prompt to several agents, a worktree each. Compare their diffs and answers side by side, keep the best one.
Worktrees, git, gh and agents on your dev box or a beefy server. Only the agents and gh live there.
The whole app on your phone, plus pushes to ntfy, Slack or Telegram when an agent waits, with what it asks.
Nightly dependency bumps, morning triage. They run on your Mac, not on metered cloud minutes.
Preview the dev server, pick an element into the prompt. Agents open, click, fill in and screenshot it themselves.
Failing CI, review comments and merge conflicts go back to the agent. Start from an issue or a PR; archive when it merges.
A board of every workspace and to-do. Agents start workspaces and message each other through MCP or laki.
$ laki help --features
One worktree and branch per task, with setup and teardown scripts and a $PORT of its own. Pick the agent, its model and effort. Fork a workspace, archive it, restore it — the chat resumes.
Paste a GitHub issue and its text becomes the prompt. Paste a PR and Laki checks it out in a worktree, forks too, linked to its checks.
Not sure which agent will nail it? Send one prompt to Claude Code, Codex and Gemini at once, each in its own worktree. Compare shows every diff, answer and changed file; Keep this one archives the rest.
Running, waiting for you, done, usage limit. From the agents' own hooks, not screen scraping. macOS pings you, the Dock counts what waits, and the ask bar answers an agent's question without touching the terminal.
Tabs and panes, tmux style: drag a tab to split. A daemon keeps them alive while the app is closed. ⌘F finds text.
A prompt at times you write in plain English: every day at 2am except weekends. Names carry the date: Nightly {{DD-MM}}. A log lists every run.
The status bar shows the PR and its CI. Failing checks, review comments and merge conflicts go back to the agent on their own. Ship commits, pushes and opens the PR in one step; a merged PR can archive its workspace.
A ring shows how much of your Claude and Codex plans you've used and when each window resets. Agents pick up after a limit on their own.
Run starts the project's run script. Click a listening port to open it, ✕ to stop what holds it, or share it with a public link and QR code.
⌘K palette for every action, workspace and tab. ⌘P finds a file. A key for every menu item. And a laki CLI the agents themselves can use.
The dev server on $PORT right next to the agent. Pick an element on the page: its selector, text and size land in the prompt. The camera sends a screenshot.
laki mcp gives any agent Laki's tools: start a workspace, message another agent, read its screen, see a diff. Nothing destructive. laki:// links open a workspace, a tab or a prefilled task.
Click a line in the changes panel to comment on the PR, or send the note to the agent. Review threads sit next to the code.
Every workspace by where it is: running, needs you, done, PR open, merged. Jot to-dos; one click starts an agent on it.
Open devbox:~/code/app and work there as if it were local: worktrees, setup scripts, agents, gh. $PORT is forwarded, so the preview works too.
An agent waits? Your phone buzzes through ntfy, Slack or Telegram, with what it asks. The menu bar counts what needs you; Allow or Deny right in the notification.
.env copied into new worktrees. Image diffs. Edit a file in place. Pin a workspace, stop a stray port, set a timer, play a video while agents work, and a meme button for the wait.
$ laki config set theme phosphor
A CRT, Win95 bevels, Aqua gel, a handheld's LCD, an e-reader, a diner's checkerboard, origami folds. Glass mode makes the window see-through. Fonts are built in.
$ laki remote --hours 8
rm -rf from the couch.Use the whole app from your phone or another computer, through a Cloudflare tunnel that only lets in your email. It lasts 1 to 24 hours, or until you stop it. A phone gets its own layout: a sliding sidebar, one pane at a time, and the keys a phone keyboard lacks.


$ which laki
The same daemon answers the app, your scripts and the agents. A skill for Claude Code, Codex, Gemini, Grok and OpenCode — or the MCP server — teaches them to start workspaces, message other agents and read their screens.
$ laki new app --prompt "fix the login redirect" # a worktree with claude working on it
$ laki ls # projects, workspaces, tabs, status
storefront
fix-cart-rounding laki/fix-cart-rounding :3100 PR #42 ● done
checkout-redesign laki/checkout-redesign :3110 PR #45 ◐ working
drop-legacy-migr… laki/drop-legacy-migr… :3130 ◆ waiting
$ laki send fix-the-login --when-idle "now add tests" # typed in when its turn ends
$ laki schedule add app --when "weekdays at 9am" "triage new issues"
$ laki new app --fan claude,codex,gemini --prompt "free shipping over $100" # a race
$ laki project add devbox:~/code/api # a project over SSH
$ laki ship fix-the-login -m "Fix the login redirect"
✓ committed · pushed · PR opened
$
$ cat PRINCIPLES
claude, codex, gemini, grok and opencode run in real PTYs, exactly as in your terminal. Status comes from their own hooks.
The app is a client. Closing it never stops an agent. PR checks, limit waits and the follow-up queue run in the background.
One worktree and branch per task, its own $PORT, its own setup. Local and plain folders work too.
Few dependencies, platform features first. Data stays in ~/.laki; ~/.claude is touched only when you install the skill.
$ laki keys
$ ./install
macOS on Apple silicon or Intel, Node 22.6+ and git. Optional: claude, codex, gemini, grok or opencode on your PATH, and gh (logged in) for PRs. Linux and Windows coming soon.
git clone https://github.com/igorkasyanchuk/laki && cd laki npm install npm run pack # builds dist/mac-arm64/Laki.app open dist/mac-arm64/Laki.app # Intel: dist/mac/Laki.app npm link # optional: the laki CLI on your PATH