Commands
Complete reference for all OpenWolf CLI commands.
openwolf init
Initialize OpenWolf in the current project.
openwolf initOptions:
openwolf init # auto-detect installed agents (default)
openwolf init --agent codex opencode # wire exactly these agents
openwolf init --agent all # wire every supported agent
openwolf init --agent claude # Claude Code only, skip detectionWhat it does:
- Detects the project root (looks for
.git,package.json,Cargo.toml, etc.) - Creates
.wolf/with the template files and the durable anatomy store - Copies the lifecycle hook scripts to
.wolf/hooks/ - Registers 7 hooks in
.claude/settings.json - Auto-detects installed agents (Codex, OpenCode, Gemini CLI, Cursor) and wires each one: hook registrations, protocol blocks, or plugins as appropriate
- Installs the bundled skills (
/security-audit,/reframe) for every wired agent - Creates
.claude/rules/openwolf.mdand prepends the OpenWolf snippet toCLAUDE.md - Runs the initial anatomy scan (descriptions, token estimates, symbols)
- Populates
cerebrum.mdwith detected project name and description
If .wolf/ already exists, it reinitializes (overwrites templates, preserves learned data).
INFO
If .claude/settings.json already has hooks, OpenWolf merges its hooks in, existing hooks are not overwritten.
openwolf status
Show health, stats, and file integrity.
openwolf statusOutput:
OpenWolf Status
===============
✓ All core files present
✓ All 7 hook scripts present
✓ Agent hooks registered (claude, codex)
Token Stats:
Sessions: 12
Total reads: 87
Total writes: 34
Tokens tracked: ~45,200
Estimated savings: ~8,400 tokens
Anatomy: 79 files tracked
Daemon: running
Last heartbeat: 2 minutes agoopenwolf scan
Force a full anatomy rescan of the project.
openwolf scanScanning project...
✓ Anatomy scan complete: 79 files indexed in 42msopenwolf scan --check
Compare the current filesystem against anatomy.md without writing any changes. Exits with code 1 if the anatomy is out of date.
openwolf scan --checkUseful in CI pipelines to verify that anatomy.md has been kept in sync:
openwolf scan --check || echo "anatomy.md is out of date. Run openwolf scan"openwolf report
Print the token report: estimated usage (character-ratio heuristic) next to measured usage (summed from harness transcripts at session end), plus lifetime stats and the most recent measured sessions.
openwolf reportMeasured figures appear once sessions end under 2.0; older projects show estimates only until then.
openwolf dashboard
Open the real-time dashboard in your default browser.
openwolf dashboardIf the daemon is not running, this command automatically starts it as a background process. No PM2 required.
The dashboard opens at http://localhost:18791 and connects via WebSocket for live updates.
openwolf daemon
Manage the background daemon process.
openwolf daemon start
Start the daemon via PM2 for persistent background operation.
openwolf daemon startThe daemon handles:
- Cron tasks (anatomy rescans, memory consolidation, AI reflections)
- File watching and WebSocket broadcasting
- Dashboard HTTP server
- Health heartbeat
PM2 is optional
You do not need PM2 to use the daemon. Running openwolf dashboard starts the daemon automatically via Node's fork(). PM2 is only needed for auto-restart and boot persistence.
Windows
Run pm2-windows-startup for boot persistence.
openwolf daemon stop
Stop the running daemon. Works whether the daemon was started via PM2 or via openwolf dashboard:
openwolf daemon stop- First tries to stop via PM2
- Falls back to finding the process listening on the dashboard port and killing it directly
openwolf daemon restart
openwolf daemon restartopenwolf daemon logs
Show the last 50 lines of daemon output.
openwolf daemon logsopenwolf cron
Manage scheduled cron tasks.
openwolf cron list
Show all tasks with their schedule, status, and last run time.
openwolf cron listCron Tasks
==========
Full anatomy rescan (anatomy-rescan)
Schedule: Every 6 hours
Status: enabled
Last run: 3 hours ago
Consolidate old memory (memory-consolidation)
Schedule: Daily at 2:00 AM
Status: enabled
Last run: yesterday
Token audit report (token-audit)
Schedule: Mondays at midnight
Status: enabled
Last run: 5 days ago
Cerebrum reflection (cerebrum-reflection)
Schedule: Sundays at 3:00 AM
Status: enabled
Last run: 2 days ago
Uses: claude -p (subscription)
AI suggestions (project-suggestions)
Schedule: Mondays at 4:00 AM
Status: enabled
Last run: 5 days ago
Uses: claude -p (subscription)openwolf cron run <id>
Manually trigger a cron task by ID.
openwolf cron run anatomy-rescanopenwolf cron run project-suggestionsThe command first attempts to dispatch the task through the daemon's HTTP API. If the daemon is not running, it falls back to executing the task directly in the current process. The daemon is not required.
openwolf cron retry <id>
Remove a task from the dead letter queue so it retries on its next schedule.
openwolf cron retry cerebrum-reflectionopenwolf update
Update all registered OpenWolf projects to the latest templates.
openwolf updateOptions:
| Flag | Description |
|---|---|
--dry-run | Show what would be updated without making changes |
--project <name> | Update only a specific project (partial name match) |
--list | List all registered projects and their paths |
Before making any changes, update creates a timestamped backup of the existing .wolf/ directory. You can restore from these backups with openwolf restore.
# Preview changes without writing anything
openwolf update --dry-run
# Update a single project
openwolf update --project my-app
# See all registered projects
openwolf update --listopenwolf restore
Restore .wolf/ from a backup created by openwolf update. Run this from the project directory.
openwolf restore [backup]Without arguments, lists all available backups:
openwolf restoreWith a backup name, restores from that backup:
openwolf restore 2026-03-15T10-30-00openwolf bug search <term>
Search the bug memory for matching entries.
openwolf bug search "cannot read properties"Found 2 matching bug(s):
[bug-003] TypeError: Cannot read properties of undefined (reading 'map')
File: src/components/UserList.tsx
Root cause: API response was null when users array was expected
Fix: Added optional chaining: data?.users?.map() and fallback empty array
Tags: null-check, api-response, typescript, react
Occurrences: 3 | Last seen: 2026-03-09T14:30:00ZSearches across: error messages, root causes, fixes, tags, and file paths.
openwolf --version
Print the current OpenWolf version. The version is read from package.json at runtime.
openwolf --version1.0.0