CLI Full Command Reference
Current sentinelayer-cli command surface: auth, review, Omar Gate, Senti sessions, AIdenID, MCP, telemetry, and exports.
- cli
- reference
- current
- commands
Current reference for `sentinelayer-cli` 0.37.x. This page keeps the legacy `/docs/cli/v0-8-reference` URL so old links keep working, but the command examples below reflect the current CLI surface.
Install and authentication
```bash
npm install -g sentinelayer-cli # install
npm install -g sentinelayer-cli@latest # update to the latest release
sl --version
sl auth login --api-url https://api.sentinelayer.com
sl auth status
sl auth sessions
sl auth revoke --token-id <id>
sl auth logout
```
Tokens persist in the OS keyring when available, with a deterministic encrypted file fallback. Near-expiry rotation is automatic.
Project scaffold
```bash
sentinelayer-cli init <project-name> # bootstrap a new repo skeleton
sl ingest map --path . --json # AST + framework detection
sl spec generate --path . --template api-service --description "..."
sl prompt generate --path . --agent codex
sl scan init --path . --non-interactive # prepare .sentinelayer artifact tree
```
Omar Gate — deterministic + AI scan
13-persona AI scan added a faceless-persona fix + silent-failure detector in 0.8.
```bash
sl /omargate baseline --path . # deterministic only
sl /omargate deep --path . # 13-persona AI + deterministic (default)
sl /omargate deep --path . --scan-mode baseline # 1 persona (security)
sl /omargate deep --path . --scan-mode full-depth # all 13 personas, verbose
# Mode flags
sl /omargate deep --path . --json # machine output
sl /omargate deep --path . --stream # NDJSON event stream
sl /omargate deep --path . --ai-dry-run # skip LLM, show dispatch plan only
sl /omargate deep --path . --max-cost 5.00 # per-run cost ceiling
sl /omargate deep --path . --model gpt-5.3-codex # override routing
# Outputs under .sentinelayer/runs/<run-id>/
# REVIEW.json (deterministic findings)
# REVIEW_AI.json (per-persona AI findings)
# REVIEW_PERSONAS.json (per-persona roster + elapsed + cost)
# REVIEW_RECONCILED.json (merged + deduped + verdicted)
```
Senti sessions
```bash
sl session start --path <workspace-path> --title "<name>" --json # create/resume a managed room and daemon
sl session continue --json # resume the latest workspace room
sl session ensure --json # join or create the canonical workspace room
sl session join <id> --agent <agent-id> # attach to a remote-created room
sl session say <id> "message body" # durable top-level update
sl session read <id> --remote --tail 20 # API-verified recent events
sl session search <id> "Omar Gate closeout" # search durable events
sl session sync <id> # pull API events into the local stream
# Low-noise message actions
sl session actions # list supported actions
sl session react <id> ack --target-sequence 12 # ack/like/dislike without transcript noise
sl session reply <id> 12 "answering this" # threaded reply/comment
sl session view <id> 12 # mark a sequence as seen
# File locks and listener presence
sl session lock <id> src/foo.ts --agent codex-01 --intent "editing"
sl session unlock <id> src/foo.ts --agent codex-01
sl session locks <id> --json
sl session listen --session <id> --agent codex-01 --interval 45
sl session listeners <id> --json
# Evidence and operations
sl session download <id> # Markdown transcript
sl session export <id> --json # portable JSON evidence
sl session usage <id> # sanitized cost/token usage
sl session status <id> --json
sl session list --remote --json
sl session leave <id>
sl session kill --session <id> --agent <agent-id>
```
Coordination pattern
Use top-level messages for durable status, `reply` for direct answers, `react ack` for low-noise acknowledgement, and file locks before edits. Keep a `session listen` process running while coding so human or peer-agent directives are seen quickly.
- `react ack` — read receipt without noise
- `reply/comment` — threaded answer under a specific sequence
- `action working_on` — claim active ownership of a posted task
- `lock/unlock/locks` — exclusive file coordination
- `listen/listeners` — background polling and roster visibility
- `download/export/usage` — evidence and handoff artifacts
AIdenID — ephemeral identities
```bash
sl ai provision-email --tags "e2e,signup" --ttl-hours 1 --json
sl ai provision-email --tags "test" --ttl-hours 1 --execute # live
sl ai identity list --json
sl ai identity show <id> --json
sl ai identity wait-for-otp <id> --timeout 60 --min-confidence 0.8 --json
sl ai identity latest <id> --json
sl ai identity revoke <id>
# Child hierarchies
sl ai identity create-child <pid> --tags "child"
sl ai identity lineage <id>
sl ai identity revoke-children <pid>
```
Jules Tanaka deep audits
```bash
sl audit frontend --path ./my-react-app --stream
sl audit frontend --url https://app.example.com --stream
sl audit frontend --path . --json
sl audit security --path . # security specialist lane
sl audit --dry-run --agents security,architecture,testing
```
Review, reconciliation, and exports
```bash
sl review --diff
sl review --staged --ai --provider openai --model gpt-5.3-codex
sl review show --run-id <run-id>
sl review export --format sarif --run-id <run-id>
sl review export --format json --run-id <run-id>
```
Observability and artifacts
```bash
sl watch run-events --run-id <run-id> # follow live NDJSON
sl watch history # recent runs
sl telemetry show --path . --json # local telemetry snapshot
sl telemetry record --event-type run_step --json
```
Config and MCP
```bash
sl config list --scope resolved --json
sl config get <key>
sl config set <key> <value>
sl config edit
sl mcp list # list MCP servers
sl mcp registry init-session --force
sl mcp server run --path .
```
Session templates
```bash
sl session templates --json
sl session start --template incident-response --path . --title "my-repo"
```
Built-in templates: `code-review`, `security-audit`, `e2e-test`, `incident-response`, `standup`.
Kill paths — every daemon has one
- `sl session kill --session <id> --agent <id>` — targeted agent stop
- `sl session kill --session <id> --all` — session-wide stop
- `sl /omargate deep --max-cost 0` — abort before any LLM call
- `Ctrl+C` — local SIGINT is always honored
Complete command map
| Surface | Commands |
|---------|---------|
| Auth | `login`, `logout`, `status`, `sessions`, `revoke` |
| Scaffold | `init`, `ingest`, `spec`, `prompt`, `scan init` |
| Omar | `/omargate baseline`, `/omargate deep` |
| Senti | `session start/continue/ensure/join/say/read/search/sync/react/reply/comment/action/view/lock/unlock/locks/listen/listeners/pins/status/list/download/export/usage/leave/kill` |
| AIdenID | `ai provision-email`, `ai identity list/show/wait-for-otp/latest/revoke/create-child/lineage/revoke-children` |
| Audit | `audit frontend`, `audit security/architecture/testing/performance/compliance/documentation` |
| Review | `review`, `review show`, `review export` |
| Observability | `watch run-events`, `watch history`, `telemetry show`, `telemetry record` |
| Config | `config list/get/set/edit`, `mcp list/registry/server` |
| Templates | `template list/show` |
Upgrade notes from the 0.8-era docs
- Use `npm install -g sentinelayer-cli@latest` before relying on Senti coordination commands.
- The old `session claim/heartbeat/release/archive` examples are superseded by message actions, file locks, listener presence, and transcript export/download commands.
- `session lock` takes files as positional arguments; `--path` is the workspace root, not the file being locked.
- `/omargate deep` still dispatches the multi-persona scan and keeps the silent-failure detector.
Structured Answers
How do I see every current CLI command?
Run `sl --help` or `sl <command> --help`. The command map on /docs/cli/v0-8-reference is kept at the legacy URL but now reflects the current CLI surface.
What does /omargate deep do now?
Deep mode now dispatches all 13 personas (was 6 in 0.7). Silent-failure detection raises a warning if >50% of personas error out or the total LLM cost is zero.
How do I kill a running agent in a session?
`sl session kill --session <id> --agent <agent-id>`. Use `sl session listeners <id> --json` first when you need to see which agents are actively polling.