Starting the Server
0.0.0.0:9002 by default.
CORS Configuration
The server’s CORS behavior is controlled bycors_allowed_origins in ~/.vigolium/vigolium-configs.yaml:
| Value | Behavior |
|---|---|
reflect-origin (default) | Echoes the requesting Origin header back. Allows credentials. |
* | Allows all origins without credentials (standard wildcard). |
| (empty string) | Disables CORS middleware entirely. |
https://app.example.com, https://admin.example.com | Comma-separated allowlist. Allows credentials. |
Project Scoping
All server operations are scoped to a project via theX-Project-UUID request header. If omitted, the default project is used.
Authentication
All API requests (except/health) require a Bearer token:
VIGOLIUM_API_KEY env var > server.auth_api_key in config file.
API Endpoints
| Method | Path | Description |
|---|---|---|
| GET | / | App info (no auth required) |
| GET | /health | Health check (no auth required) |
| GET | /metrics | Prometheus metrics (no auth required) |
| GET | /swagger/* | Swagger UI and OpenAPI spec (no auth required) |
| GET | /server-info | Server status, queue depth, record/finding counts |
| GET | /api/modules | List available scanner modules |
| GET | /api/http-records | Query stored HTTP records |
| GET | /api/findings | Query scan findings |
| POST | /api/ingest-http | Ingest HTTP traffic into the database |
| GET | /api/stats | Aggregated scan statistics |
| GET | /api/scope | View scope configuration |
| POST | /api/scope | Update scope configuration |
| GET | /api/config | View server configuration |
| POST | /api/config | Update server configuration |
| POST | /api/scan | Trigger a background scan |
| GET | /api/scan/status | Check scan status |
| DELETE | /api/scan | Cancel a running scan |
| GET | /api/source-repos | List source repos |
| POST | /api/source-repos | Create a source repo |
| GET | /api/source-repos/:id | Get a source repo |
| PUT | /api/source-repos/:id | Update a source repo |
| DELETE | /api/source-repos/:id | Delete a source repo |
| POST | /api/agent/run/query | Single-shot agent prompt execution |
| POST | /api/agent/run/autopilot | Autonomous AI-driven scanning session |
| POST | /api/agent/run/pipeline | Multi-phase scanning pipeline |
| GET | /api/agent/status/list | List agent runs |
| GET | /api/agent/status/:id | Get agent run status (includes full result when completed) |
Ingesting Data via API
The/api/ingest-http endpoint accepts multiple input modes. All requests use POST with a JSON body.
Ingest a Single URL
Ingest Multiple URLs (url_file mode)
Pass a newline-separated list of URLs. Lines starting with# are treated as comments.
Ingest a curl Command
content_base64 to avoid JSON escaping issues:
Ingest a Raw HTTP Request (Burp-style)
Send a base64-encoded raw HTTP request, optionally with its response:Ingest a Raw HTTP Request with a URL Hint
Raw HTTP requests don’t contain the scheme (https vs http), and the Host header may not match the public hostname (e.g. behind a load balancer). Use the url field to provide the correct scheme and host:
Ingest an OpenAPI / Swagger Spec
Ingest a Postman Collection
Ingesting Data via CLI
Thevigolium ingest command supports both remote (server) and local (direct-to-database) modes.
Remote Ingestion (to a running server)
Local Ingestion (direct to database)
When--server is omitted, requests are fetched and stored directly in the local database:
Ingesting via Transparent Proxy
Start the server with a proxy port to passively record HTTP traffic:Querying Ingested Data
List HTTP Records
List Findings
Server Info
Scan Management via API
After ingesting HTTP records, trigger a vulnerability scan via the API.Trigger a Scan
202 Accepted on success, 409 Conflict if a scan is already running.
Check Scan Status
Cancel a Running Scan
Running AI Agents via API
The agent API provides three run modes that mirror thevigolium agent CLI subcommands. Only one agent run can be active at a time (returns 409 Conflict if busy).
Query — Single-Shot Agent Run
prompt_template, prompt_file, or prompt is required. Returns 202 Accepted on success. Set "stream": true for real-time SSE output.
Autopilot — Autonomous Scanning
Pipeline — Multi-Phase Scanning
data: lines with JSON payloads: {"type":"chunk","text":"..."} for real-time output, {"type":"phase","phase":"..."} for pipeline phase transitions, {"type":"done","result":{...}} on completion, or {"type":"error","error":"..."} on failure.
List All Agent Runs
Check Agent Run Status
result field with the full agent output (raw text, findings, HTTP records).
See Agent Mode for the full agent documentation (including autopilot, pipeline, context enrichment, and prompt templates) and the API Reference for request/response details.
Input Modes Reference
| Mode | Content Field | Description |
|---|---|---|
url | content | A single URL |
url_file | content | Newline-separated list of URLs |
curl | content or content_base64 | A curl command string |
burp_base64 | http_request_base64 | Base64-encoded raw HTTP request |
openapi / swagger | content or content_base64 | OpenAPI/Swagger spec (JSON or YAML) |
postman_collection | content or content_base64 | Postman Collection (JSON) |
burp_base64 mode, you can also include http_response_base64 to store the response alongside the request.
For modes that accept large payloads, prefer content_base64 to avoid JSON escaping issues.