Observed since 20 Oct, 23:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Local htop-style dashboard and guarded kill switch for headless AI-agent processes.
A local htop-style dashboard for headless AI-agent processes. It groups each
agent's process tree, tracks CPU/RAM/GPU and sustained hot/idle/churn/leak
states, and provides an allowlisted, token-gated stop control.
Per-node only: AUM is not a scheduler or multi-host control plane. It runs on macOS and Linux; per-process GPU memory is currently NVIDIA/Linux only.

Sanitized capture from a real macOS run. Host, path, and command details are replaced; Apple Silicon does not expose per-process GPU memory.
uvx agent-usage-manager
The dashboard opens at http://127.0.0.1:8765. No database or hosted service is
required. The bundled config recognizes common tools including Claude Code,
Codex, OpenClaw, Hermes, Ollama, vLLM, llama.cpp, Kiro, Aider, and Cline.
Other install options:
pipx install agent-usage-manager
# or, inside a virtual environment:
pip install agent-usage-manager
hot, idle, churn, and
leak? states surface sustained problems rather than one noisy sample.$AUM_*
environment variables. agent-usage-manager test-alert proves the path first.kill sends SIGTERM and escalates after three
seconds; force sends SIGKILL. launchd-supervised jobs get the command that
actually stops the service.agent-usage-manager list --json,
GET /api/agents, or Prometheus-compatible GET /metrics.127.0.0.1; there is no
account, remote collector, or central coordinator.AUM complements process and telemetry tools:
htop sees processes, but not ownership of a spawned agent tree or agent states.Create agents.yaml in the directory where you launch AUM, or pass
--config /path/to/agents.yaml:
agents:
- label: claude-code
match: "claude(\\s|$|-code)"
regex: true
- label: ollama
match: ollama
protect:
- uvicorn
ignore:
- crashpad
Only matched processes are listed or stoppable. protect: keeps a matched
process visible but disables stopping it; ignore: removes a false match
entirely. Edits hot-reload while the server runs.
Advanced matching, per-instance tmux/launchd labels, alerts, API details, service setup, and troubleshooting are in the operator reference.
A web page that can stop processes needs a narrow boundary:
protect: matches are always refused.X-Kill-Token. AUM creates the token in a
mode-0600 state file and never serves it over HTTP.--unsafe-expose is explicit.Report vulnerabilities privately through the security policy. Do not open a public issue for a kill-path, authorization, redaction, or package-privacy defect.
| Area | Current boundary |
|---|---|
| Process matching | Heuristic; use ignore: for false positives |
| GPU | Per-process values require nvidia-smi; unavailable on Apple Silicon |
| Supervision | launchd user jobs detected; systemd supervision is not |
| Permissions | AUM can only signal processes accessible to its OS user |
| History | In memory and reset when the server restarts |
| Windows | Untested; CI covers macOS and Linux |
agent-usage-manager # dashboard
agent-usage-manager list # one-shot table
agent-usage-manager list --json # scriptable snapshot
agent-usage-manager test-alert # verify configured alert delivery
The HTTP surface is documented in the operator reference. External controllers should consume the read-only endpoints and own their own scheduling or irreversible decisions.
If AUM misclassifies a process or behaves differently on macOS or Linux, open a bug report with sanitized output. Never attach a live config, token file, or unreviewed process command line.
AUM is a personal open-source project. Maintenance and support are best-effort.
MIT
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.3.0 | 13 Sept 2026 | 6 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 23:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:dfea1a9d14864b29f5794e521f4e8b4bf2687f32c4532acaa4ba754f29e60948