Overview
Vigolium supports project-based data isolation. Every scan record, finding, scope rule, source repo, and OAST interaction is tagged with aproject_uuid, so multiple engagements can share the same database without data leaking across boundaries.
Managing Projects from the CLI
Thevigolium project subcommand creates and manages projects.
Create a project
List projects
*.
Set the active project
VIGOLIUM_PROJECT_UUID environment variable into your shell, so every subsequent command in that shell uses this project.
View the project config path
Delete a project
~/.vigolium/projects/<uuid>/) is removed too; --keep-config leaves it in place.
Set
VIGOLIUM_PROJECT_READONLY=true to disable the mutating project commands (create, delete) 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.Scoping Operations to a Project
Several mechanisms select the active project, listed by precedence (highest first):--project-uuid and --project-name are mutually exclusive (--project-name must match exactly one project).
CLI examples
Server API
When using the REST API, set theX-Project-UUID header to scope all operations to a project:
Config Merge Strategy
Configuration is resolved in layers (later layers override earlier ones):Scoping and the Projects API
A project is a data boundary, not an authentication boundary — Vigolium does not gate project access per user. Authentication is the server’s own API key / bearer token (see Authentication); anyone holding it can address any project. Run separate servers, or separate databases, when engagements must not share an operator.Selecting the active project
Omit all three and operations land in the default project.
Managing via API
Database Isolation
All major data tables carry aproject_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_logs
Existing 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.