Every agent its own branch. Review the work in one place.

Run Claude Code, Codex or any agent CLI side by side, each in its own git worktree, then review the diff, edit the file and merge the pull request in the same tab.

curl -fsSL https://raw.githubusercontent.com/Neautrino/punk0/main/install.sh | sh
The agents page, built in HTML from punk0's theme files. Theme: Catppuccin Latte

The punk0 way

punk0 keeps it simple. It organises the agents you already run and shows you their work.

A terminal window per agent, gone when it closes.
Tabs run inside punk0. Close or reload the browser and they keep running, then replay their recent output.
git worktree add by hand, cleanup later.
New workspace makes a worktree on its own branch under ~/.punk0. Deleting the workspace can remove the folder with git worktree remove.
Checking every terminal for an agent that is waiting.
The status bar counts agents that need you or are working, and the page title shows how many wait. Desktop notifications if you turn them on. Claude Code tabs report this through its hooks.
Opening the diff in another tool.
The changed files and their diff sit beside the terminal, and the full editor is one click away.
Which chat was that?
Chats lists the conversations Claude Code, Codex and OpenCode keep on disk, including ones started in another terminal, and resumes any of them in a tab.

One binary

Written in Go. No Electron, no Node, no cgo.

The real CLIs

Each agent is the unmodified CLI started in your shell, signed in as you. punk0 has no chat of its own.

Local

Listens on 127.0.0.1. Terminals are refused if it listens anywhere else, and requests from other host names are rejected.

Out of your repo

State lives in ~/.punk0. Repositories only get worktree registrations, and temporary refs/px0/* during a review.

Small on purpose

Other orchestrators are desktop apps that bring their own browser engine, a background daemon, and sometimes a chat pane and a sign-in. punk0 does one job, organising the agents you already run, and leaves the rest out.

Same job for each app: the flask repository as a project, one git worktree, two idle shell tabs. Median of 3 runs on one Linux machine (Ryzen 5 5600H, 22.8 GiB RAM), measured 2026-10-26. Memory is PSS of every process the app started, shells excluded. Orca and Paradev ship their own browser engine and their numbers include it; punk0 opens in the browser you already run, so its tab is listed separately (about 112 MiB, or 279 MiB if Chrome runs only for punk0). Paradev requires a GitHub or Google sign-in before it opens a project, so its numbers stop at the sign-in screen.
AppStartup to the projectMemory when idleDownload
punk0 0.1.00.64 s55 MiB + about 112 MiB for its tab in your browser17 MiB
Orca 1.4.2412.00 s563 MiB234 MiB
Paradev 2.0.0 formerly Superset1.97 s to the sign-in screen450 MiB or more at the sign-in screen470 MiB
From each project's own README and docs, and from what the apps did on first launch in the same test.
What shipspunk0OrcaParadev
RuntimeOne Go binary; opens in your browserElectron desktop appElectron desktop app
Built-in browserNoYesYes
AgentsThe real CLIs in terminalsCLIs in terminalsCLIs in terminals, plus its own chat pane
AccountNoneNoneGitHub or Google sign-in required
After you quitEverything stopsA terminal daemon keeps runningBackground terminal daemon
Mobile app, cloud relayNoYesYes, mobile with Pro
First launch writes intoOnly ~/.punk0~/.claude, ~/.config/opencode~/.claude, ~/.codex, ~/.agents/skills and more
TelemetryAnonymous, on by default, -no-telemetryAnonymous, on by default, opt-outPostHog and Sentry bundled
LicenseMITMITElastic License 2.0

How it works

punk0 runs on your machine and serves one page at 127.0.0.1:7777. Everything hangs off three things.

  1. Projects

    A repository you add with punk0 ~/code/app. A second punk0 hands its folder to the one already running.

  2. Workspaces

    The project folder, a git worktree on a branch of its own, or a scratch folder for work with no repository.

  3. Tabs

    Your shell in a terminal, or an agent started in it: Claude Code, Codex, OpenCode, Antigravity or Cursor Agent.

~/code
$ punk0 ~/code/punk0
punk0 0.1.0
  agents      http://127.0.0.1:7777/?ws=08ef519525e5eea7
  project     punk0 / main  ~/code/punk0

ctrl-c to stop

22:15  ▶ claude   punk0 / ring-len
22:20  ▶ shell    punk0 / windows-conpty
22:20  ■ editor   punk0 / main  idle 5 min

What punk0 adds

Everything here is punk0's own layer on top of px0.

See which agent needs you

Claude Code tabs report working, needs you and idle. The counts sit in the status bar and the page title.

Find any chat again

Chats reads what Claude Code, Codex and OpenCode keep on disk, grouped by workspace, and resumes any conversation in a tab.

Tabs outlive the page

Reload and every tab reattaches with its recent output. Restart punk0 and a Claude Code tab resumes its own conversation.

A terminal idle for 30 minutes is stopped, never a Claude tab that is working or waiting. A folder's editor stops after 5 idle minutes and starts again on the next request.

See what each tab uses

The resource panel lists CPU and memory for every workspace, its editor, its language servers and each terminal, down to the agent inside it.

The agent beside your code

Every folder opens in a full editor with the workspace's terminals on its right. Select lines and hand them to an agent without copying anything.

Ctrl/Cmd+K Quick Edit
Runs your coding agent once on the selected lines, in an empty temporary folder, and shows the result as a diff. Accept writes it only if those lines still read as they did.
Alt+L Add to Chat
Pastes @path lines a-b and the code into the agent in the active tab, without pressing Enter.
Alt+C Copy Ref
Copies path:start-end to paste into any chat.

Built on px0

punk0 is a fork of px0 by Arpit Bhayani. It keeps px0's editor, search, git and pull request review, and adds the agents layer above them. Everything in this section is px0's work.

Fuzzy everything

Files with Ctrl/Cmd+P, search in files with Ctrl/Cmd+Shift+F, symbols with Ctrl/Cmd+Shift+O.

Pull request review

punk0 <pr-url> checks the PR out as a worktree of your clone and diffs it against the merge base. GitHub, GitLab, Gitea and Bitbucket; comments, verdicts and merging with a token, read-only without one. Batch Apply hands the comments to your agent.

Git without leaving the page

Status in the tree, side-by-side diffs that highlight the change inside each line, hunk staging and a commit graph.

Language servers when you want them

Definitions, references and hover through 14 servers. Off until you turn them on for a folder; idle servers stop after 15 minutes.

  • gopls
  • rust-analyzer
  • pyright
  • pylsp
  • ruff
  • tsc
  • typescript-language-server
  • clangd
  • zls
  • lua-language-server
  • solargraph
  • jdtls
  • omnisharp
  • texlab

Highlighting for 297 languages

Chroma highlights on the server, a 1,000-line window at a time, so a long file opens as fast as a short one.

  • go
  • rust
  • typescript
  • python
  • c
  • zig
  • java
  • kotlin
  • swift
  • elixir
  • sql
  • nix
  • bash

More than code

Markdown with Mermaid diagrams, CSV and TSV as tables, images, editing in the browser with Ctrl/Cmd+E, Vim keys and 14 themes. Try the themes on the first view.

Speed, measured by px0

RepositoryFilesIndexFuzzy findFull scanOpen largest fileMemoryPeak memory
django7,01439 ms1.3 ms26.8 ms166.8 ms20 MB29 MB
flask2351 ms0.8 ms2.3 msn/a16 MB18 MB
kubernetes25,926150 ms13.5 ms84.6 ms199.0 ms30 MB44 MB
linux95,710370 ms6.0 ms451.8 ms26.7 ms55 MB73 MB
react7,17852 ms2.7 ms32.2 ms57.7 ms21 MB28 MB
redis1,85513 ms1.0 ms18.2 ms80.8 ms17 MB27 MB
typescript66,533566 ms6.2 ms150.3 ms40.9 ms69 MB105 MB

Measured by px0 on Linux x86_64 with language servers off; not re-measured for punk0. Method and macOS numbers in px0's BENCHMARKS.md.

Build from source

The installer fetches the latest release for your system. To build it yourself instead, you need Go 1.25 or later and Bun.

Each release ships binaries for Linux, macOS, Windows and the BSDs, with a checksums.txt to check them against.

Then read

Build
git clone https://github.com/Neautrino/punk0.git
cd punk0
make build
install -d ~/.local/bin && install punk0 ~/.local/bin/
Run
# the agents page, on http://127.0.0.1:7777
punk0

# add a folder as a project
punk0 ~/code/app

# open a file's editor at a line
punk0 main.go:42

# review a pull request
punk0 https://github.com/owner/repo/pull/123