Documentation menu

Using the dashboard

Browser dashboard#

nid dashboard                  # open your local dashboard
nid dashboard --port 7421      # choose a port
nid dashboard --no-open        # print a one-time sign-in link
nid doctor                     # also shows the running dashboard URL

The dashboard brings all projects and agent groups into one browser window. It runs on your machine at http://127.0.0.1:7420/ by default (a free port is chosen if that port is taken). Its assets ship with nid and work offline: no CDN, external fonts, or hosted account is required. Source checkouts bundle the UI locally on first use.

Screen descriptions (text equivalents of screenshots):

  • Welcome: with no teams yet, the dashboard explains in two sentences what nid does and shows one box: What should your agents work on?
  • Overview: leads with the same goal box. Type a goal, pick a repository (recent ones are one click away as chips, or type a path) and press Start (or Ctrl+Enter). For a repository without nid.yaml the box lists the detected agents and logins and offers the team presets as chips, the best fit for your installed agents preselected; Start writes nid.yaml and starts the team. For a repository with a configuration it starts that team, and when the team already runs your text goes to its lead. Below are spending, pending requests and the teams grouped by repository, with each team's agent states, task progress and spending versus budget (billed; subscription estimates shown beside it as "est."). A filter finds teams by name, goal or repository. Advanced holds the detailed forms: Spawn agent (one agent with every option), Start from config and Set up a repo (the browser version of nid init with every option: preset, budget, goal, setup command, files to copy, overwrite).
  • Group: the goal and budget, then anything waiting for you as inline cards. A permission request reads like Claude Code's ("codex wants to run npm install x") with Allow (1), Allow for this session (2: the same command and verb, such as any npm install, or the same tool, is allowed for that agent until its session stops) and No, and tell it what to do (3, with an optional instruction sent to the agent); questions have an answer box. When the lead reports DONE, a summary card shows what changed, the diff stats per file, tasks, agents, cost and tokens, with Land, Open PR, View diff, Keep going (send a follow-up) and Dismiss. Below: sessions, task board, notes, file locks and live agent activity. Sessions show their current task, state, cost and tokens; dependency links jump to tasks. Create tasks and notes from the header, review a diff, or use Manage group to change settings, message all agents, interrupt/stop/resume, land, or remove.
  • Session: agent state, the model (what the agent reports, or the configured one, with a selector to switch it between turns), cost and token totals, a context-window meter (with the rotation count) alongside the conversation, tool activity and approvals. Expand tool details, load older events, or jump to the latest output. Send with Enter (Shift+Enter adds a line); interrupt, stop, resume or Rotate (free context, see long-running sessions) below.
  • Inbox: approvals with Allow / Allow for this session / Deny, questions awaiting an answer, and unread messages across every project. Focus an approval and press a to allow or d to deny; answer questions inline. History shows resolved approvals, answered or timed-out questions, and messages already marked read, with a group filter.

On every other page, the oldest pending request also appears as a small card in the bottom-left corner with Allow and Deny, a link to its team and Later to hide it.

Light and dark themes, responsive layouts and keyboard navigation keep the same views usable on narrow screens. State and activity update live through the daemon's event stream. Dialogs keep keyboard focus inside and close with Escape. Group removal requires typing the group's name.

Command palette and shortcuts#

Press Ctrl+K (⌘K on a Mac), or the Ctrl K button in the header, for the command palette: type a few letters to jump to a team or session, start a new goal, allow a pending request, or, inside a team, view its diff, land it, open a pull request, interrupt, stop or resume it. ↑/↓ choose, Enter runs, Escape closes.

KeysAction
Ctrl+K / ⌘KCommand palette
g then oOverview
g then iInbox
/Focus the team filter or session chat
1 2 3On a focused approval card: allow, allow for this session, deny
a / dIn the Inbox: allow or deny the focused approval
Ctrl+EnterStart the goal typed in the goal box
tSwitch theme
?Shortcut help
EscapeClose dialogs

Opening the dashboard exchanges a one-time sign-in token for an HttpOnly, SameSite=Strict cookie. The browser never receives the daemon's bearer token. The listener binds only to loopback and checks Host and Origin to reject DNS rebinding and cross-site requests. Sign in again with nid dashboard after the cookie expires. See the dashboard security and API reference.

This is the free, open-source local interface. The UI uses only the documented daemon HTTP API so the same interface can later reach machines through a hosted relay.

CLI equivalents in the dashboard (commands below omit the nid prefix):

CLI commandDashboard equivalent
nid / nid "goal"Overview goal box: goal, repository, team preset, Start.
spawnAdvanced → Spawn agent: group, agent, name, model, repository/recent repos, role, prompt, goal, policy, budget; options for yolo, shared checkout, auto-restart and worktree setup. Repeat to add agents.
init [dir]Goal box preset chips (defaults), or Advanced → Set up a repo: detection, preset, budget, goal, setup, copy list, yolo and overwrite; then Start team.
model <session> [model]Session view Model row: the model the agent reports (or the configured one, marked), with a selector of the agent's models (from nid models; a text box when the agent's list is unknown). Choosing one switches between turns and says when it applies.
rotate <session> [--mode]Session chat Rotate (uses the group's rotate.mode).
up [group] --dir --fileAdvanced → Start from config: directory, optional custom file, preview, then all groups or one selected group.
ls [group]Overview groups and each group's sessions table.
status [--json]Overview aggregate states, task counts, pending requests and spending; group details below. JSON remains available through the status RPC.
groupsOverview grouped by repository, with per-group spend versus budget.
budget <group> <usd|off>Manage group → Goal & budget; empty budget removes the cap.
group show|set <group>Goal & budget → Group options edits policy, setup, copy/link, review mode/reviewers, rate-limit thresholds and stall budget/grace/reassignment cap.
usage / limitsHeader Account usage: account windows, resets, observation ages and sources; expired windows hide their old percentage.
limits <group> / limits <session> --clearLast session reports (stopped sessions labelled stale), rate-limit badges and session Retry now.
review ls [group] / review <group> <task> approve|changes [-m notes]Review task cards → Approve or Request changes; pending review counts on the overview and author session.
notify test|config|ls [group]Manage group → Notifications: settings, effective targets, test and recent deliveries.
send <session|group>Session chat; Manage group → Message group broadcasts to all agents.
logs [target] [-f] [-n] [-v]Live group activity and session transcript; expand tool/thinking details, enable verbose/state events, and load older session events. Group activity keeps the latest 200 events.
watch [group] [-v]Group live activity with verbose toggle.
top [group]Group sessions, board and live activity; pending requests in Inbox.
attach <session>Session transcript and chat, with inline approvals; Inbox also provides Allow/Deny.
board [group] [--watch]Live group task board, notes and locks; human messages in Inbox/History.
task add [--minutes <n>]New task with title, detail, dependencies, owner and time budget.
task set [--minutes <n>]Task row Edit: title, detail, status, owner, summary and time budget (empty restores the group default).
task ls [group]Group task board, including the finished-tasks toggle.
noteAdd note, including note/decision/finding/blocker kind.
inbox [group]Inbox messages and Mark read; History → Messages includes read messages.
approvals [--all]Inbox pending approvals; History → Approvals includes allowed/denied requests.
approve <id|session> [--deny]Approval cards in the group view, the corner card, Inbox and session transcript; Allow for this session and deny-with-instruction too.
answer <id>Inbox question answer box.
questions [group] [--all]Inbox pending questions; History → Questions includes answers/timeouts and group filtering.
stop <session|group>Session chat Stop; Manage group → Stop group.
resume <session|group>Session chat Resume (optional note); Manage group → Resume group.
interrupt <session|group>Session chat Interrupt; Manage group → Interrupt group.
diff [target] [--stat]Group/session View diff (also on the DONE card and in the palette), file navigation and Summary only toggle.
land <group> [--pr] [--base] [--draft]DONE card Land / Open PR, the palette, or Manage group → Land changes; merge locally or select Open a GitHub pull request, base branch and draft.
pr checks <group> [--watch [minutes]|--stop-watch]Group Pull request panel: Check CI, Watch CI (every minute) and Stop CI watch.
rm <group> [--keep-branches]Manage group → Remove group, typed confirmation and keep-branches checkbox.
goal <group>Manage group → Goal & budget.
agents [-C dir] [--json]Spawn agent dialog: the Agent list shows built-in and custom agents for the chosen repository, marking untested and not-installed ones.
doctorHeader Daemon info shows daemon version, build, PID and connection. Installed-agent, sandbox and update probes remain terminal diagnostics.
daemon statusHeader connection indicator and Daemon info; a changed build after reconnect prompts Reload.
dashboard [--port] [--no-open]Terminal sign-in/bootstrap command; Daemon info → Sign out ends the browser session.
update [--check] [--version]Terminal-only installer/update management.
uninstall, daemon autostartTerminal-only: they change your installation and login items.
daemon run/start/stop/restart/logsTerminal-only daemon lifecycle and process diagnostics; browser cookies cannot call shutdown.
mcp, update-check (internal)Agent stdio transport and background updater; no human dashboard action.

Daemon info does not probe the network. Sign out leaves agents running. A daemon restart expires the browser cookie; run nid dashboard for a fresh sign-in link.