Platform administration
Creating teams, limits, retention, the system AI default and platform secrets.
The platform console manages the installation as a whole: which teams exist, their limits, and the settings every team shares. It is a separate application with its own address, its own sign-in and its own database account. Platform administrators cannot see team members, scans, findings or any other team data, and cannot join a team through the console.
A single-team installation does not need the platform console. Deploy it when you add teams, or to set limits and the shared AI configuration.
Deploying the console
The console signs in only through a dedicated OpenID Connect application at your identity provider; it has no passwords. It runs next to ScanSuite from docker-compose.platform.yml, or through the Terraform deployment with platform_console_enabled = true, and should be reachable from the internal network only.
- 01Create its database account
Run python -m platform_console.database --role scansuite_platform with the schema owner's credentials, then give the role a login password. It can read and change only the platform tables.
- 02Register it with the identity provider
A confidential client with the redirect URI https://<platform host>/auth/callback.
- 03Create the first platform administrator
python -m platform_console.bootstrap --subject <immutable subject of that person at the provider>.
- 04Configure and start it
Set the PLATFORM_* settings (its own secret key, database URI, Redis URI, OIDC client and wrapping keys) and start the service.
Platform groups
| Group | Can |
|---|---|
| Root administrators | Everything below, plus the system settings, revoking platform secrets and managing platform administrators. |
| Operators | Create, suspend and archive teams, set their limits, and schedule team deletion. Read settings and the audit log. |
| Auditors | Read teams, settings, platform secret metadata and the audit log. |
The console hides what a group cannot use, and the server refuses it either way. Removing a group takes effect immediately. The last active root administrator cannot be removed.


Teams
The Teams section lists every team with its status and limits.

| Status | Meaning |
|---|---|
| Active | The team works normally. |
| Suspended | Nobody can work in the team, and its scans stop. Data is kept. |
| Archived | The team is closed. Its deletion can be scheduled. |
After creating a team, give it a first administrator with a one-time claim (see Members and accounts, "Accounts from the command line"). From then on, the team manages its own members.
Creating additional teams is switched off until PLATFORM_ALLOW_TEAM_CREATION=true is set, so an upgraded installation stays single-team until you decide otherwise.
Limits
| Limit | Effect |
|---|---|
| Concurrent scans | How many scans the team may have queued or running at once. Further scans are refused with a message until one finishes; scheduled runs are skipped and logged. |
| Retention days | Finished scans older than this are deleted every night, with their reports and stored files. The newest scan of each product, scan type and target is always kept, because incremental scans and fix verification compare against it. Findings, assets and credentials are kept. |
| Monthly AI tokens | The most AI tokens the team may use per month, including through its own AI configuration. Teams can set a lower budget themselves. |
A team without limits is not limited and keeps all of its scans. Lifecycle sets the limits proposed for new teams.
Deleting a team
Archive the team, then click Schedule deletion. Its data is deleted after the grace period set under Lifecycle (30 days by default). Until then, Cancel deletion, or setting the team active again, stops it.
When the date passes, ScanSuite deletes the team's stored files and all of its data. The team itself remains, marked deleted, so historical references still resolve. The platform audit log records how many rows were deleted, and nothing else. The deletion runs inside ScanSuite, within the team's own scope; the platform console never reads team data.
System settings
| Section | What it sets |
|---|---|
| System AI | The AI configuration teams use when they choose "Use platform default". Test system AI sends one short prompt and reports only whether it answered. |
| Capacity | The remaining runs of the installation's shared Nessus scanner, for all teams together. Empty means no limit. |
| Lifecycle | Limits proposed for new teams, and the grace period before a scheduled deletion. |
Changes need a recent sign-in and are recorded in the platform audit log.



Platform secrets
The AI key of the system configuration is stored encrypted and is never shown again. Saving a new key replaces it; the previous version stays usable by scans that started with it until you Revoke it under Platform secrets. The version in use cannot be revoked.

The encryption keys themselves are rotated on the server, without decrypting any stored value:
# after adding the new key to the key set and making it the active key
docker compose run --rm migrate python -m configuration.rewrap
docker compose run --rm migrate python -m configuration.rewrap --checkRemove the old key only when --check reports that nothing uses it.
Last reviewed 2026-09-19