Isolate scan data per engagement with projects. Every scan, finding, HTTP record, scope rule, and OAST interaction is tagged with a project UUID so multiple engagements can share one database without leaking across boundaries.
Vigolium supports project-based data isolation. Every scan record, finding, scope rule, source repo, and OAST interaction is tagged with a project_uuid, so multiple engagements can share the same database without data leaking across boundaries.
Concept
Meaning
Project
A named container for all scan data. Has a UUID, name, description, optional access-control lists, and an optional per-project config overlay.
Default project
A built-in project (00000000-0000-0000-0000-000000000001) created during vigolium init. All data belongs to it unless you specify otherwise.
Project config
An optional YAML overlay at ~/.vigolium/projects/<uuid>/config.yaml that merges on top of the global config.
Access control
allowed_domains (email-domain patterns like @acme.com) and allowed_emails (exact addresses) that gate who can access the project. See Access Control.
# Add allowed domains and emails (auto-detected by format)vigolium project allow a1b2c3d4-... @acme.com @partner.io[email protected]# ✓ Added 2 domain(s) and 1 email(s) to project my-engagement# @-prefixed values go to domains, the rest to emailsvigolium project allow a1b2c3d4-... @newdomain.io[email protected]# Remove entries from both listsvigolium project remove-access a1b2c3d4-... @partner.io[email protected]
Set VIGOLIUM_PROJECT_READONLY=true to disable all mutating project commands (create, allow, remove-access) from the CLI. Read-only commands (list, use, config) still work. Useful in production or shared environments where projects should only be managed through the REST API.
# Scan within a project (by UUID or by name)vigolium scan -t https://example.com --project-uuid a1b2c3d4-...vigolium scan -t https://example.com --project-name my-engagement# Ingest into a projectvigolium ingest --input urls.txt --project-uuid a1b2c3d4-...# Query and export project datavigolium finding list --project-name my-engagementvigolium db export --project-uuid a1b2c3d4-... -o findings.jsonl
All major data tables carry a project_uuid column and are filtered by the active project across the CLI, server API, and internal pipeline:scans · http_records · findings · scopes · source_repos · oast_interactions · scan_logsExisting databases are migrated automatically — the project_uuid column is added with the default project UUID as its default value, so pre-project data stays accessible under the default project.