Skip to main content

Overview

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.

Managing Projects from the CLI

The vigolium project subcommand creates and manages projects.

Create a project

List projects

The active project is marked with *.

Set the active project

This exports the 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

Deletion removes all scan data scoped to the project (scans, HTTP records, findings, scopes, OAST interactions). By default the project’s config directory (~/.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 the X-Project-UUID header to scope all operations to a project:
If the header is omitted, the default project is used. All queries (findings, HTTP records, stats, scans) return data scoped to that project.

Config Merge Strategy

Configuration is resolved in layers (later layers override earlier ones):
The project config file uses the same partial-YAML format as scanning profiles — only the fields you specify are overridden:
See Configuration for the full set of config sections.

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

See the Projects API for the full endpoint reference.

Database Isolation

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_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.