How to use ARGUS
Install
pip install argus-agents
Init
argus init — writes .cursor/skills/argus-debug/ and .claude/skills/argus-debug/. Commit them. The skill already contains the setup prompt.
Attach
Ask your editor agent to wire ARGUS. (The skill already contains this AI setup prompt; the homepage copy is just a fallback.) ArgusWatcher.attach(graph)
Run
Same as always. Failures print [argus] in the terminal; clean runs stay silent.
Inspect
argus show last, argus fix <id>, or argus ui
Optional — smarter detection
argus key set if you want the LLM judge. Skip it and you still get heuristics.Prerequisites
Requirements
- Python 3.9 or higher
- pip (or any Python package manager)
- A LangGraph pipeline (or any Python callable to test with)
Installation
pip install argus-agentsThis is the full product — the argus CLI, the LangGraph adapter, and the local UI (argus ui). No account, no config files, no cloud: ARGUS runs fully local, runs are stored in .argus/runs/, and heuristic detection works out of the box. LLM-powered features stay optional: run argus key set when you want the semantic judge.
Bring Your Own Key (BYOK)
AI-powered detection (semantic judge, LLM investigator, learned trends) uses your own key from the provider of your choice — OpenAI, Anthropic (Claude), or Google (Gemini). Set it once — it's saved locally and reused every session. No key is fine too: ARGUS falls back to heuristic-only detection.
argus key set # OpenAI by default — prompts (hidden), saved to ~/.argus/config.json
argus key set --provider anthropic # or Anthropic / --provider google for Gemini
# or an env var: export OPENAI_API_KEY=sk-... (ANTHROPIC_API_KEY / GEMINI_API_KEY)
argus key use anthropic # switch active provider · argus doctor # confirm modeSetup — Pick Whichever Fits Your Code
One call — attach (recommended)
from argus import ArgusWatcher
watcher = ArgusWatcher()
app = watcher.attach(graph) # StateGraph or already-compiled app
result = app.invoke(initial_state) # run is persisted automatically
print(watcher.run_id)Constructor form
from argus import ArgusWatcher
watcher = ArgusWatcher(graph) # uncompiled StateGraph
app = graph.compile()
result = app.invoke(initial_state) # persisted automaticallyBoth work. No changes to your node functions.
finalize() is optional
attach() wraps invoke() / ainvoke() so the run is written when the call returns — including cyclic graphs. watcher.finalize() is an optional idempotent flush, not required.Full Example
Here's a complete example — a simple LangGraph pipeline with ARGUS instrumentation:
1from argus import ArgusWatcher
2from langgraph.graph import StateGraph
3
4# 1. Define your graph (your existing code)
5graph = StateGraph(AgentState)
6graph.add_node("agent", call_model)
7graph.add_node("tools", tool_node)
8# ... add edges ...
9
10# 2. Attach ARGUS and run
11watcher = ArgusWatcher()
12app = watcher.attach(graph)
13result = app.invoke(initial_state)
14# persisted automaticallyView Results
After your run completes, you can view results in several ways:
# List all runs
argus list
# View the most recent run
argus show last
# View a specific run by ID (or 8-char prefix)
argus show run abc12345
# Launch the web dashboard
argus uiRunning argus show and viewing results in the terminal
Next Steps
- Core Concepts — understand Watchers, Detectors, Traces, and Forensics
- Configuration — customize detection sensitivity, enable semantic judging, configure storage
- CLI Reference — all available commands and flags