--- title: 'Interactive Shell Commands' description: 'Complete reference for every slash command in the OpenSRE REPL — session control, investigations, integrations, tasks, watchdogs, and more' --- Start the interactive shell with `opensre` (TTY required). Type a slash command at the prompt, or describe what you want in plain language — the action agent can route intent to the right command. Run `/help` anytime for the live command list grouped by category. In a TTY, bare `/help` opens an interactive picker; selecting a command runs it directly. When you type `/` and browse completions with the arrow keys, the full description of the highlighted command appears in the hint line above the prompt. Commands marked **elevated** may prompt for confirmation unless [trust mode](#trust-mode-and-confirmations) is on. Non-TTY sessions fail closed on elevated actions. ## How the REPL works | Input type | What happens | | --- | --- | | Slash command (`/status`) | Routed through the action agent and executed via the `slash_invoke` AgentTool | | Plain language (`verify datadog`) | Routed by the action agent to slash commands, investigations, or doc-grounded answers | | Pasted alert JSON/text | Often starts an investigation without a slash command | | Shell one-liner (`kubectl get pods`) | Executed through shell policy when the action agent selects a shell action | **TTY vs non-TTY:** The full experience (interactive menus, confirmations, onboarding wizards) requires a real terminal. Piping input or running in CI sets non-interactive mode — elevated commands are rejected unless trust mode was enabled in a prior interactive session (prefer explicit CLI commands outside the REPL for automation). **Unknown commands:** Typos suggest the closest registered command (`Did you mean /integrations?`). Run `/help` for the authoritative list — it always matches your installed OpenSRE version. **Keyboard shortcuts:** | Key | Effect | | --- | --- | | **Up/Down** | Recall persisted command history (when enabled); during `/` completion browse, preview the highlighted command description in the hint line above the prompt | | **Ctrl+C** once | Cancel in-flight streaming work or interrupt the current prompt | | **Ctrl+C** twice within 2s | Exit the REPL (prints `/resume` hint) | | **Ctrl+D** | Exit when the prompt is empty (same resume hint as `/exit`) | --- ## Quick reference ### Help and exit | Command | What it does | | --- | --- | | `/help` | List commands or show help for one command or category | | `/?` | Shortcut for `/help` | | `/exit` | Leave the interactive shell | | `/quit` | Alias for `/exit` | ### Session | Command | What it does | | --- | --- | | `/status` | Session summary — interactions, alerts, provider, effort, trust mode | | `/cost` | Token usage and LLM call count for the current session | | `/context` | Infra metadata accumulated during the session | | `/effort` | Set or show reasoning effort (`low` … `max`) | | `/trust` | Enable or disable trust mode (skip confirmation prompts) | | `/verbose` | Toggle verbose logging | | `/clear` | Clear the screen and re-render the banner | | `/compact` | Summarize older context into a replayable compaction entry | | `/sessions` | List recent REPL sessions on disk | | `/resume ` | Restore a past session's conversation context | | `/resume :` | Restore a specific session branch point | | `/new` | Start a new session file while keeping LLM context | ### Investigation | Command | What it does | | --- | --- | | `/investigate` | Run an RCA from a file path or sample template | | `/template` | Print a starter alert JSON template | | `/last` | Reprint the most recent investigation report | | `/save ` | Export the last investigation to a file **elevated** | ### Integrations, models, and tools | Command | What it does | | --- | --- | | `/health` | Integration and agent health check | | `/verify` | Verify integration connectivity (all or one service) | | `/integrations` | List, verify, show, setup, or remove integrations | | `/mcp` | List, connect, or disconnect MCP servers | | `/model` | Show or switch LLM provider and models | | `/tools` | List registered investigation and chat tools | ### Privacy and history | Command | What it does | | --- | --- | | `/history` | Show or manage persisted command history | | `/privacy` | History persistence, redaction status, and threat model | ### Tasks and background work | Command | What it does | | --- | --- | | `/tasks` | List recent and in-flight background tasks | | `/cancel ` | Cancel a running task by id **elevated** | | `/stop` | Guidance for stopping investigations and background work | ### Watchdog | Command | What it does | | --- | --- | | `/watch` | Watch a process and send Telegram threshold alarms **elevated** | | `/watches` | List active watchdog tasks with latest samples | | `/unwatch ` | Stop a watchdog task by id **elevated** | | `/watchdog` | CLI-parity wrapper for the watchdog monitor | ### Agents and alerts | Command | What it does | | --- | --- | | `/fleet` | View and manage the local AI agent fleet | | `/alerts` | Alert listener inbox status | ### CLI parity These commands delegate to the same Click CLI you would run outside the REPL. | Command | What it does | | --- | --- | | `/auth` | Log in to LLM providers, show provider auth status, or clear credentials | | `/login` | Shortcut for `/auth login` (`/login chatgpt`, `/login claude`, `/login deepseek`) | | `/onboard` | Interactive onboarding wizard | | `/remote` | Connect to and operate remote deployed agents | | `/config` | Show or edit `~/.opensre/config.yml` | | `/cron` | Manage scheduled delivery jobs | | `/messaging` | Telegram pairing and allowlist | | `/hermes` | Hermes log tailing and incident escalation | | `/guardrails` | Sensitive-information guardrail rules | | `/tests` | Browse and run inventoried tests | | `/update` | Check for updates and upgrade OpenSRE | | `/debug` | Targeted runtime diagnostics | | `/uninstall` | Remove OpenSRE and local data **elevated** | ### System | Command | What it does | | --- | --- | | `/doctor` | Full local environment diagnostic | | `/version` | OpenSRE, Python, and OS versions | ### Commands with interactive menus (TTY) Bare invocation opens a picker or submenu: | Command | Menu behavior | | --- | --- | | `/help` | Browse categories; Enter runs the selected command | | `/integrations` | list / verify / show / setup / remove | | `/mcp` | list / connect / disconnect | | `/model` | show / set / restore / toolcall | | `/investigate` | Demo alerts, templates, custom file path | | `/template` | Template type picker | | `/trust`, `/verbose` | on / off | | `/history` | show / clear / off / on / retention | | `/resume` | Numbered list of recent sessions | --- ## Using `/help` ```text /help /help /model /help investigation /help tasks /help all ``` | Form | Result | | --- | --- | | `/help` | Interactive picker in a TTY; category index otherwise | | `/help ` | Detailed usage for one command (e.g. `/help /watch`) | | `/help ` | All commands in a section (`investigation`, `session`, `tasks`, …) | | `/help all` | Full command index | Help categories mirror the REPL grouping: Quick Access, Session, Integrations/Models/Tools, Investigation, Privacy, Tasks, Agents, Alerts, CLI parity, and System. **Quick Access** duplicates frequently used commands (`/investigate`, `/integrations`, `/model`, `/health`, `/watch`, `/status`, `/help`) for faster discovery in the picker. --- ## Session commands ### `/status` Shows a snapshot of the **current** REPL session: ```text /status ``` Typical fields: | Field | Meaning | | --- | --- | | `interactions` | Count of recorded turns (chat, slash, alerts) | | `incoming alerts` | Alerts received by the local listener this session, plus age of the latest | | `last investigation` | `yes` if `/investigate` or a streamed investigation completed | | `trust mode` | `on` / `off` | | `reasoning effort` | Current `/effort` level (OpenAI/Codex only) | | `provider` | Active `LLM_PROVIDER` | | `grounding … cache` | Doc/source cache stats used for help answers | | `accumulated context` | Comma-separated keys from prior investigations (e.g. `service`, `cluster`) | Use `/status` for **session** state. Use `/health` for **integration connectivity**. ### `/cost` Shows LLM usage tracked **locally** for the current REPL session. This is not cloud-provider billing and does not read your vendor invoice. ```text /cost ``` Example output (measured + estimated mix): ```text Session cost (includes estimates) history entries 12 llm calls 8 input tokens 4,210 (measured: 1,200 · estimated: 3,010) output tokens 890 (estimated: 890) ``` | Field | Meaning | | --- | --- | | `history entries` | Lines recorded in this session's in-memory history | | `llm calls` | LLM turns counted (planner + chat + help + follow-up) | | `input tokens` / `output tokens` | Running totals for prompt and completion usage | **Measured vs estimated:** | Code path | Token source | | --- | --- | | Planner `invoke()` (action selection) | Provider usage metadata when the API returns it | | Streaming chat, help, follow-up | Estimated from character length (~4 characters per token) | When any estimate is included, the table title notes `(includes estimates)` and rows show measured vs estimated splits. **What increments the counter:** Normal LLM chat turns and planner calls. **What does not:** Non-LLM command handling such as history recall or prompt rendering. Token totals reset on `/new` or when session identity is rotated. They do **not** carry across `/resume`. See [Session History](/sessions). ### `/context` Displays key/value infra metadata collected during investigations and chat — typically `service`, `cluster`, `region`, or similar fields extracted from alert text and investigation state. ```text /context ``` Context is **inherited** across investigations in the same session (and restored by `/resume`). It is passed as overrides to subsequent `/investigate` runs so the pipeline does not re-ask for environment details you already established. ### `/effort` Set reasoning depth for **OpenAI and Codex** providers in this REPL session only. ```text /effort high /effort ``` | Level | When to use | | --- | --- | | `low` | Fast triage, simple lookups, lower token cost | | `medium` | Default balance for most incident work | | `high` | Deeper RCA when latency is acceptable | | `xhigh`, `max` | Maximum reasoning; best with newer GPT-5 or Codex models — older models may reject these levels | Bare `/effort` prints the current level, the config default for your provider/model, and supported choices. `/status` includes the same field. Other providers (Anthropic, Ollama, etc.) ignore `/effort`; the shell prints a hint suggesting `/model set openai` or `/model set codex`. Set `OPENSRE_REASONING_EFFORT` in the environment for non-interactive defaults. See [LLM providers](/llm-providers). ### `/trust` Trust mode skips execution confirmation prompts for **elevated** commands (`/save`, `/watch`, `/cancel`, `/uninstall`, integration remove, etc.). ```text /trust on /trust off /trust ``` In a TTY, bare `/trust` opens an interactive on/off menu. Trust mode is a **session preference** — it is not restored by `/resume`. During watchdog demos or repeated `/save` exports, `/trust on` avoids confirmation fatigue. Turn it off before running destructive commands you might mistype. ### `/verbose` Toggle `TRACER_VERBOSE` logging for the REPL process (deeper internal logs to stderr). ```text /verbose on /verbose off /verbose ``` ### `/clear` Clears the terminal and re-renders the OpenSRE banner. Does **not** reset session state, token usage, LLM conversation context, or accumulated infra context. ```text /clear ``` ### `/compact` Summarizes older conversation context, keeps recent messages, and persists a `compaction` entry in the session file. Future `/resume` calls replay the summary before the kept messages. ```text /compact ``` If there are not enough messages to compact, the command reports nothing to compact. OpenSRE also compacts automatically before a shell turn when the replayed branch context exceeds the runtime threshold. ### `/sessions` List up to **20** recent sessions stored on disk, newest first: ```text /sessions ``` ```text Recent sessions # Session ID Name Started Duration Turns Investigations ───────────────────────────────────────────────────────────────────────────────────────────── 1 3f8a1c2d (current) Jun 17 10:00 42m 8 2 2 9b2e4f7a why is CPU spiking on prod-api Jun 16 14:30 1h 5m 15 4 ``` | Column | Meaning | | --- | --- | | `Session ID` | First 8 characters of the UUID (enough for `/resume`) | | `Name` | Derived from the first user message or resumed session label | | `Turns` | Total chat + slash + alert turns recorded | | `Investigations` | Count of investigation turns | The current row updates **duration** live. Sessions with no name show `(current)` or `↩ ` when applicable. ### `/resume` Restore LLM conversation context and accumulated infra context from a previous session. ```text /resume 9b2e4f7a /resume 9b2e4f7a:abc123 /resume redis /resume ``` | Form | Behavior | | --- | --- | | ID prefix | Match session UUID by prefix (must be unique) | | ID + entry prefix | Replay the branch ending at the matching entry ID prefix | | Name substring | Match when ≥3 characters and exactly one session matches (e.g. `/resume redis`) | | Bare `/resume` | Interactive numbered picker of recent sessions (TTY) | **Current session:** If the ID prefix matches the session you are already in, `/resume` is a no-op — OpenSRE prints a hint to pick a previous session from `/sessions`. When you resume a **different** session, OpenSRE: 1. Switches the active session file to the target session 2. Restores `cli_agent_messages` so the assistant remembers prior turns 3. Restores `accumulated_context` keys 4. Reprints conversation history (user prompts, assistant replies, slash commands) Compaction entries are replayed as summary messages before the kept branch messages. **Restored vs not restored:** | | `/resume` | | --- | --- | | Conversation context | Yes | | Infra context keys | Yes | | Trust mode, reasoning effort | No — per-session preferences | | Token usage / `/cost` counters | No — fresh counters for the resumed session identity | | In-memory history count | Yes — turn stubs from the saved session | **Warning:** Resuming a different session replaces the current session's LLM context if messages already exist. Session replay reads the current version-2 session tree format. Older session files are ignored by `/sessions` and `/resume`. See [Session History](/sessions). ### `/new` Rotate to a **new session file** while keeping the current LLM conversation thread and accumulated context. ```text /new ``` ```text new session started — conversation context carried forward. 14 messages in context · type to continue ``` | Command | Session file | LLM context | Token counters | | --- | --- | --- | --- | | `/clear` | Same | Kept | Kept | | `/new` | New UUID | Kept | Reset | | `/resume` | Target session | Replaced with target | Reset for that session | Use `/new` after a long `/resume` so `/sessions` stays tidy without losing your place in the conversation. ### Exit paths `/exit`, `/quit`, double **Ctrl+C**, or **Ctrl+D** (empty prompt) all print: ```text Resume this session with: /resume 3f8a1c2d opensre --resume 3f8a1c2d goodbye. ``` --- ## Investigation commands Three ways to start RCA from the REPL: | Method | Example | Best for | | --- | --- | --- | | Plain language | `checkout returns 502 on prod` | Quick starts, pasted context | | Slash + file/template | `/investigate alert.json` | Repeatable runs, CI fixtures | | Slash + interactive picker | `/investigate` → choose template | Demos, first-time users | Investigations inherit [accumulated context](#context) from earlier runs in the same session. ### `/investigate` ```text /investigate alert.json /investigate generic /investigate sample:datadog /investigate ./alerts/checkout-502.json /investigate ``` | Target | Behavior | | --- | --- | | `alert.json` | Bundled demo alert file shipped with OpenSRE | | `generic`, `datadog`, `grafana`, `honeycomb`, `coralogix`, `splunk` | Built-in sample templates (runs immediately) | | `sample:` or `template:` | Explicit template prefix | | File path | Read alert text from disk (`.json`, `.md`, `.txt`) | | Bare `/investigate` | Interactive picker in a TTY | Template names win over same-named files in the working directory. Force file mode: `/investigate ./generic` **During a run:** - Output streams to the terminal like chat - **Ctrl+C** cancels and marks the task cancelled - `/tasks` shows the investigation task id and status - On completion, `last_state` is updated for `/last` and `/save` - Infra fields from the result merge into accumulated context **Errors:** Missing files, unreadable paths, and pipeline failures print actionable messages; failed runs do not update `last_state`. ### `/template` Print starter alert JSON to stdout — copy, edit, save, then `/investigate your-file.json`. ```text /template generic /template datadog /template ``` | Template | Typical use | | --- | --- | | `generic` | Minimal portable alert shape | | `datadog` | Datadog monitor-style payload | | `grafana` | Grafana alerting format | | `honeycomb` | Honeycomb trigger shape | | `coralogix` | Coralogix alert JSON | | `splunk` | Splunk notable-event style | ### `/last` Reprint the root cause and report sections from the most recent successful investigation in **this session**. ```text /last ``` Sections rendered when present: **Root Cause**, **Report** (from `problem_md` or `slack_message`). If no investigation ran yet, prints a dim empty-state message. ### `/save` Write the last investigation to disk. Requires confirmation unless trust mode is on. ```text /save report.md /save out.json /save ./rca/checkout-502.json ``` | Extension | Output | | --- | --- | | `.json` | Full investigation state object (machine-readable) | | Other (`.md`, `.txt`, …) | Markdown with `## Root Cause` and `## Report` sections | Parent directories must exist or be creatable; write failures print the underlying error. --- ## Integrations, models, and tools ### Choosing the right diagnostic command | Question | Command | | --- | --- | | Are my integrations configured and reachable? | `/verify`, `/health`, or `/integrations verify` | | Verify one integration by name? | `/verify datadog` or `/integrations verify datadog` | | Show one integration's credentials/endpoints? | `/integrations show datadog` | | Is Python/Docker/venv OK on this machine? | `/doctor` | | What integrations exist in OpenSRE generally? | Ask in plain language (docs answer) — not `/integrations list` | ### `/health` Read-only pass/fail report for the local OpenSRE agent, LLM connectivity, and each configured integration. ```text /health ``` Runs live verification against the integration store. Use before incidents to confirm Datadog/Grafana/K8s credentials still work. For integration-only checks without the full agent/LLM report, prefer `/verify`. ### `/verify` Shortcut for integration connectivity checks (same as `opensre integrations verify` / `make verify-integrations`). ```text /verify /verify datadog /verify telegram ``` | Form | Behavior | | --- | --- | | Bare `/verify` | Verify all integrations; prints status table plus `all integrations ok` or `N integration(s) need attention` | | `/verify ` | Verify one named integration | ### `/integrations` ```text /integrations /integrations list /integrations verify /integrations verify datadog /integrations show datadog /integrations setup datadog /integrations remove datadog ``` | Subcommand | Behavior | | --- | --- | | `list` (default) | Verify all configured integrations and render status table | | `verify` | Verify all integrations; prints summary line | | `verify ` | Verify one integration (same as `/verify `) | | `show ` | Verify one service and print key/value config (masked secrets) | | `setup ` | Launch setup wizard via CLI subprocess | | `remove ` | Remove from local store **elevated** | Bare `/integrations` opens an interactive menu in a TTY with service pickers for show/remove. ### `/mcp` MCP-capable integrations only (subset of the full integration catalog). ```text /mcp list /mcp connect github /mcp disconnect github ``` | Subcommand | Maps to | | --- | --- | | `list` | Table of MCP servers from verified integrations | | `connect ` | `opensre integrations setup ` | | `disconnect ` | `opensre integrations remove ` | ### `/model` Show or change LLM provider and models. Updates project `.env` (default: repository root `.env`, override with `OPENSRE_PROJECT_ENV_PATH`), `~/.opensre/opensre.json`, and resets in-process LLM caches. ```text /model show /model set openai gpt-4.1 /model set anthropic claude-sonnet-4-20250514 --toolcall-model claude-sonnet-4-20250514 /model set claude-sonnet-4-20250514 /model restore /model restore anthropic /model toolcall set gpt-4.1-mini /model ``` | Subcommand | Behavior | | --- | --- | | `show` (default) | Provider, reasoning model env var, toolcall model env var | | `set [model] [--toolcall-model ]` | Switch provider; optional per-slot models | | `set ` (no provider) | Update reasoning model for **current** provider only | | `restore [provider]` | Reset to provider's default reasoning model | | `toolcall set ` | Set investigation tool-call model for active provider | **Credential guard:** Switching to a provider without prompt-safe auth status fails fast with setup instructions. Run `/auth login ` or export the provider API key before switching. If status is stale, run `/auth verify `. **Reasoning vs toolcall model:** Reasoning model drives chat and planning; toolcall model drives investigation tool invocation when the provider exposes a separate slot (common on Anthropic/OpenAI). Interactive `/model` menu flow: pick provider → reasoning model (or default) → optional toolcall model (`keep`, `match-reasoning`, or explicit). See [LLM providers](/llm-providers). ### `/tools` List tools available to investigation and chat surfaces in this build (name, source, surfaces). ```text /tools /tools list ``` There is no global `/list` command — use domain-specific list commands (see [Natural language actions](#natural-language-actions)). --- ## Privacy and history Command **history** (up-arrow recall) is separate from **session** history (`/sessions`). Full redaction patterns and env vars: [Interactive Shell Privacy](/interactive-shell-privacy). ### `/history` ```text /history /history clear /history off /history on /history retention 1000 ``` | Subcommand | Behavior | | --- | --- | | (none) | Numbered list of persisted prompt lines | | `clear` | Delete `~/.opensre/interactive_history`; up-arrow recall empty on next launch | | `off` | Pause disk writes for this session (in-memory recall still works) | | `on` | Resume persistence | | `retention ` | Cap file entries; prunes immediately (requires redacting backend) | Bare `/history` opens an interactive menu in a TTY (presets: 100, 500, 1000, 5000 for retention). Redaction applies to the **history file**, not necessarily to what is sent to the LLM. Treat shared machines accordingly — run `/history clear` after sensitive sessions. ### `/privacy` ```text /privacy ``` Shows persistence on/off, redaction on/off, retention cap, history file path, built-in pattern count, and a short threat-model reminder (unencrypted local disk). --- ## Tasks and background work Long-running work is tracked in a per-session task registry surfaced by `/tasks`. ### Task kinds | Kind | Source | | --- | --- | | `investigation` | `/investigate`, streamed free-text investigations | | `watchdog` | `/watch` | | `synthetic_test` | `/tests synthetic`, CloudOpsBench | | `cli_command` | Other `/tests` runs, delegated CLI subprocesses | | `code_agent` | Code-agent integrations (when used) | ### Task statuses | Status | Meaning | | --- | --- | | `running` | In progress; `/cancel` eligible | | `completed` | Finished successfully | | `cancelled` | User or `/cancel` stopped it | | `failed` | Non-zero exit or pipeline error | | `pending` | Created but not yet started | ### `/tasks` ```text /tasks ``` Example: ```text Tasks id kind status started (UTC) duration detail abc12 investigation running 2026-06-17 10:01 45.2s streaming… def34 watchdog completed 2026-06-17 09:55 120.0s pid=12345 max_cpu=80% ``` Shows up to **50** recent tasks, newest first. Use the **id** column (short prefix) with `/cancel` or `/unwatch`. ### `/cancel` ```text /cancel abc12 ``` - Matches task id by **prefix** (must be unique among active/recent tasks) - Only **running** tasks accept cancellation - Investigations: signals cancel; press **Ctrl+C** if streaming continues - Watchdogs: prefer `/unwatch` for watchdog-specific messaging ### `/stop` Prints guidance only — does not kill processes: ```text /stop ``` | Situation | Action | | --- | --- | | Streaming investigation | **Ctrl+C** | | Background test or CLI task | `/tasks` → `/cancel ` | | Watchdog | `/unwatch ` or `/cancel ` | --- ## Watchdog commands Monitor a local process and send **Telegram** alarms when CPU, memory, or runtime thresholds breach. Configure Telegram credentials before use (via `/onboard` or env — see messaging docs). ### `/watch` ```text /watch 12345 --max-cpu 80 --max-rss 512M --max-runtime 30m --cooldown 5m --interval 2s --once ``` | Flag | Meaning | Default | | --- | --- | --- | | `` | Process to watch (required first arg) | — | | `--max-cpu` | CPU percent threshold (max ≈ `100 × cpu_count`) | none | | `--max-rss` | Resident memory cap (`512M`, `1G`, `1.5Gib`) | none | | `--max-runtime` | Wall-clock limit (`30s`, `5m`, `1h`) | none | | `--cooldown` | Min seconds between repeat alarms | `300` (5m) | | `--interval` | Sample period | `2s` | | `--once` | At most one alarm per threshold type | off | On start: ```text task abc12 started. ``` When a threshold fires (Telegram configured): ```text [task abc12] alarm fired: max_cpu … (telegram delivered) ``` **Typical demo workflow:** 1. `/trust on` (optional — skips `/watch` confirmation) 2. `/watch --max-cpu 80` — use a real PID (e.g. the REPL's Python process) 3. `/watches` — confirm `running` status and threshold string 4. `/unwatch abc12` — request stop; `/watches` should show `cancelled` Quoted values are supported: `/watch 12345 --max-cpu "80"`. ### `/watches` ```text /watches ``` Watchdog-only view with columns: id, pid, status, started, thresholds (from command summary), **last sample** (live CPU/RSS from progress line). ### `/unwatch` ```text /unwatch abc12 ``` Cancels a **watchdog** task by task id. Using `/cancel` also works; `/unwatch` validates the task kind. ### `/watchdog` CLI-parity syntax (subprocess to `opensre watchdog`): ```text /watchdog --pid 12345 --max-rss 1G --max-cpu 80 ``` Prefer `/watch` inside the REPL — it registers tasks for `/watches` and `/tasks` automatically. --- ## Agents and alerts Fleet coordination is documented further on [Agents](/fleet). Register discovered agents with `opensre fleet scan --register` before `/fleet trace` targets them. ### `/fleet` ```text /fleet /fleet budget /fleet budget cursor-agent 5.00 /fleet bus /fleet claim feature-x my-agent /fleet release feature-x /fleet conflicts /fleet kill 12345 /fleet kill 12345 --force /fleet trace 12345 /fleet wait 12345 --on 67890 /fleet graph ``` | Subcommand | Behavior | | --- | --- | | (none) | Dashboard: registered + discovered agents (Cursor, Claude Code, Codex, Aider, …) with pid, uptime, CPU, tokens/min, $/hr, status | | `budget` | View hourly budgets from `~/.opensre/agents.yaml` | | `budget ` | Set `hourly_budget_usd` for one agent | | `bus` | Live-tail cross-agent context bus until Ctrl+C | | `claim ` | Exclusive branch claim (agent must be in registry) | | `release ` | Release a claim | | `conflicts` | File-write conflict report between agents | | `kill [--force]` | SIGTERM → wait → SIGKILL **elevated**; refuses self-PID | | `trace ` | Live stdout tail of agent process | | `wait --on ` | Record wait dependency for graph | | `graph` | Tree of wait-on relationships | **Kill confirmation:** Without `--force`, prompts `[y/N]`. `--force` skips prompt (still elevated tier unless trust mode). ### `/alerts` ```text /alerts ``` When the alert listener is active: | Field | Meaning | | --- | --- | | `status` | `listening` | | `queue depth` | Alerts waiting for REPL consumption | | `dropped` | Alerts dropped when queue was full | | `recent` | Up to 5 latest alert names/snippets | If the listener is inactive, prints a warning. Incoming alerts also appear in `/status` as `incoming alerts`. Post alerts to your configured webhook/listener URL during setup; the REPL can start investigations from plain language. --- ## CLI parity commands These spawn `opensre …` subprocesses. Output is captured into the REPL buffer for non-interactive subcommands; wizards attach to the real TTY. ### `/onboard` ```text /onboard /onboard local_llm ``` First-run setup: LLM keys, integrations, Telegram, alert listener. Requires exclusive stdin — the REPL tears down prompt_toolkit before the wizard runs. ### `/remote` ```text /remote health /remote investigate /remote ops /remote pull /remote trigger ``` Operate remote deployed OpenSRE agents (EC2, Nitro, hosted runtime). See [Remote runtime investigation](/remote-runtime-investigation). ### `/config` ```text /config show /config set interactive.history.max_entries 1000 ``` Read/write `~/.opensre/config.yml`. Prefer env vars for secrets; use config for structured interactive-shell settings. ### `/cron` ```text /cron list /cron add /cron remove /cron run /cron logs ``` Scheduled investigation or report delivery. See [Cron](/cron). ### `/messaging` ```text /messaging pair /messaging allow /messaging revoke /messaging status ``` Telegram bot pairing and sender allowlist — required for `/watch` alarms and some delivery features. ### `/hermes` ```text /hermes watch ``` Tail Hermes logs and escalate classified incidents. See [Hermes](/hermes) and [Hermes runbook](/hermes_runbook). ### `/guardrails` ```text /guardrails audit /guardrails init /guardrails rules /guardrails test ``` | Subcommand | Purpose | | --- | --- | | `init` | Scaffold local guardrail config | | `rules` | List active masking rules | | `test` | Run sample text through rules | | `audit` | Scan recent content for sensitive patterns | Related: [Masking](/masking). ### `/tests` ```text /tests /tests list /tests run /tests synthetic /tests cloudopsbench /tests synthetic --scenario ``` | Form | Behavior | | --- | --- | | Bare `/tests` | Interactive multi-select picker; chosen tests run in background | | `list` | Print inventoried tests (captured output) | | `run`, `synthetic`, `cloudopsbench` | Background task — monitor with `/tasks` | | Flags after subcommand | Passed through to CLI | Synthetic tests can run for a long time; default timeout is generous — use `/cancel` to stop. ### `/update` ```text /update ``` Checks PyPI and upgrades OpenSRE in-place (5-minute network timeout). Non-zero exit prints CLI error code. ### `/debug` ```text /debug sentry ``` Targeted smoke tests (Sentry, etc.) — subcommands match `opensre debug --help`. ### `/uninstall` ```text /uninstall ``` Removes OpenSRE and local data. **Destructive** — confirmation required unless trust mode. Delegates to interactive CLI uninstall flow. --- ## System commands ### `/doctor` Environment diagnostic distinct from `/health`: ```text /doctor ``` Checks Python version, venv, config paths, Docker availability, credential presence, and related local prerequisites. Each row: `ok`, `warn`, or `error` with detail text. Use **`/doctor`** before first install debugging; use **`/health`** before an incident to verify integrations. ### `/version` ```text /version ``` | Field | Example | | --- | --- | | `opensre` | Package version from install | | `python` | `3.12.x` | | `os` | `darwin (arm64)` | ### `/exit` and `/quit` ```text /exit /quit ``` Clean shutdown with `/resume` hint. Prefer over killing the terminal so session files flush cleanly. --- ## Trust mode and confirmations | Tier | Examples | Confirmation | | --- | --- | --- | | Exempt | `/help`, `/exit`, `/trust` | Never prompts | | Safe | `/status`, `/health`, `/investigate`, `/integrations list` | Read-only or standard risk | | Elevated | `/save`, `/watch`, `/cancel`, `/integrations remove`, `/fleet kill`, `/uninstall` | Prompt `[y/N]` unless trust on | Non-TTY: elevated commands **fail closed** (error message, no side effect). ```text /trust on # skip prompts for this session /trust off # restore prompts ``` --- ## Natural language actions You do not need to memorize every slash command. Examples: | You type | Typical action | | --- | --- | | "what's my token usage?" | `/cost` | | "verify datadog" | `/verify datadog` | | "show datadog config" | `/integrations show datadog` | | "switch to openai gpt-4.1" | `/model set openai gpt-4.1` | | "run the generic sample alert" | `/investigate generic` | | "list my past sessions" | `/sessions` | | "check health then list integrations" | `/health` then `/integrations list` | | "how do I configure Datadog?" | Doc-grounded answer (no mutating command) | **List intents** — there is no global `/list`: | Intent | Command | | --- | --- | | Connected integrations | `/integrations list` | | Tools | `/tools` | | Background tasks | `/tasks` | | MCP servers | `/mcp list` | | Cron jobs | `/cron list` | | Past REPL sessions | `/sessions` | | Watchdog tasks | `/watches` | When the planner is uncertain, it asks for clarification or falls back to help — it does not silently run elevated commands. Compound requests ("health then integrations") execute as an ordered sequence of slash actions. --- ## Common workflows ### First-time setup ```text /onboard /health /verify /model show ``` ### Incident triage (local) ```text /status /alerts /health ``` Paste alert text or: ```text /investigate ./alerts/prod-502.json /last /save ./rca/prod-502.md ``` ### Pick up yesterday's thread ```text /sessions /resume 9b2e4f7a ``` Continue chatting, then optionally: ```text /new ``` ### Switch model mid-session ```text /model set anthropic claude-sonnet-4-20250514 /effort high /cost ``` ### Monitor a runaway process ```text /watch --max-cpu 90 --max-rss 2G --cooldown 10m /watches /unwatch ``` ### Debug integration failures ```text /integrations show datadog /doctor /verbose on ``` --- ## Troubleshooting | Symptom | Try | | --- | --- | | `unknown command` | `/help`; check spelling; use suggested correction | | Elevated command blocked in CI | Use CLI equivalent (`opensre investigate …`) or run interactively | | `/cost` shows zero | No LLM turns yet this session; chat once and retry | | `/resume` not found | Run `/sessions`; use longer ID prefix | | `/resume` ambiguous prefix | Add more characters from Session ID column | | `/model set` missing credential | `/auth login ` or export `ANTHROPIC_API_KEY` / etc.; use `/auth verify ` for stale metadata | | `/watch` Telegram error | Configure messaging via `/messaging status` | | `/integrations show` not found | Run `/integrations list` for exact service slug | | History pause not working | Requires redacting backend — see `/privacy` | | Garbage in next prompt after table | Known TTY issue — upgrade OpenSRE; report if persistent | --- ## Related docs - [Session History](/sessions) — persistence format, privacy, `/new` vs `/clear` - [Interactive Shell Privacy](/interactive-shell-privacy) — redaction, env vars, threat model - [Investigation overview](/investigation-overview) — RCA workflow, plain-language actions, CLI investigate - [LLM providers](/llm-providers) — `/model` and `/effort` - [Agents](/fleet) — fleet dashboard, bus, trace, budgets - [Cron](/cron) — `/cron` scheduled deliveries - [Hermes](/hermes) — `/hermes watch` - [Remote runtime investigation](/remote-runtime-investigation) — `/remote`