This repository has been archived on 2026-06-01. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
nerve/.knowledge/cli.md
T
xiaoju c8e42c838b fix(daemon): harden state persistence, ReadonlyArray triggers
1. writeState: atomic write via temp file + rename
2. readState: distinguish missing file vs corrupt JSON (warn on error)
3. executeCompute: write disk before updating memory state
4. SenseInfo.triggers: ReadonlyArray<string>
5. CLAUDE.md: added Sense State Persistence docs
6. .knowledge/: updated architecture, sense, worker-isolation,
   storage-layer, cli, coding-conventions for stateful sense

Fixes #313
2026-05-01 12:08:59 +00:00

3.1 KiB

Nerve CLI

nerve — CLI entry point for nerve workspace management.

Workspace Lifecycle

nerve init                    # scaffold a new workspace (nerve.yaml, senses/, workflows/)
nerve init --force            # reinitialize workspace even if ~/.uncaged-nerve/ exists (preserves data/)
nerve init --from <git-url>   # clone existing workspace from git repository
nerve validate                # validate nerve.yaml config
nerve dev                     # run kernel foreground (development, Ctrl+C to stop)
nerve start                   # start daemon (background)
nerve stop                    # stop daemon
nerve status                  # check daemon health (uptime, senses, workflows)
nerve daemon                  # restart daemon (stop + start)

Init Behavior

Default nerve init: Creates workspace at ~/.uncaged-nerve/. If this directory already exists and is non-empty, exits with error requiring --force flag.

Force mode nerve init --force: Reinitializes workspace even if ~/.uncaged-nerve/ exists. Preserves data/ directory (containing sense state files and logs) but overwrites all config files.

Git clone nerve init --from <url>: Clones existing repository to ~/.uncaged-nerve/. Requires empty target directory.

Sense Management

nerve create sense <name>     # scaffold a new sense (compute + initialState)
nerve sense list              # list configured senses
nerve sense trigger <name>    # manually trigger a sense compute

Workflow Management

nerve create workflow <name>  # scaffold a new workflow
nerve workflow trigger <name> --prompt "..." [--max-rounds N] [--dry-run]
nerve workflow list           # list configured workflows
nerve thread                  # list active (queued/started) workflow threads

Knowledge

nerve knowledge sync          # chunk files per knowledge.yaml, compute embeddings → knowledge.db
nerve knowledge query "text"  # search indexed knowledge (cosine similarity)
nerve knowledge query -g "text"           # global search across all indexed repos
nerve knowledge query --repo /path "text" # search specific repo

Logs & Store

nerve logs                    # view daemon logs (last 50 lines)
nerve logs -f                 # follow logs (tail -f style)
nerve logs -n 200             # last N lines
nerve store archive           # archive old log entries to JSONL

Remote

nerve remote add <name> <url> # add a remote daemon endpoint
nerve status --remote <name>  # check remote daemon health

Workspace Layout

my-agent/
  nerve.yaml                  # senses, workflows, extract config
  knowledge.yaml              # knowledge index config (optional)
  senses/
    cpu-usage/
      src/index.ts            # compute(state) + initialState export
  workflows/
    cleanup/
      src/index.ts            # workflow definition
  data/
    senses/                   # sense state JSON files (auto-generated)
    logs.db                   # log store (auto-generated)
  knowledge.db                # generated by nerve knowledge sync
  .knowledge/                 # curated knowledge cards