add-anydoc
Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when agents need to read attached Word,…
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
$ npx -y skills add nanocoai/nanoclaw --skill add-clidash --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/add-clidashContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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.
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:
groups + wirings (green <15m / amber <2h / red older).
read directly from the session DBs (`ncl` has no messages resource).
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.
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.
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.
Tests use a stub CLI — no real `ncl` or `docker` needed:
npm test
All tests should pass (Node ≥ 22.5, `node:test`, zero dependencies).
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.
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.
`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.
copied `clidash.config.example.json` to `clidash.config.json` (step 2), or set `CLIDASH_CONFIG=/abs/path.json`.
is wrong. Build it (`pnpm run build`) or fix `clis.ncl.bin`.
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
Repo: nanocoai/nanoclaw
Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when agents need to read attached Word,…
Convert an attached Word document, presentation, spreadsheet, OpenDocument file, RTF, EPUB, CSV, or text-based PDF into local Markdown. Use when a message…
Add Atomic Chat MCP server so the container agent can call local models served by the Atomic Chat desktop app via its OpenAI-compatible API.
Use Codex (OpenAI's codex app-server) as a full agent provider — planning, tool orchestration, MCP tools, server-side history, session resume — alongside or…
Add a monitoring dashboard to NanoClaw. Installs @nanoco/nanoclaw-dashboard and a pusher that sends periodic JSON snapshots.
Add DeltaChat channel integration via @deltachat/stdio-rpc-server. Native adapter — no Chat SDK bridge. Email-based messaging with end-to-end encryption.