CLI Command Reference
All OLAV features are accessible via the command line.
Feature Claims
| ID |
Claim |
Status |
| C-L2-01 |
olav version |
✅ v0.10.0 |
| C-L2-02 |
olav list |
✅ v0.10.0 |
| C-L2-10 |
olav export claude-plugin |
✅ v0.10.0 |
| C-L2-13 |
olav init |
✅ v0.10.0 |
| C-L2-27 |
olav reset --agent |
✅ v0.10.0 |
| C-L2-14 |
TUI interactive mode |
✅ v0.10.0 |
Basic Usage
olav [options] [command] [query]
Global Options
| Option |
Short |
Default |
Description |
--agent NAME |
-a |
core |
Specify which Agent to use |
--auto-approve |
|
off |
Automatically approve all tool calls (skip confirmation) |
--dangerously-skip-permissions |
|
off |
Skip permission checks (development only) |
--sandbox MODE |
|
none |
Sandbox mode: none (local) / modal / daytona / runloop (remote) |
--verbose |
-v |
off |
Show verbose output (for debugging) |
--no-splash |
|
off |
Skip startup banner |
--session ID |
|
|
Resume a previous session |
--version |
-V |
|
Show version number |
Command List
Basic Commands
| Command |
Description |
olav "your question" |
Natural language query (using the default Agent) |
olav --agent <name> "..." |
Query with a specific Agent (v0.18.1 top-level: core / audit / netops / services) |
olav |
Launch the interactive terminal (TUI) |
olav version |
Show the platform version |
olav list |
List all available Agents |
olav init |
Initialize an OLAV project in the current directory |
Workspace Management
| Command |
Description |
olav workspace list |
List all workspaces (* marks the active one) |
olav workspace use <name> |
Switch the active workspace |
olav workspace status |
Show workspace status |
Agent / Skill Management
| Command |
Description |
olav agent install <path\|URL> |
Install an agent extension package (workspace + tools) from a local directory, wheel, or Git repository |
olav agent install <path> --merge-into <ws> |
Append tools to an existing workspace instead of registering a new agent |
olav skills list |
List installed skills (skills are capability bundles inside an agent) |
olav skills info <name> |
View skill details (version, source, install time) |
v0.20.3 command rename
olav skill install <path> (singular skill) was removed in v0.20.3;
use olav agent install <path> instead. v0.21.0-rc4 ships a
backward-compatibility shim: running the old command prints a yellow
warning and forwards to the new one, so behaviour is identical. The
plural olav skills verb (managing the skill catalogue) is a
separate command and is unaffected.
Migration:
# Old (v0.19):
olav skill install /path/to/olav-netops/
# New (v0.20.3+):
olav agent install /path/to/olav-netops/
# Both do the same: auto `pip install` the package's dependencies,
# deploy its workspaces, and rebuild the router index
# (no separate `olav refresh` needed).
Service Registry
| Command |
Description |
olav registry register <name> |
Register an external service (auto-discovers OpenAPI schema and generates tools) |
olav registry refresh <name> |
Force re-fetch the schema of a registered service |
olav registry list |
List all registered external services |
olav registry status <name> |
Check the reachability of a registered service |
Audit and Logs
| Command |
Description |
olav log list |
Operations from the last 24 hours |
olav log errors [--hours N] |
Show only error events |
olav log show <run-id> |
View full details of a specific operation |
olav log export sft\|trajectory\|atif |
Export audit data in training formats |
Background Services
| Command |
Description |
olav service web start [--port N] |
Start the Web service (default port 2280) |
olav service daemon start |
Start the Daemon accelerator service |
olav service logs start [--port N] |
Start the Syslog receiver service (default port 5514) |
olav service start --all |
Start all background services |
olav service stop --all |
Stop all background services |
olav service status |
View service status |
User Management
OLAV users are aligned to Linux system users — olav user create alice
requires pwd.getpwnam('alice') to succeed first. No parallel
identity store. Per-user encrypted tokens (sha256 hash + salt
in users.duckdb, plaintext shown once at create) authenticate
against the web API.
| Command |
Description |
olav user create <name> [--role admin\|user\|readonly] |
Issue token for an existing Linux user. --no-verify to skip the getpwnam check (container deployments). |
olav user list |
Tabular roster of OLAV-registered users |
olav user token <name> |
Rotate + print a fresh token (revokes the old hash) |
olav user revoke <name> |
Disable the user without deleting the row |
Legacy verbose form (olav admin add-user / list-users / rotate-token
/ revoke-token) is still supported and dispatched to the same
implementation.
Knowledge Base Management
| Command |
Description |
olav kb import-guides [<dir>] |
Prime every *.guide.yaml under a workspace into LanceDB (idempotent; orphan-prune removes rows whose source YAML was deleted) |
olav kb list-guides [--tier vendor\|platform\|team\|user] [--agent <name>] |
Tabular view of active guides + their source_tier |
olav kb show <intent> [--agent <name>] |
Print the YAML source (use for promotion: copy → git PR → merge → re-prime) |
olav kb remove <intent> --reason "<text>" [--agent <name>] [--keep-yaml] |
Tombstone the YAML (<intent>.guide.yaml.removed) + delete LanceDB row + drop a kb_audit/<ts>_remove_<intent>.yaml row. --reason required (escape: OLAV_KB_REMOVE_ALLOW_NO_REASON=1) |
olav kb status |
Knowledge store statistics |
olav kb export [--dir <path>] |
Export vault to Obsidian markdown |
olav kb search <query> |
Search the unified knowledge store |
Schema Evolution
| Command |
Description |
olav config evolve --list |
View pending schema evolution proposals |
olav config evolve --approve <id> |
Approve and apply a schema evolution |
Other
| Command |
Description |
olav export claude-plugin |
Export Claude plugin artifacts |
olav reset --agent <name> |
Reset an Agent's conversation history |
Diagnostic & Discovery Commands
Round 25 (ARCH-12), Round 45 (ARCH-11 explainability), and Round 47
(ARCH-13) landed three user-level shortcuts that talk to the data
surface without running the agent loop.
| Command |
Description |
olav catalog |
List the data-model topics (Device Inventory / Routing & BGP / Topology / …). |
olav catalog <topic> |
Drill into a topic: lists the underlying tables + example queries. |
olav catalog describe <table> |
Full schema for a table — columns, recipe mappings, samples. |
olav explain "<token>" |
Resolve a citation token from an audit report (e.g. [src: netops.parsed_outputs#snap_a; device=R1; row=4]) back to the raw DuckDB row(s). Read-only. |
olav diff <snap1> <snap2> |
Cross-snapshot diff aggregator over parsed_outputs / topology_links / raw_output_store / oc_outputs. Flags: --table, --device, --max-rows, --json. |
Examples:
# What can I query about BGP?
olav catalog "Routing & BGP"
olav catalog describe netops.parsed_outputs
# Verify an audit finding's source row
olav explain "[src: netops.parsed_outputs#snap_20260418_0201; device=R1; row=4]"
# What changed between two snapshots?
olav diff snap_20260418_0100 latest --device R1 --max-rows 10
olav diff snap_a snap_b --table parsed_outputs --json
All three commands are auth-gated but read-only; they don't invoke an
LLM or modify state.
Interactive Mode (TUI)
Run olav without a query argument to launch the interactive terminal:
olav # Use the default Agent (core)
olav --agent audit # Use a specific Agent (e.g. audit / netops / services)
olav --no-splash # Skip the startup banner
olav --session <id> # Resume a previous session
Slash Commands in Interactive Mode
Built-in CLI verbs
| Command |
Description |
/help |
Show the list of available commands |
/clear |
Reset the conversation and clear the screen |
/model <name> |
Temporarily switch the LLM model within the session (does not modify config files) |
/trace-review |
Analyze failures from the last 7 days and automatically extract lessons learned into memory |
/quit /exit /q |
Exit interactive mode |
Agent-scoped slash commands
These commands are deterministic Python wrappers shipped by specific
agents. Invoke as olav --agent <name> "/<command>" or via
/<command> inside an interactive session running that agent.
| Slash |
Agent |
Description |
/netops_init |
netops |
Full discovery pipeline — SSH all devices, parse, ETL into DuckDB, build per-command auto-views |
/export_netbox_csv [--filename X] [--tenant T] |
netops |
Export netops.devices to a NetBox-import-compatible CSV under exports/. See the connect-a-service guide for the round-trip workflow. |
/import_netbox_csv [--csv X] [--report Y] [--write --endpoint URL --token TOK] |
services |
Validate (default) or push (with --write) a NetBox-shaped CSV. Idempotent 5-step lookup-or-create chain. Drops a kb_audit/<ts>_netbox_push.yaml row per write call. |
Special Syntax in Interactive Mode
| Syntax |
Description |
@file.txt |
Inject file contents into the current prompt |
!command |
Execute a shell command directly (bypassing the Agent) |
Comparison of the Three Interfaces
| Interface |
How to Start |
Best For |
| CLI |
olav "query" |
Script integration, one-off queries, automation pipelines |
| TUI |
olav (no arguments) |
Multi-turn conversations, exploratory analysis, debugging |
| Web UI |
olav service web start → http://localhost:2280 |
Browser access, team sharing |