Self-host the daemon
The daemon reviews a configured set of repositories on a cadence. It is opt-in and safe by default: with no config it does nothing.
Configure
Create the config file, then edit it:
uv run python -m app.cli.security_review config-initThis writes ~/.agentic_suite/security-review.json. Override the path with
SECURITY_REVIEW_CONFIG.
{ "enabled": true, "dry_run": true, "cadence_minutes": 60, "repos": [ { "kind": "local_repo", "repo": "/srv/your-repo", "organization_id": "YOUR_ORG_UUID", "enabled": true } ], "scope": { "deny": ["your-org/secret-*"] }, "holds": ["your-org/your-repo#7"]}Fields:
enabled: the daemon does nothing until this istrue.dry_run: keeptrueto review without posting anything.cadence_minutes: how often the sweep runs.repos: each entry maps a repository to an organization. A local repository uses a filesystem path; a pull request usesowner/namewithpr_number.scope.deny: glob patterns that are always excluded.holds: repository orrepo#prkeys to skip.
Run it
The daemon runs as a Celery Beat task named security-review-scan, registered
automatically. You need:
- A Celery worker consuming the
run_executionqueue. - Celery Beat running.
Each sweep reviews every enabled repository in dry-run. Deduplication by head commit means an unchanged repository is not reviewed again. One repository that fails never stops the rest of the sweep.
Keep reports off-host
Report files are written under ~/.agentic_suite/security-reviews. Point that
directory at a mounted volume with SECURITY_REVIEW_REPORT_DIR if you want the
reports on durable or shared storage.