ARGUS — ArgusLabs

Storage

How ARGUS stores traces, detections, and forensic data.

Overview

ARGUS stores all run data locally in .argus/runs/ inside your project directory. No external database required, no cloud dependency for core functionality.

What Gets Stored

Each pipeline execution creates a run record containing:

  • Node inputs and outputs at each step
  • Timing data per node
  • Detection results from all four layers
  • Forensic analysis (root cause, causal chain)
  • Recorded HTTP calls (when record_http=True)

Controlling Storage

Storage is on by default. To disable it for ephemeral monitoring:

python
watcher = ArgusWatcher(graph, persist_state=False)

Replay requires persist_state

Replay only works on runs recorded with persist_state=True (the default). Without stored state, ARGUS doesn't have the intermediate data needed to replay from a specific node.

HTTP Recording

All external HTTP calls (OpenAI, search tools, databases) are recorded by default. Every API response is saved to disk alongside the run. During replay, the recorded responses are served back — same data, zero extra cost, fully reproducible.

python
# Disable HTTP recording for lightweight monitoring
watcher = ArgusWatcher(graph, record_http=False)

Redaction

ARGUS captures full state at every step. Use redact_keys to scrub sensitive fields from stored outputs:

python
watcher = ArgusWatcher(
    graph,
    redact_keys={"api_key", "token", "password", "authorization"},
)

Security

Without redaction, API keys and secrets will appear in your stored runs. Always add sensitive field names to redact_keys before using ARGUS with production credentials.

Viewing Runs

Access stored runs through the CLI or the web dashboard:

bash
# 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

# Inspect raw input/output for a specific node
argus inspect <id> --step <node>

# Launch the web dashboard
argus ui

The web dashboard at http://localhost:7842 serves runs from .argus/runs/ in your current directory — no account needed.

Programmatic Access

Access trace data directly from Python:

python
trace = watcher.get_trace()

trace.id                # unique trace identifier
trace.status            # "ok" | "warning" | "failed"
trace.duration_ms       # total execution time
trace.steps             # list[TraceStep]
trace.detections        # list[Detection]
trace.forensics         # Forensics | None
trace.summary           # human-readable summary