What is Server Mode
Vigolium can run as a persistent REST API server, accepting traffic ingestion, scan triggers, and agent runs via HTTP endpoints. Server mode is useful for team workflows where multiple users share a scanning backend, CI/CD integration where automated pipelines submit traffic and retrieve findings, and building custom tooling on top of Vigolium’s API.Starting the Server
0.0.0.0:9002 by default.
Live Filesystem Mirror
vigolium server --mirror-fs <dir> (config server.mirror_fs_path) mirrors every saved HTTP record and finding to a flat filesystem tree as it is persisted, in addition to the database. This lets an external tool or coding agent read ingested Burp/proxy traffic as plain files in real time:
./mirror/traffic/<host>/… and ./mirror/findings/<host>/… using the same layout as the fs export format — per-host <id>.req, <id>.resp.headers, <id>.resp.body, and finding <id>.md files cross-linked to the request that produced them.
- The mirror’s indexes are append-only
index.jsonl(one JSON object per line —tail -f/grepit live), as opposed to the one-shot export’sindex.jsonarray. - Per-host id numbering resumes from the existing tree across server restarts.
- The writer runs on a background goroutine and never blocks the database save path, so mirroring adds no latency to ingestion.
The mirror is opt-in and server-only — CLI scans are unaffected. To produce the same tree as a one-shot export from a finished scan or the database, use
--format fs (see Output and Reporting).Scan on Receive
-S/--scan-on-receive runs the scanner against every ingested request as it is persisted, so forwarded Burp/proxy traffic is analyzed in place without a separate scan command:
--passive-onlyrestricts scan-on-receive to passive modules only — the safest way to analyze forwarded traffic in place.- Combining
--passive-onlywith--full-native-scan-on-receivestill crawls (discovery + spidering send requests); for zero active traffic, use--scan-on-receivewithout the full-native flag.
Live Burp Bridge
--burp-bridge-url <url> connects the server to a running Burp Suite through the burp-vigolium extension’s loopback live-bridge listener. Live Burp Proxy history rows are merged into GET /api/http-records on the fly, so the Web UI and API see current Burp traffic alongside the database without a separate ingest step:
- The listener is a loopback-only address the extension exposes;
http://127.0.0.1:9009is the default. Enable it under Vigolium → Bridge → Enable live bridge in Burp. - Live rows are labelled
source: burp, and the usual/api/http-recordsfilters, sorting, and pagination continue to apply. - The
VIGOLIUM_BURP_BRIDGE_URLenv var supplies the same URL as a fallback; the flag overrides it.
Authentication
All API requests except the public meta endpoints (/, /health, /metrics, /server-info, /swagger/*, and POST /api/auth/login) require a Bearer token:
VIGOLIUM_API_KEY env var > server.auth_api_key in config file (~/.vigolium/vigolium-configs.yaml).
CORS Configuration
The server’s CORS behavior is controlled bycors_allowed_origins in ~/.vigolium/vigolium-configs.yaml:
Project Scoping
All server operations are scoped to a project via theX-Project-UUID request header. If omitted, the default project is used.
API Endpoint Overview
A condensed view — see the API References index for the full surface.Scan Management via API
After ingesting HTTP records, trigger a vulnerability scan via the API.Trigger a Scan
202 Accepted with a scan_uuid on success, 409 Conflict if a scan is already running.
Check Scan Status
Cancel a Running Scan
Running AI Agents via API
The server exposes agent endpoints that mirror thevigolium agent CLI subcommands (query, autopilot, swarm, audit). The audit dispatcher accepts driver: "auto"|"both"|"audit"|"piolium" to drive the embedded vigolium-audit harness and/or piolium. Concurrency is bounded by a global heavy/light semaphore plus a per-project heavy cap; new heavy runs return 409 Conflict when the cap is reached. Set "stream": true for real-time SSE output (multi-driver audit streams add a driver field per chunk).
For full details on agent modes, prompt templates, and API request/response schemas, see the Agent Mode documentation and the Agent API Reference.