Open source · MIT license · one-command install

The watchman whose
eyes never all close.

Argus is the hook control center for Claude Code, Codex, and 9 more coding agents — manage configs with one-click presets, test any hook in the simulator before an agent fires it, and install or publish guardrails through the community script registry. No cloud. Your machine, your SQLite file.

curl -fsSL https://raw.githubusercontent.com/ruydt/argus/main/install.sh | bash

Windows (PowerShell): irm https://raw.githubusercontent.com/ruydt/argus/main/install.ps1 | iex

argus · event feedrec
14:02:09 SQLite ready ~/.argus/argus.db
14:02:09 SSE stream open :10804
14:02:09 Dashboard serving :10804
 
14:02:11 SessionStart claude-code · ~/work/api
14:02:14 PreToolUse Bash go test ./...
14:02:21 PostToolUse Bash exit 0 · 6.8s
14:02:24 PostToolUse Edit internal/handler/hook.go
14:02:30 Stop agent finished · 4 tools · 19s
 
watching

The three duties

Manage. Test. Ship.

01 · Manage

Hook management

One-click presets wire hooks for Claude Code, Codex, and 9 more agents — straight from the dashboard. Every argus-managed entry is tagged, additive, and reversible — no JSON surgery, no orphaned config.

See how presets work

02 · Test

Hook simulator

Fire a realistic synthetic payload at any hook command and read stdout, stderr, exit code, and duration — before a live agent ever runs it. The missing debugger for the hook ecosystem.

Tour the simulator

03 · Ship

Script collection

Battle-tested, zero-dependency guardrails, free for everyone — and a community registry built in: browse, one-click install, and publish your own scripts straight from the dashboard.

Browse the scripts

The name

In the old story, Hera set a watchman over what she valued most: Argus Panoptes, a giant with a hundred eyes. Sleep never took all of them at once — some part of him was always watching. When his watch ended, she set his eyes into the peacock's tail, where they outlived him. A watcher whose record outlasts the watch: more or less the job description.

All of it stays on your machine. ~/.argus/argus.db

The instruments

Four instruments, one panel.

01 · Hooks

Manage and test hooks before agents run them

Presets, a structured editor, and the simulator — fire synthetic payloads at any hook command and read the result without waiting for a live session.

  • One-click presets, tagged and reversible
  • Synthetic payloads for every event type
  • stdout, stderr, exit code, duration
hooks — config & simulator
PreToolUse ✓ active
PostToolUse ✓ active
Stop ✓ active
Notification ○ inactive
 
── simulate ──
payload PreToolUse/Bash
exit 0 · 8ms · stdout {}

02 · Scripts

A library of guardrails, one click to install

Browse the community registry, inspect any script in a modal, and install it into ~/.argus/hooks. Sign in with GitHub to back up your collection to a private gist or publish your own.

  • Community registry + your own collection
  • One-click install into ~/.argus/hooks
  • Optional GitHub backup and publish
scripts · registry
$ ls ~/.argus/hooks
block-dangerous.js protect-secrets.js
protect-branch.js format-lint.js
scan-injection.js notify-webhook.js
 
$ node block-dangerous.js < fixtures/bash-dangerous.json
permissionDecision: deny

03 · Sessions & events

Every tool call, the moment it happens

Normalized events stream over SSE the instant a hook fires, grouped by session. Open a session for its full chronological event stream; expand any event for the raw payload.

  • Live SSE feed, grouped by session
  • Filter by agent or project, plus search
  • Expand any event to its raw payload
events — live feed
12:34:01 PreToolUse Bash
cmd: npm run test
12:34:02 PostToolUse Bash
exit: 0 duration: 1.2s
12:34:03 PostToolUse Write src/App.tsx
12:34:05 PostToolUse Edit src/index.css
12:34:09 Stop agent finished
 
$

04 · Diagnostics

The instrument checks itself

Health, storage, hook-script inventory, and log tails — the watcher proves it is awake.

  • Backend, DB, and preset status
  • ~/.argus file system inventory
  • Compact the database to reclaim disk (payloads are gzip-stored; retention optional)
diagnostics
backend healthy :10804
db ~/.argus/argus.db · 12.4 MB
hooks preset Medium (14/30)
~/.argus/hooks 6 scripts
 
log tail
argus.log · hook-scripts.log

Why this exists

  • 01Hook configs are hand-edited JSON — one typo and the guardrail silently never fires.
  • 02The only way to test a hook is to wait for a live agent to trip it. There is no debugger.
  • 03Good guardrail scripts exist — scattered across a thousand gists, unmaintained, untested.
  • 04Agents run for hours unobserved. You find out what they did from the git diff, after the fact.

Hooks are the control plane of coding agents. The control plane deserves an instrument.

03 · Install

Up and running in minutes

No accounts, no API keys, no build tools. One command installs the binary; run argus start and wire your hooks from the dashboard with one-click presets. Building from source is only for contributors.

bash
# One command — downloads the binary for your OS and
# installs it to ~/.argus/bin. It does not touch any agent
# config; you wire hooks from the dashboard.

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/ruydt/argus/main/install.sh | bash

# Windows (PowerShell)
irm https://raw.githubusercontent.com/ruydt/argus/main/install.ps1 | iex

04 · Data handling

Private by default.

No telemetry

Zero analytics, zero tracking, no phoning home. The only outbound calls are ones you trigger — fetching a community script or opting into GitHub backup.

Local SQLite

All events land in a single SQLite file on your machine. No external database, no SaaS.

You control exports

Export your full event history anytime from the export API. Delete all of it anytime by removing ~/.argus.