Skip to content

CLI overview

The netclaw CLI controls your agent: setup, configuration, diagnostics, chat and daemon lifecycle. Pick a command from the map below, or run netclaw <command> --help for the built-in help.

Terminal window
netclaw <command> [options]

Chat, sessions, status and stats are thin clients. The daemon (netclawd, the background process that owns sessions, connectors and model routing) does the work, so those commands fail when it isn’t running. status, stats and sessions print [FAIL] ... unable to reach daemon. chat -p prints [headless:error] Connection refused (127.0.0.1:5199) and [turn:failed] category=infra kind=ChannelFailure on stderr and exits 1. The Daemon column says which commands need it.

CommandWhat it doesDaemonTUI
chatInteractive terminal chatRequiredYes
chat --onboardingInteractive chat that starts the guided identity interviewRequiredYes
chat -p <text>One headless prompt, then exit. Takes --resume and --json.RequiredNo
sessionsBrowse and resume recent sessionsRequiredYes
sessions --onceList sessions without the TUI. --json implies it.RequiredNo
CommandWhat it doesDaemonTUI
initFirst-run wizard: provider, identity, posture, health checkNo (starts it)Yes
configSettings dashboard for everything init doesn’t cover. config retention sets how long logs are kept.NoYes
doctor24 configuration and connectivity checks, with --fixOptionalNo
statusDaemon health, model, connectorsRequiredNo
statsToken, session, memory and skill usageRequiredWith --tui
updateCheck for and install updatesNoNo
version, --version, -VPrint version, commit and build timeNoNo
CommandWhat it doesDaemonTUI
providerAdd, rename and remove LLM providersNoBare provider
modelAssign models to the Main, Fallback and Compaction rolesNoBare model
mcpMCP server profiles and tool permissionsOptionalmcp tools, mcp permissions
approvalsList and revoke saved grantsNoBare approvals
secretsStore encrypted credentials with secrets setNoNo
skillList, inspect and sync skills and skill sourceslist and sync need itNo
webhooksManage inbound webhook routesset and delete need itNo
reminderManage scheduled remindersRequiredui or tui
memoryProvision the embedding model and backfill memory embeddingsNoNo
CommandWhat it does
daemon start, stop, statusStart the daemon in the background, stop it, or show its process state
daemon install, uninstallInstall or remove the systemd user unit (Linux). See systemd.
daemon pairPrint a pairing code on the host machine
daemon devicesList paired devices. daemon devices revoke <name> removes one.
pair <endpoint>Pair this machine with a remote daemon, using the code from daemon pair

There is no daemon restart. The daemon restarts itself when netclaw.json changes. After a change to secrets.json or an environment variable, run netclaw daemon stop and then netclaw daemon start, or docker restart <container> in a container.

If you just ran netclaw init, run netclaw config next. Channels, search, network exposure, webhooks and skill sources live there, not in init.

Terminal window
netclaw init # provider, identity, posture, health check. Opens chat when it passes.
netclaw config # channels, search, exposure, skill sources
netclaw doctor # check everything is wired up
netclaw status # confirm the daemon is healthy

Once you’re running, First conversation walks through your first chat.

netclaw status output: overall healthy, version 0.28.2, the active model, and connector lines for Discord, Mattermost, the demo-utilities MCP server, Slack and the TUI

netclaw status is the quickest check that the daemon, model and connectors are healthy.

FlagEffect
--help, -h, helpPrint the command list. Also works after a command, as in netclaw doctor --help.
--version, -V, versionPrint the version.

There are no other global flags. Run bare netclaw and it prints the help and exits 2.

--help works after every command, including netclaw mcp add --help, and exits 0. That includes netclaw daemon --help, and a bare netclaw daemon prints the same usage and exits 0. An unknown subcommand such as netclaw daemon restart prints the usage and exits 1.

$ netclaw --version
netclaw 0.28.2 (commit 7419d84, built 2026-10-29T00:09:05Z)
CommandFlagShape
status--json or --format jsoncamelCase object
stats, stats skills--json or --format jsoncamelCase object
doctor--format jsoncamelCase object with exitCode, checks and fix
sessions--jsonPascalCase array. Includes SessionId.
chat -p--jsonOne camelCase envelope with sessionId, response, turnResponses and usage. A failed turn adds errorCategory and errorKind. The exit code is still the primary signal.
approvals list, webhooks list--jsonSee each command’s page

The sessions output is PascalCase and the others are camelCase. Check the key names before you write a jq filter.

CodeMeaning
0Success
1The command failed: bad options, validation errors, unreachable daemon or a runtime failure
2Bare netclaw or an unknown command (netclaw: 'bogus' is not a netclaw command. See 'netclaw --help'.). doctor also uses 2 for warnings only, and status uses it for a degraded daemon.

Each command’s page lists the codes scripts should care about.

Everything lives under ~/.netclaw, or $NETCLAW_HOME if you set it. See Data directory layout for the full tree.

FilePurpose
~/.netclaw/config/netclaw.jsonMain configuration
~/.netclaw/config/secrets.jsonEncrypted credentials, written by netclaw secrets set and the provider commands
~/.netclaw/client/config.jsonThe daemon endpoint a paired client uses
NETCLAW_* environment variablesHighest priority, overrides both files

The CLI and the daemon layer configuration in that order: netclaw.json, then secrets.json, then NETCLAW_* variables.

VariableEffect
NETCLAW_HOMEBase directory instead of ~/.netclaw
NETCLAW_DAEMON_ENDPOINTDaemon URL for chat, sessions, status and stats. Wins over client/config.json and the Daemon section of netclaw.json. The default is http://127.0.0.1:5199.
NETCLAW_DAEMON_PATHWhere netclaw daemon start finds the netclawd binary
NETCLAW_<Section>__<Key>Override any config key. Double underscores separate path segments, as in NETCLAW_Providers__my-anthropic__ApiKey.
CHROME_PATH, NETCLAW_PLAYWRIGHT_BROWSERWhere browser-automation detection looks for a browser

Commands that don’t open a full-screen UI check for a new release in the background and print a one-line notice if one exists. init, update, secrets, daemon, chat (including chat -p) and sessions never run the check. Run netclaw update --check to check by hand.