Argus

CLI reference

Every argus command, flag and default, and what each touches on disk.

Running argus with no arguments prints this tree. There is no --version flag; check the installed version with pip show argus-code or uv tool list.

argus
├─ start          watcher + ingester + dashboard server
├─ wipe           delete all local Argus data
├─ pricing
│  └─ refresh     pull latest model prices from LiteLLM
├─ indexing       manage transcript indexing (powers full-text search)
│  ├─ status
│  ├─ enable
│  ├─ disable
│  └─ clear
├─ claude         scaffold and manage .claude/ project setups
│  ├─ init
│  └─ template
│     ├─ list
│     └─ create
└─ daemon         background ingestion + detector daemon (argusd)
   ├─ start / stop / restart
   ├─ status
   └─ logs

Every command except pricing refresh accepts --data-dir <path> (default ~/.argus). --help works at every level. argus search still works as a hidden alias for argus indexing and prints a rename note.

argus start

argus start [-p|--port INTEGER] [--host TEXT] [--data-dir PATH] [--quiet] [--verbose]
FlagDefaultEffect
--port, -p4242Dashboard port
--host127.0.0.1Bind address. Loopback only by default
--data-dir~/.argusWhere the database lives
--quietoffLog warnings only
--verboseoffDebug logging

What it does, in order: opens or creates the database and applies migrations, checks that SQLite has FTS5, loads the newest price table, reads transcripts modified in the last 30 days, starts the file watcher and the detector scheduler, opens your browser, and serves. There is no flag to suppress the browser.

If the daemon is running, argus start logs argusd <pid> active — dashboard is read-only. and serves as a viewer only: no ingestion, no detectors, and any change you try to make in Settings is refused.

--host 0.0.0.0

Binding to all interfaces logs this warning: ⚠ WARNING: bound to all network interfaces. Anyone on your LAN can read your prompt history, transcripts, and project paths. It also switches off the loopback Host-header guard, because you are now reaching the dashboard by LAN address. There is no authentication. See Search & privacy.

Errors you may see:

  • No adapter data found. Argus expects ~/.claude/ (Claude Code) to be present at minimum. on stderr, exit code 1. Run Claude Code once first.
  • Your Python's sqlite3 was built without FTS5 (ENABLE_FTS5). … Use the official CPython distribution.
  • A port-in-use error comes straight from the web server. Pick another port with --port.

argus indexing

Transcript indexing powers full-text search and the sub-agent "Task given" text. It is off by default. The Search & privacy page explains what gets stored.

CommandWhat it does
argus indexing statusPrints Status: ENABLED or disabled, plus Indexed: 12,345 segments across 678 sessions
argus indexing enableTurns the flag on. Prints Enabled. Run argus start to backfill — historical sessions will index in the background. New sessions are indexed automatically.
argus indexing disableTurns the flag off. Existing segments stay on disk but are hidden from search
argus indexing clear [-y]Deletes every indexed segment, compacts the database, and reports the space freed. Asks Delete 12,345 indexed segments? [y/N] unless you pass -y

clear always leaves indexing disabled afterwards, even if it was on. Re-enable it if you cleared only to reclaim space. Also, every indexing command opens the database read-write, so running one on a fresh machine creates ~/.argus/argus.db.

The CLI enable only flips the flag. Historical sessions are indexed on the next argus start or argus daemon restart, 200 sessions per run. The Enable indexing button in the dashboard starts that backfill immediately instead.

argus pricing refresh

argus pricing refresh

No flags. This is the only command that ever touches the network. It fetches one file over HTTPS with a 30-second timeout:

https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json

It converts the per-token prices to dollars per million tokens, prints a summary like Added: 12, Removed: 3, Changed: 41, Unchanged: 900 followed by one line per changed model, then asks Apply? [y/N]. If nothing differs it prints Nothing to update. and stops without asking. On yes, it writes a file named after today's date into the installed package's pricing/ directory, and that file becomes the active table.

You never have to run it. A bundled table ships with each release. A model missing from the table is priced at zero until a table that knows it is loaded, at which point the affected sessions are re-priced on the next start.

On a read-only install, for example some pipx or uv tool layouts, the final write fails with a Python traceback rather than a friendly message. Refreshing twice on the same day overwrites that day's file.

argus claude init

argus claude init [PATH] [--template TEXT] [--force] [--data-dir PATH]

Copies a template into a project: CLAUDE.md to the project root, everything else under .claude/. PATH defaults to the current directory, --template to default. It is a plain file copy with no variable substitution. Each file prints as + path when created or - path (exists) when skipped, then a tree of the result and a summary like 2 created, 1 skipped.

SituationResult
File exists, no --forceSkipped
File exists, --forceOverwritten
CLAUDE.md exists, with or without --forceNever overwritten
Target resolves outside the project, for example through a symlinkSkipped

The bundled default template ships twelve files: a skeleton CLAUDE.md, .claude/settings.json with a permissions policy, two agents (code-reviewer, security-auditor), five commands (commit, deploy, fix-issue, pr, review), three rules (api-conventions, code-style, testing), and an example skill. The settings allow common npm, node and safe git commands and deny rm -rf, git push --force, git reset --hard, chmod 777, and piping curl or wget into a shell.

argus claude template

argus claude template list
argus claude template create NAME [--path PATH] [--all] [--data-dir PATH]

list prints every template name, bundled and yours, one per line. Your templates live in ~/.argus/templates/<name>/ and shadow a bundled template of the same name.

create snapshots a project's .claude/ into a new user template. The name default is reserved. It asks Include agents/? [Y/n] for each subfolder unless you pass --all. It deliberately leaves out history.jsonl, any *.local.json, and anything that looks like a credential (.env*, credentials.json, names containing secret, password, api-key, or ending in -token or _key), and tells you so:

Left out of the template (looks like credentials): .credentials.json, .env
Templates get copied into every project you scaffold, so secrets are never snapshotted.

There is no delete command. Remove a template by deleting its folder under ~/.argus/templates/.

argus wipe

argus wipe [--data-dir PATH] [-y|--yes]

Deletes the entire data directory after asking Delete C:\Users\you\.argus? [y/N]. That removes the archive of every session, the search index, alerts, the daemon's log, and every template you saved with template create.

Stop the daemon first with argus daemon stop. Nothing prevents a wipe while argusd is running, and the daemon would keep writing into a directory that no longer exists.

argus daemon

start, stop, restart, status and logs manage argusd, the background process that keeps ingesting when no dashboard is open. They have their own page: Daemon (argusd).

Verified against argus-code 0.5.2.

On this page