nsq · open source0.2.1 · before 1.0

All your agents. One terminal.You only step in when one needs you.

nsq runs Claude Code, Codex, OpenCode or any command side by side as a grid of live terminals, keeps them working after you close it, and calls you — with the question itself — the moment one is stuck. Go ahead, drive the one below.

  • MIT licensed
  • No account, no telemetry
  • Windows, macOS, Linux, SSH
A playable replica of the nsq dashboard with sample data. The workspace shop runs four agents: api-fix on Claude Code, reviewer on Codex, docs on OpenCode and dev, a plain npm run dev. Focus the replica and use the arrow keys to select an agent, y, a or n to answer the permission prompt of the agent that needs you, Enter to open an agent full screen and type to it, Escape or Ctrl+] to go back to the grid, i to interrupt and q to close the dashboard while the agents keep working.
It’s playable — click it, then use the keys
A replica with sample data, running in your browser. The real dashboard draws the same thing in your terminal.
Install

One npm package. One command.

nsq is the npm package neurosquad. Try it once with npx or install it for good, then type nsq: the dashboard opens and the daemon starts behind it.

Node.js 22.13 or newer · x64 and arm64 · no compiler, native parts ship prebuiltFull guide

  1. 01Try it, nothing to installRuns the latest version once.
    npx neurosquad
  2. 02Or install itPuts the nsq command on your PATH.
    npm i -g neurosquad
  3. 03Open the dashboardPress c to start your first agent.
    nsq
Prefer a package manager?These follow the npm release; Homebrew may take a day. Whichever you pick, nsq then updates itself the same way.
Homebrew
brew install glmn-ai/neurosquad/neurosquad-cli
Install script (uses your npm, no admin rights)
curl -fsSL https://raw.githubusercontent.com/glmn-ai/neurosquad-cli/main/packaging/install/install.sh | sh
What it does

Stop babysitting agents. Get called when one needs you.

Everything below is how nsq actually behaves. The numbers in the pictures are sample data.

It calls you. With the question.

Status comes from each CLI’s own hooks, not from squinting at the screen. When an agent waits, you get a notification that says what it wants — one per agent, withdrawn once it’s working again.

  • Windows, macOS and Linux, natively
  • Over SSH: the terminal’s bell and OSC 9
  • On your phone through ntfy, if you want

Your CLIs. Any model.

Claude Code, Codex and OpenCode (1.x and 2.x) with full status from their hooks — on your own logins and subscriptions.

OpenRouter built in

One key in the OS keyring, any model for any agent. Press m and search the catalogue.

Your own model servers

llama.cpp, Ollama, LM Studio, vLLM, SGLang, Unsloth Studio or any OpenAI- or Anthropic-compatible API. nsq provider add tests it, then each CLI that can speak to it gets it. Press P to manage them.

Close the terminal. Nothing stops.

A small daemon owns the terminals. Quit the dashboard, lose the SSH session, close the laptop lid on the window — the agents keep going. nsq brings it all back; nsq up even resumes their sessions after a reboot.

A worktree per agent

--worktree gives an agent its own branch and checkout, so three agents can change one repo without stepping on each other. nsq diff shows what each one did.

What each agent cost

nsq cost reads the tokens from each CLI’s own logs. A model without a known price says “no price”. Never a fake $0.

Talk instead of typing

Press v and speak. Recognised on your machine, pasted into the agent — and never sent. You read it, you press Enter.

Answer from your phoneExperimental

Pair with a QR code and answer from the couch — or from anywhere with --online, over HTTPS through a Cloudflare tunnel. Off by default; a phone can answer, send a prompt and interrupt — not start agents, type raw keys or read files.

Your configs stay yours

nsq never writes ~/.claude, ~/.codex or opencode.json. Hooks, settings and keys go to each agent in its own layer: flags, environment, nsq’s own folder.

The real thing

Not a mock-up: a recording.

This is nsq in a real terminal, recorded by its end-to-end test on macOS: real Claude Code, Codex and OpenCode, talking to a scripted test model so the run is the same every time.

nsq 0.1.0, recorded in CI. The agents’ answers come from the test model, which is why they are so boring.

Keyboard first

A handful of keys does the whole job.

The mouse works too: click selects, double-click opens.

↑↓←→Select an agent (h j k l too; Tab walks every workspace)
Hover or focus a key
And from any shell, scriptable
  • # Start an agent on its own branch
    $ nsq run claude "fix the flaky test" --worktree
  • # Run any command as an agent
    $ nsq run -- npm run dev
  • # Agents and their status
    $ nsq ls --json
  • # Answer a permission prompt
    $ nsq answer reviewer yes
  • # Queue a prompt for the end of the turn
    $ nsq send api-fix "now add a test" --when-done
  • # What each agent spent
    $ nsq cost --since 7d
Under the hood

Nine live terminals. One millisecond a frame.

Live terminals are grids of cells, so the dashboard draws cells — and sends the terminal only the ones that changed. We tried the alternatives first and measured.

One frame at most every ~33 ms, and only when something changed. Animations pause when an agent is open full screen or the terminal loses focus.

nsq · Own cell diff
Frame time, avg / p951.2 / 1.9 msCPU in 8 s0.39 sMemory84 MBBytes to the terminal1.4 MB
OpenTUI (@opentui/core 0.5)
Frame time, avg / p956.1 / 10.2 msCPU in 8 s1.9 sMemory90 MBBytes to the terminal4.2 MB
Ink 8 (React)
Frame time, avg / p9539 / 71 msCPU in 8 s8.5 sMemory267 MBBytes to the terminal1.7 MB
Windows 10, ConPTY (what Windows Terminal uses), 9 live tiles fed with agent-like output, 200 × 50 cells, 30 fps, 8 seconds.Method and numbers: docs/tui.md
Open source

MIT. Read every line.

The CLI and the integration core it shares with the NeuroSquad desktop app are on GitHub under the MIT license. See exactly how each CLI is started, file an issue, send a pull request.

CLI names and logos are trademarks of their owners, shown only to say which CLI an agent runs.

No accountNothing to sign up for, nothing to sign in to. Everything works without us.
No telemetrynsq reports usage nowhere. Its state lives in ~/.neurosquad-cli on your machine.
Secrets stay out of filesKeys live in the OS keyring and go only into the environment of the agent that needs them — never arguments, logs or files.
nsq or the desktop app

Same idea, two places to work.

Both run the CLIs you already use and tell you when an agent needs you. Pick by where you spend your day.

nsqFor the terminal
  • Runs wherever Node.js runs: Windows, macOS, Linux, a server over SSH
  • Claude Code, Codex, OpenCode and any command
  • Open source (MIT), no account, no telemetry
  • A keyboard-first grid of live terminals
Install nsq
NeuroSquad desktopFor a whole squad
  • 22 agent CLIs as cards with live terminals on a canvas
  • Agents connected by arrows: tools, MCP servers, skills and plugins
  • Notes, a browser, templates, workspace recording and remote access from your phone
  • Windows and macOS, with a free NeuroSquad account
Download the desktop app

They share one integration core, so status works the same way in both.

Questions

What is nsq?

The open-source terminal version of NeuroSquad. It starts several AI coding CLIs, shows them as a grid of live terminals, reads their status from the CLIs’ own hooks, and calls you with the question when one of them needs you.

Is it really free? Do I need an account?

Yes, it is free and MIT licensed. No account is needed and nsq sends no telemetry. The agents run on your own CLI subscriptions and API keys.

Which CLIs does it support?

Claude Code, Codex and OpenCode (1.x and 2.x) with full status from their hooks. Any other command runs with nsq run -- <command>: it shows working while it prints and finished when it goes quiet, but it never claims to need you.

What happens when I close the terminal?

Nothing stops. The agents live in a background daemon; open nsq again and they are all there. nsq down stops the daemon and its agents, and nsq up brings them back, resuming their sessions.

Does it change my Claude Code or Codex settings?

No. nsq never writes your own configuration. Hooks and settings are passed per agent through flags, environment variables and files in nsq’s own folder.

Does it work over SSH and on Windows?

Yes. nsq runs in any terminal with Node.js 22.13 or newer: Windows (native, through ConPTY), macOS and Linux, x64 and arm64. Over SSH, notifications fall back to the terminal’s bell and its own notification codes.

How is the phone part secured?

It is off by default and experimental. nsq phone on listens on this machine only; --lan opens it to your local network, and --online to the internet through a Cloudflare quick tunnel (HTTPS only, an explicit opt-in with a warning, wrong tokens locked out, the address changes on every start). Pairing uses a token in the QR code, and nsq phone rotate cuts off every paired phone. A phone can answer, send a prompt and interrupt, but cannot start agents, type arbitrary keys or read files.

How does nsq update?

By itself, from version 0.2.0. Every six hours it asks the npm registry for the newest release (only the package’s public metadata, nothing about you), installs it in the background the way you installed nsq, and switches over when no agent is busy — only after the new version has started once in a test run, so a broken release leaves the old one running. The agents resume their sessions. nsq config set autoUpdate false or NSQ_NO_UPDATE=1 turns it off; nsq update does it by hand.

Can the agents run on my own models?

Yes. Besides OpenRouter, nsq provider add <name> --url <address> adds your own server — llama.cpp, Ollama, LM Studio, vLLM, SGLang, Unsloth Studio or any OpenAI- or Anthropic-compatible API. nsq tests it first and offers it to each CLI that can speak its API; then nsq run claude --provider <name> --model <id>, or P in the dashboard. A key, if the server needs one, stays in the OS keyring. nsq cannot know what your server charges, so its requests show “no price”, never $0.

Can I reach my agents away from home?

Yes, if you choose to. nsq phone on --online opens the phone page from anywhere through a Cloudflare quick tunnel: no account, nothing opened on your router, HTTPS. It is experimental, you turn it on explicitly each time, and anyone with the link and its token could control your agents, so treat it like a password. With a Cloudflare account you can keep one address with a named tunnel.

It is not 1.0 yet. How rough is it?

Every release is checked in CI on Windows, macOS and Linux from the packed npm package, but commands, keys and config may still change before 1.0. If something breaks, an issue on GitHub is the fastest way to get it fixed.

How does nsq relate to the NeuroSquad desktop app?

They share the integration core. The desktop app adds the canvas, cards, arrows between agents and many more CLIs; nsq keeps to the terminal. You can use both.

Start a squad in your terminal.

One command, two agents, and your attention back.

npx neurosquad
Prefer a canvas? The desktop app