Keep working in one place.

Your coding agents and pull requests in one workspace. Plan, implement, review, and orchestrate agents in one place.

Download for macOS
npm install -g @notaharness/n10

Windows support: experimental via WSLg, install via npm.

When you’re coding

Give each task a separate checkout and tmux session. n10 manages the worktrees while you work with your choice of agent harness.

A checkout for each task

Start a branch or check out a PR. Its agent works in that worktree, separate from your main checkout.

Each branch gets its own checkout and sessionThe main checkout stays on main. A fix/cache branch diverges into a separate worktree, where a tmux session runs its agent. The pull request status attaches to that same worktree, and main is untouched.maincheckoutfix/cacheworktreetmuxPR #42

Sessions outlive the window

Quit n10 and the agents keep running in tmux. Reopen it or attach from a terminal. Closing a worktree or PR tab stops its agent.

The tmux session outlives the n10 windowAn n10 window is attached to the tmux session for fix/cache. Quitting n10 drops only the connection; the agent keeps working in the session. A terminal attaches to the same session with tmux attach, and reopening n10 reconnects to it.tmux $3fix/cachesurvives app closeQuit n10n10tmux attach

Use the TUI

Use n10 --tui with the same worktrees and sessions. Fleet, guided review, Auto-fix and whole-file diffs aren’t available in the TUI.

n10 and the TUI share one basen10 and the TUI, n10 --tui, both rest on the same worktrees and tmux sessions.worktrees / tmux sessionsn10n10 --tui

When you’re reviewing

Keep the day-to-day review in n10. Read GitHub and Azure DevOps pull requests beside the agent that can act on the feedback.

Diffs and threads

Read the diff, reply to threads and submit your review in n10. CI checks and conflicts stay beside the worktree.

Finishing a review inside n10Pull request 42 with passing checks sits beside its diff. A thread on the changed line has a reply and is resolved, and the review is submitted from the same window.reviewPR #42fix/cache → mainFilesstore.tscache.test.tschecks passedcache.tssrc/cache.tsyouResolveResolvedSubmit review

Review an agent’s draft

Ask an agent to review the PR, then edit or skip its comments before posting. n10 also supports guided walkthroughs with diagrams and links to code.

An agent's draft becomes your posted commentAn agent drafts two comments on a diff line, which n10 holds as drafts. You edit one and post it to the pull request thread, where it appears as posted by you. The other draft is skipped and stays unpublished.Drafts in n10DraftmediumlowDraftskippedEditPostPR #42Posted by youPostedby you

Comments into a plan

Collect review comments and your notes into one task for the branch’s agent. Preview the prompt before sending. Plans currently send only to local agents.

Review comments become one task for the branch's agentTwo of three review comments on the fix/cache pull request are selected and collected into a plan with your instructions. Sending it delivers one task to the agent session already running for fix/cache. The third comment stays behind.fix/cachePR #42PlanSendagent session1 task

When the next check fails

Enable Auto-fix in n10 to send failed checks and review feedback while the repository is open. If needed, n10 checks out the branch and starts an agent. Enable it again after restarting n10.

Auto-fix batches feedback and waits for a quiet terminalWith n10 open and Auto-fix on, a failed check and a review comment from pull request 42 collect in one batch, which closes after ten quiet minutes or thirty at most. It waits until the agent's terminal has been quiet for thirty seconds, then enters the session as one delivered update.waits compressedPR #42Auto-fix on10m quiet30m maxtestfailedterminal quiet ≥30sfix/cacheDelivered

When you’re coordinating agents

With the optional Orchestra skills, Claude Code or Codex can delegate tasks to other agent sessions.

An optional coordinator delegates to player sessionsA coordinator session sends tasks to two players, each in its own tmux session and worktree. One reports progress and the other asks a question. n10 lists both worktrees beside one you started yourself, which has no link to the coordinator.coordinatortmuxprogressquestionplayerfix/cachetaskplayerui/tabstaskn10fix/cachedocs/faqstarted by youstartedby youui/tabs

Delegate a task

Players work in separate tmux sessions and Git worktrees.

Follow the reports

Players report progress, questions and results to the coordinator.

Start work yourself

n10 lists their worktrees alongside the ones you start manually.

Beam

Connect to your machines without SSH

Beam makes connecting simpler than SSH: one passkey, no SSH keys, no port forwarding and no Tailscale account. Run your agents locally, or pair a machine in n10 to run a worktree, tmux session and agent there.

Machines connect to each other over WireGuard through Tailscale's infrastructure via Tailcat. Your connection information is stored encrypted by your passkey for your convenience and never reaches us unencrypted. This is verifiable by looking at outbound network requests on beam.n10.is. Read more about our security model.

Built on Tailcat fromTailscaleTailscale
Your laptop reaches your machines over WireGuardA laptop connects directly to a build box and a home server. The workstation can't be reached directly, so the connection goes through a Tailscale relay. Output from a session on the workstation flows back through the relay to the laptop's screen.

n10 is still early

There are still rough edges and breaking changes happening. Join us on GitHub if you want to develop it with us!