Skip to main content

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

The server listens on 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:
Every record and finding lands under ./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/grep it live), as opposed to the one-shot export’s index.json array.
  • 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-only restricts scan-on-receive to passive modules only — the safest way to analyze forwarded traffic in place.
  • Combining --passive-only with --full-native-scan-on-receive still crawls (discovery + spidering send requests); for zero active traffic, use --scan-on-receive without 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:9009 is the default. Enable it under Vigolium → Bridge → Enable live bridge in Burp.
  • Live rows are labelled source: burp, and the usual /api/http-records filters, sorting, and pagination continue to apply.
  • The VIGOLIUM_BURP_BRIDGE_URL env var supplies the same URL as a fallback; the flag overrides it.
See the Burp Suite guide for the full bidirectional bridge workflow.

Authentication

All API requests except the public meta endpoints (/, /health, /metrics, /server-info, /swagger/*, and POST /api/auth/login) require a Bearer token:
API key resolution order: 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 by cors_allowed_origins in ~/.vigolium/vigolium-configs.yaml:

Project Scoping

All server operations are scoped to a project via the X-Project-UUID request header. If omitted, the default project is used.
All queries (findings, HTTP records, stats, scans) return data scoped to the project specified in the header. See Projects for the full multi-tenancy reference.

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

Force re-scan with specific modules:
Returns 202 Accepted with a scan_uuid on success, 409 Conflict if a scan is already running.

Check Scan Status

Cancel a Running Scan

See the API Reference for full request/response details.

Running AI Agents via API

The server exposes agent endpoints that mirror the vigolium 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.