Skip to main content

Argus server

Python MCP + FastAPI server. NetBox source-of-truth tools for coding agents and the Argus web dashboard. See the top-level README and docs/ARCHITECTURE.md.

Install

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

Configure

Copy .env.example to .env (or export the vars):

NETBOX_URL=https://netbox.lan
NETBOX_TOKEN=<netbox api token>
NETBOX_VERIFY_SSL=true
HTTP_HOST=0.0.0.0
HTTP_PORT=8080

# Optional — all default to off; see .env.example for the full list.
HTTP_TOKEN=                  # bearer token for /api + /webhooks (unset = open)
NETBOX_WEBHOOK_SECRET=       # verify NetBox X-Hook-Signature HMAC on /webhooks (unset = off)
SCHEDULE_INTERVAL=0          # scheduled drift loop: seconds between cycles (0 = off)
SCHEDULE_COLLECTOR=unifi     # collector the scheduled drift cycle runs
ALERT_WEBHOOK_URL=           # Slack-compatible webhook; alerts on detected drift
NETBOX_TENANT=               # shared-instance: stamp this tenant on objects reconcile creates (unset = single-tenant)

If unset, tools return a clear "NetBox not configured" message instead of erroring.

Run

argus-mcp     # MCP server over stdio (for Claude Code etc.)
argus-http    # FastAPI HTTP server on :8080 (for the web app + webhooks)

argus-maint-mcp  # separate maintenance MCP surface — release preview/verify (devtools; read-only)

The HTTP server also:

  • receives NetBox webhooks at POST /webhooks/netbox — it classifies and structured-logs each change event (observability only; no discovery or reconcile is triggered yet). Set NETBOX_WEBHOOK_SECRET to verify NetBox's X-Hook-Signature HMAC (HMAC-SHA512 of the raw body); a missing or mismatched signature is rejected 401 (unset leaves verification off).
  • runs an optional scheduled drift loop — set SCHEDULE_INTERVAL (seconds) and Argus discovers + diffs on that interval, read-only (never apply). The latest outcome is served at GET /api/drift/status, and setting ALERT_WEBHOOK_URL POSTs a Slack-compatible alert when drift is found.
  • gates /api + /webhooks behind a bearer token when HTTP_TOKEN is set (/health stays public); unset leaves the API open for local/dev use.

Examples

Enable API auth, then call /api/* with the bearer token:

export HTTP_TOKEN="$(openssl rand -hex 32)"
argus-http
curl -H "Authorization: Bearer $HTTP_TOKEN" http://localhost:8080/api/devices

Enable scheduled drift detection (every 5 min) with an optional Slack alert, then read the latest outcome:

export SCHEDULE_INTERVAL=300                                    # 0 = off
export SCHEDULE_COLLECTOR=unifi
export ALERT_WEBHOOK_URL="https://hooks.slack.com/services/…"   # optional
argus-http
curl http://localhost:8080/api/drift/status

Install from PyPI (the published distribution is argus-netbox; the import package stays argus and the console scripts are argus-mcp / argus-http):

pip install argus-netbox
argus-http     # or argus-mcp

Container images are published to GHCR — see the top-level README's Published artifacts.

Develop

ruff check src tests
mypy src
pytest -v          # offline — NetBox is mocked

Tools

Tool Kind Status
list_devices, get_device, list_prefixes, list_ip_addresses, search read real (needs NetBox)
list_collectors, discovery_scan, network_topology discovery UniFi real — devices + clients + uplink topology (needs UNIFI_*); pfSense/OPNsense real — devices, firmware, role via SSH/SNMP (needs PFSENSE_HOST, PFSENSE_USERNAME, PFSENSE_PASSWORD, optional PFSENSE_USE_SNMP); SNMP/LLDP real for non-UniFi gear (validated via snmpsim replay): devices + LLDP links with local/remote ports, SNMPv2c or SNMPv3 (needs SNMP_TARGETS + argus-netbox[discovery]); list_collectors (also GET /api/collectors) surfaces each vendor pack's manufacturer/transport/capabilities/config_vars
drift_report, reconcile_apply reconcile real — diffs and (on confirm) persists, auto-creating supporting NetBox objects
evaluate_practices practices real — runs a collector's best-practice rules, returning advisory Findings (read-only; also GET /api/practices)
health meta real

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

argus_netbox-0.2.5.tar.gz (93.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

argus_netbox-0.2.5-py3-none-any.whl (71.5 kB view details)

Uploaded Python 3

File details

Details for the file argus_netbox-0.2.5.tar.gz.

File metadata

  • Download URL: argus_netbox-0.2.5.tar.gz
  • Upload date:
  • Size: 93.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for argus_netbox-0.2.5.tar.gz
Algorithm Hash digest
SHA256 6ddb27f3b73b6819a2db58c359022b2dd39dd5fdb6727538d151827a0fb9eece
MD5 4a3f496ab28dd585697d54bbe2eb705f
BLAKE2b-256 4c3f7646a82d5e0bf02b0e9569b0cbc3cb839cb1b45b93b8ff082782236791e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for argus_netbox-0.2.5.tar.gz:

Publisher: release.yml on freed-dev-llc/argus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file argus_netbox-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: argus_netbox-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 71.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for argus_netbox-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a8c6823374f273783f74cd467ade50935ca2eeac2180a17cb9416041c91002bc
MD5 8bb9cee6ca81feee98b71d477532a3ff
BLAKE2b-256 e331d961b84a91c5e00d6ed5eebd767c80ee48f4aa8488e00c2de152fe6e1309

See more details on using hashes here.

Provenance

The following attestation bundles were made for argus_netbox-0.2.5-py3-none-any.whl:

Publisher: release.yml on freed-dev-llc/argus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page