Skip to content
Automation
Skill

/add-clidash

Add clidash — a zero-dependency, read-only web dashboard that derives its tabs and tables at runtime from any CLI that lists resources as JSON. Ships pre-wired for NanoClaw's ncl CLI (agent groups, sessions, channels, users, roles), plus message-activity charts, a log tail, and

From plugin
nanoclaw
31k64 skills

Claude Code

$ npx -y skills add nanocoai/nanoclaw --skill add-clidash --agent claude-code

SKILL.md

add-clidash.SKILL.md
name: add-clidash
description: Add clidash — a zero-dependency, read-only web dashboard that derives its tabs and tables at runtime from any CLI that lists resources as JSON. Ships pre-wired for NanoClaw's ncl CLI (agent groups, sessions, channels, users, roles), plus message-activity charts, a log tail, and a read-only file viewer for group skills/CLAUDE.md/profiles.

/add-clidash — CLI-derived read-only dashboard

clidash is a small, read-only web dashboard. You point it at any CLI that can list resources as JSON (NanoClaw's `ncl`, `docker`, `kubectl`, …) and it builds the dashboard at runtime: one tab per resource, a generic table over whatever columns the rows have. A new `ncl` resource becomes a new tab and a new column becomes a new table column with **zero code changes**.

It ships pre-wired for NanoClaw's `ncl` CLI and adds three NanoClaw-aware panels driven entirely by config:

  • **Agents overview** — status cards joining groups + sessions + messaging

groups + wirings (green <15m / amber <2h / red older).

  • **Activity** — per-session inbound/outbound message totals and a daily series,

read directly from the session DBs (`ncl` has no messages resource).

  • **Logs** — last N lines of allowlisted host log files.
  • **Files** — a read-only viewer for group skills, `CLAUDE.md`, and profiles.

Why it's safe

clidash is **read-only by construction**: the server can only `execFile` the argv templates in its config. `{resource}` is the sole substitution and is allowlist-validated against the discovered/static resource set before exec — never a shell, no free-form input reaches argv. There is no auth; **the network is the auth boundary** — it binds `127.0.0.1` by default. Only ever bind a private interface (e.g. a tailnet IP), never a public one.

It's distinct from `/add-dashboard` (which pushes JSON snapshots to a separate `@nanoco/nanoclaw-dashboard` npm package): clidash has **zero dependencies**, no build step, no push pipeline, and no edits to NanoClaw source — it just reads `ncl` and the session DBs.

Steps

1. Copy the tool into place

clidash is fully self-contained — copy the whole directory in:

`tools/` is not a standard NanoClaw directory and `cp -R` won't create it, so make it first:

mkdir -p tools
cp -R .claude/skills/add-clidash/add/tools/clidash tools/clidash

That is the only file change this skill makes. Nothing in NanoClaw `src/` is touched, no dependency is added.

2. Create the config

The example config is pre-wired for NanoClaw with paths relative to the repo root, so it works as-is when you run clidash from `tools/clidash/`:

cd tools/clidash
cp clidash.config.example.json clidash.config.json

`clidash.config.json` is your local config — add it to `.gitignore` if you don't want to commit install-specific paths:

echo 'tools/clidash/clidash.config.json' >> ../../.gitignore

The example assumes `ncl` is built at `bin/ncl`. If `bin/ncl` doesn't exist, build it first (`pnpm run build`) or point `clis.ncl.bin` at the right path.

3. Test

Tests use a stub CLI — no real `ncl` or `docker` needed:

npm test

All tests should pass (Node ≥ 22.5, `node:test`, zero dependencies).

4. Run and verify

node server.js          # serves http://127.0.0.1:4690

In another shell, confirm it's live and that `ncl` discovery worked:

curl -s http://127.0.0.1:4690/api/clis | head -c 400      # CLIs + discovered resources
curl -s http://127.0.0.1:4690/api/r/ncl/groups | head -c 400   # a real resource table

Then open `http://127.0.0.1:4690/` in a browser. You should see the Agents overview plus a tab per `ncl` resource.

5. (Optional) Run as a service

clidash binds `127.0.0.1` by default. To reach it from other devices, bind a private (e.g. tailnet) IP via the `BIND` env var or `bind` in config — never a public interface.

# ~/.config/systemd/user/clidash.service   (Linux)
[Unit]
Description=clidash read-only CLI dashboard

[Service]
WorkingDirectory=%h/nanoclaw/tools/clidash
ExecStart=/usr/bin/node %h/nanoclaw/tools/clidash/server.js
Environment=BIND=127.0.0.1
Restart=on-failure

[Install]
WantedBy=default.target
systemctl --user enable --now clidash

On macOS, wrap `node server.js` (with `WorkingDirectory` = `tools/clidash`) in a launchd plist the same way the main NanoClaw service is configured.

Configuration reference

`clidash.config.json` keys (see `tools/clidash/README.md` and `clidash.config.example.json` for the full shape):

| Key | Purpose | |-----|---------| | `port`, `bind`, `refreshSeconds` | server bind + UI auto-refresh cadence | | `clis.<name>.bin` / `cwd` / `env` | how to invoke the CLI (`bin` is relative to `cwd`) | | `clis.<name>.discover` or `resources` | runtime discovery (`ncl help`) vs a static resource list | | `clis.<name>.list` | argv template; `{resource}` is the only substitution | | `clis.<name>.output` | `json` or `jsonlines` (docker/kubectl style) | | `clis.<name>.unwrap` | dot-path into a response envelope (e.g. `data`) | | `clis.<name>.enrich`/`badges`/`summary` | table decorations (ID→name joins, status colors, summary cards) | | `activity` | `sessionsRoot` + `days` for the message-activity charts | | `logs` | `dir`, `tailLines`, and an allowlist of `files` to tail | | `docs` | file viewer: `root`, a `deny` glob list, and `collections` of glob patterns |

Adding a second CLI is config-only — e.g. `docker` is included as a `jsonlines` example. View plugins (`views/<cli>-<view>.js`) are the only per-CLI code and are optional.

Troubleshooting

  • **`ENOENT` / config not found** — run from `tools/clidash/` and make sure you

copied `clidash.config.example.json` to `clidash.config.json` (step 2), or set `CLIDASH_CONFIG=/abs/path.json`.

  • **No `ncl` resources / discovery empty** — `bin/ncl` isn't built or the path

is wrong. Build it (`pnpm run build`) or fix `clis.ncl.bin`.

  • **docker tab errors** — the docker dae
Read more
@nanocoai
Ships withnanoclaw

A lightweight alternative to OpenClaw that runs in containers for security. Connects to WhatsApp, Telegram, Slack, Discord, Gmail and other messaging apps,, has memory, scheduled jobs, and runs directly on Anthropic's Agents SDK

Stars on GitHub

Momentum

stars in total
31.1k
Star history of nanocoai/nanoclaw on GitHub, a chart by star-history.com

Other skills on nanoclaw.

add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill
add-atomic-chat-tool

add-atomic-chat-tool

Add Atomic Chat MCP server so the container agent can call local models served by the Atomic Chat desktop app via its…

@nanocoai@nanocoaiInstall Skill
add-codex

add-codex

Use Codex (OpenAI's codex app-server) as a full agent provider — planning, tool orchestration, MCP tools, server-side history,…

@nanocoai@nanocoaiInstall Skill
add-cursor

add-cursor

Use Cursor (local Agent SDK) as a full agent provider — planning, tool orchestration, MCP tools, session resume — alongside or…

@nanocoai@nanocoaiInstall Skill
add-dashboard

add-dashboard

Add a monitoring dashboard to NanoClaw. Installs @nanoco/nanoclaw-dashboard and a pusher that sends periodic JSON snapshots.

@nanocoai@nanocoaiInstall Skill

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n11d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
opencli-adapter-author

opencli-adapter-author

Build or improve an OpenCLI JS adapter using observed site behavior, existing adapters and browser API evidence. For ad-hoc…

opencli3d31k
@jackwener@jackwenerInstall Skill

Questions about add-clidash.

Which coding agents can use add-clidash?
add-clidash installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.