State detection
Lifecycle events map to working, blocked, idle, done, and error in real time.
OpenCode × VSCodium
Nerdr watches every OpenCode agent in your VSCodium terminals, shows
each one's state at a glance, and rings a bell when one blocks — or
when a build/plan agent finishes.
Everything you need to supervise multiple agents without babysitting terminals.
Lifecycle events map to working, blocked, idle, done, and error in real time.
A tone fires when an agent blocks or errors. Optionally ring when build/plan finishes, with a per-agent cooldown.
The roster lives in both the left activity bar and the bottom panel, sorted attention-first.
Click an agent, or run Focus Agent Terminal, and Nerdr reveals the terminal hosting it.
Agents are named after the directory you started them in. Duplicates get a session-slug suffix.
State travels over a loopback socket with a per-run token. Nothing leaves your machine.
An OpenCode plugin streams lifecycle state; the VSCodium extension aggregates, renders, and rings.
Hooks session, tool, permission, and question events, then reports state.
Bridge server, agent store, roster panel, terminal matcher, and the bell.
Start agents in your VSCodium integrated terminals, as usual.
Each agent appears with a live state and, when needed, a bell.
Click the blocked agent and answer it — no pane-by-pane hunting.
Requires Node 18+, VSCodium 1.85+, and the OpenCode CLI.
# build and package
npm install && npm run build
npm run package -w nerdr
# install the VSIX
codium --install-extension packages/extension/nerdr-0.1.1.vsix
# copy the standalone bundle
mkdir -p ~/.config/opencode/plugins
cp packages/opencode-plugin/dist/nerdr.js \
~/.config/opencode/plugins/nerdr.js
Then reload the VSCodium window and restart opencode so the plugin loads.
Sensible defaults; adjust in VSCodium settings or settings.json.
{
"nerdr.bell.enabled": true,
"nerdr.bell.states": ["blocked", "error", "done"],
"nerdr.bell.agents": ["build", "plan"],
"nerdr.bell.cooldownMs": 5000
}