Skip to content

What Nightdesk is

Nightdesk is where you watch and steer a fleet of coding agents.

You run more than one agent at a time. Each is a Claude Code or Codex CLI session working in one of your repositories, and each of them is doing something right now, or waiting for you. Nightdesk is the one window that shows you all of them, and gives you the controls to launch, attach to, and restart them.

The Nightdesk window. The agent rail runs down the left: Concierge at the top with two
subagents indented beneath it, then seven agents — one starting, one working, one running a
background job, one idle, two waiting for input, and one asking permission to run a command —
with each agent’s own subagents indented under it. The center column shows the selected
agent’s session as a live terminal. The project drawer on the right shows the selected agent’s
feed: a failed test run and an idle transition. Warnings and per-account usage sit at the foot
of the rail.

The agents do the work. Nightdesk does not.

Section titled “The agents do the work. Nightdesk does not.”

Your agent harness holds the context, runs the tools, edits the files, and drives the model. Nightdesk does none of that, ever. It decides what exists and what gets started — which projects it watches, which agents are running, where, and under what name — and it shows you the result.

The difference is easy to test. Close Nightdesk and every agent keeps running, because the sessions are not its to run. Take the harness away and Nightdesk has nothing left to show.

If you build infrastructure, the precise term is a control plane, and the harness is the data plane. If you do not, the useful picture is the one in the name: a night desk, where an operator sits watching machinery that runs without them.

Watch. Every agent has a row. The row says what the agent is doing, what it is waiting on, which model it is running, and how much of its context is gone. When one needs input or asks permission to run a command, its row says so and you can see it without going looking.

Steer. Launch a session on a checkout of one of your projects, in the checkout itself or in a worktree of it. Attach to one that is already running and type into it. Restart one that has gone wrong, or to pick up a new version of the CLI. Ask Concierge, the session at the top of the rail, for the things that would otherwise be buttons: add a project, file a task, find out what happened.

Keep the receipts. The project drawer is a feed of what Nightdesk has watched happen: issues starting and closing, pull requests opening, reviews landing with their verdict, test runs passing and failing, agents changing state. It follows your selection: with an agent selected, it shows that agent’s events and any from its checkout that belong to no one agent, such as a test run; with Concierge selected, it shows the whole fleet’s. The accounts strip at the foot of the rail shows how much of each account’s usage window is gone, and when it resets.

It is not a service. There is no Nightdesk account and no Nightdesk server. It is one app on your Mac, reading what your harness writes on disk — the only things it sends anywhere are the requests it makes to GitHub and to your providers on your behalf, using your own accounts.

It is not automation. There is no scheduler, no watchdog, and nothing approves anything on your behalf. Nightdesk acts because you pressed something. The one deliberate exception is the stall nudger, which is off until you arm it and does exactly one thing when you do.

It is not a replacement for your harness or its rules. What your agents may and may not do lives in CLAUDE.md and AGENTS.md, where the agents read it. Nightdesk watches and launches; it does not overrule.