Skip to main content

Sovereign Intelligence Platform β€” Production Roadmap

Owner: kernelcore Created: 2026-03-28 Updated: 2026-03-30 Target: Production-ready event-driven AI operations platform


Current State​

All projects build. Umbrella Delivery (ADR-0050) completed the wiring layer. Spectre events flow from owasaka β†’ NATS β†’ phantom-soc data-plane β†’ control-plane GTK4 UI. ai-agent-os publishes system.metrics.v1. Phantom API has all 7 endpoints. Spooknix has MCP tool.

Orchestration layer (sentinel) is now complete: unified compose with profiles, full integration test suite (scenarios, chaos, performance), CI/CD pipelines, release workflow, and cross-platform packaging scripts are all in place.

Blocking: live security and observability validation are complete. The remaining hard gates before production are recovery/docs execution and the final go/no-go review.

Go-live baseline: operational execution is now tracked in sentinel/docs/go-live-goals.md. Use that document as the release gate reference for live validation, secrets, observability, rollback, and project documentation updates.

Operational Execution Batches​

Run the remaining production work in these batches:

  • Batch 1 β€” Bring-up + Smoke: full stack boot, healthchecks, endpoint validation (sentinel/docs/runbooks/batch-1-bringup-smoke.md)
  • Batch 2 β€” Live E2E: Spectre E2E, phantom-soc E2E, critical event-flow proof (sentinel/docs/runbooks/batch-2-live-e2e.md)
  • Batch 3 β€” Security: NATS auth E2E, TLS/mTLS validation, secret loading validation (sentinel/docs/runbooks/batch-3-security.md)
  • Batch 4 β€” Observability: structured logs, log aggregation, correlation IDs
  • Batch 5 β€” Recovery + Docs: rollback exercise, config backup, project documentation updates
  • Batch 6 β€” Go/No-Go: evidence review, open-risk review, final release decision

Current operational status:

  • Batch 1: PASS on 2026-03-30
  • Batch 2: PASS on 2026-03-30 (9 passed, 3 skipped)
  • Batch 3: PASS on 2026-03-30 (14 passed, phantom TLS PASS, NATS mTLS wiring readiness PASS)
  • Batch 5: PASS on 2026-03-30 (backup archive PASS, core rollback PASS, NATS/Phantom health PASS)
  • Batch 6: GO on 2026-03-30 (all required gates PASS, core live health PASS)
  • Gate 5 Secrets: PASS on 2026-03-30 (4 passed, 0 failed)
  • Block C Metrics: PASS on 2026-03-30 (5 passed, 0 failed)
  • Block D Logging: PASS on 2026-03-30 (4 passed, 0 failed)
  • Block E Alerting: PASS on 2026-03-30 (4 passed, 0 failed)
  • Observability config incident resolved on 2026-03-30: local spectre bind-mounted configs with host mode 0600 caused Prometheus/Loki startup failures; normalized to readable mounts and reflected in CI notes

Operational Attack Plan​

Execute the remaining work in these isolated blocks. Each block only closes when it has:

  • a dedicated runner or script
  • explicit PASS / NO-GO output
  • focused debug assertions for the failure mode
  • roadmap and runbook updates

Block A β€” Security Completion​

Goal: complete Batch 3 and keep Security at full PASS.

Scope:

  • finish NATS mTLS live wiring in compose and client configs
  • keep Phantom TLS validation green
  • keep NATS auth E2E green while mTLS is introduced

Exit criteria:

  • batch-3-security returns PASS
  • NATS rejects missing or invalid client certs
  • compose clients no longer depend on plaintext nats:// wiring where mTLS is required

Status:

  • closed on 2026-03-30 (Batch 3 PASS)

Block B β€” Secrets Gate​

Goal: complete Milestone 3.3 for real production secrets, not only NKeys/TLS material.

Runbook: sentinel/docs/runbooks/gate-5-secrets.md

Scope:

  • move HF_TOKEN, DATABASE_URL, and remaining provider/API secrets into SOPS
  • standardize secret injection across services
  • validate rotation and recovery path

Exit criteria:

  • no production-required secret depends on ad hoc shell export
  • secret loading is documented and validated in the live stack
  • a dedicated secrets gate runner returns PASS

Block C β€” Metrics Completion​

Goal: close 4.1 by delivering the ai-agent-os system metrics dashboard.

Runbook: sentinel/docs/runbooks/batch-4-metrics.md

Scope:

  • expose or bridge system.metrics.v1 into Prometheus/Grafana
  • create a Grafana dashboard for CPU, memory, thermal, host, and publish cadence
  • link it to the existing observability stack

Exit criteria:

  • dashboard is versioned in repo
  • live data from ai-agent-os is visible in Grafana
  • dashboard validation runner returns PASS

Block D β€” Logging​

Goal: close 4.2 with operationally useful logs.

Runbook: sentinel/docs/runbooks/batch-4-logging.md

Scope:

  • structured JSON logs from required services
  • centralized aggregation (Loki or equivalent)
  • correlation IDs propagated across HTTP and NATS flows

Exit criteria:

  • logs are machine-parseable and centrally queryable
  • one end-to-end flow can be traced by a single correlation_id
  • logging validation runner returns PASS

Block E β€” Alerting​

Goal: close 4.3 operationally, including the deferred thermal path.

Runbook: sentinel/docs/runbooks/batch-4-alerting.md

Scope:

  • validate existing Prometheus alert rules against live services
  • wire alert evidence and triage context
  • implement or explicitly re-scope the ai-agent-os thermal alert path

Exit criteria:

  • alert rules validate cleanly
  • at least one controlled alert fires with usable context
  • alerting validation runner returns PASS

Block F β€” Recovery & Documentation​

Goal: prove rollback + backup readiness ahead of Batch 6.

Runbook: sentinel/docs/runbooks/batch-5-recovery.md

Scope:

  • archive spectre/config, TLS cert/key bundles, and runtime/seed secrets;
  • stop the core profile with docker compose --profile core down --remove-orphans;
  • bring the core profile back up and hit NATS + Phantom TLS health endpoints;
  • snapshot tmp/batch-5-backup for audit.

Exit criteria:

  • sentinel/scripts/batch-5-recovery-check.sh returns exit 0;
  • tarballs in tmp/batch-5-backup match the current timestamp;
  • docs reference the recovery exercise plus health endpoints used.

Status:

  • closed on 2026-03-30 (Batch 5 PASS)

Execution Order​

The release gate was executed in this order:

  1. Block A β€” Security Completion
  2. Block B β€” Secrets Gate
  3. Block C β€” Metrics Completion
  4. Block D β€” Logging
  5. Block E β€” Alerting
  6. Block F β€” Recovery & Documentation
  7. Batch 6 β€” Go / No-Go

Why this order:

  • security and secrets are hard deploy gates
  • metrics must exist before logging/alerting evidence is useful
  • logging and correlation must exist before alerts can be triaged well

Milestone 0 β€” Foundation (DONE)​

  • Spectre event types defined (9 variants + system.metrics.v1)
  • Owasaka publishes network.asset.discovered.v1 / network.dns.query.v1 to NATS
  • phantom-soc data-plane consumes NATS events
  • phantom-soc control-plane GTK4 LogViewer wired to EventBus
  • phantom-soc scheduler fix (dequeue(&self) via tokio Mutex)
  • ai-agent-os publishes system.metrics.v1 to NATS
  • Phantom API: all 7 endpoints + /api/upload multi-file
  • Spooknix MCP tool (spooknix_health, spooknix_transcribe, spooknix_diarize)
  • Domain Manifest v2.1.0 updated

Milestone 1 β€” Unified Compose & Local Dev (DONE)​

Goal: docker compose up boots the entire platform locally.

1.1 β€” Top-level docker-compose.yml βœ…β€‹

  • /home/kernelcore/master/docker-compose.yml β€” profiles: core, intelligence, gpu, observability, compliance, full
  • Service: nats (nats:2.10-alpine, ports 4222/8222/6222, JetStream)
  • Service: phantom-api (port 8008, depends_on nats healthy)
  • Service: owasaka (port 8080, depends_on nats healthy, NET_RAW cap)
  • Service: ai-agent-os (depends_on nats, profile: core)
  • Service: cerebro (profile: intelligence)
  • Service: securellm-bridge (port 8081, profile: intelligence)
  • Service: spooknix (port 8000, GPU profile, CUDA)
  • Service: prometheus + grafana + jaeger (profile: observability)
  • Service: neotron (temporal + postgres, profile: compliance)
  • Shared network spectre-net (172.28.0.0/16) for all services
  • .env.example with all required variables (consolidated)

1.2 β€” Nix flake for local dev​

  • sentinel/flake.nix β€” remote flake inputs for all projects, custom test runner
  • Top-level flake.nix at ~/master/ β€” local-only (no root git repo; each project is its own repo)
  • nix run .#nats β€” start NATS standalone (JetStream, store /tmp/nats-data)
  • nix run .#dev-stack β€” docker compose --profile core up + health checks
  • nix run .#smoke-test β€” run sentinel smoke-test.sh
  • nix run .#integration-tests β€” full pytest suite via poetry
  • nix develop β€” unified shell (Rust + Go + Python + Bun + natscli + sops)

1.3 β€” Smoke test script βœ…β€‹

  • sentinel/scripts/smoke-test.sh β€” boots compose, health checks all endpoints, exit 1 on failure
  • Validates: NATS healthz/varz, phantom /health + /ready + /metrics

Milestone 2 β€” Integration Tests (suite complete + reconnect fixes done; live validation next)​

Goal: Prove events flow across service boundaries.

2.1 β€” Spectre E2E βœ… (suite written)​

  • Test: owasaka β†’ NATS network.asset.discovered.v1 β†’ schema validation (scenarios/test_spectre_e2e.py)
  • Test: ai-agent-os β†’ NATS system.metrics.v1 β†’ CPU/memory field validation
  • Test: DNS query event flow (network.dns.query.v1)
  • Test: All event subjects follow {domain}.{entity}.{action}.v{version} format
  • Live validation: passed against real stack on 2026-03-30 (9 passed, 3 skipped)

2.2 β€” Phantom API E2E βœ… (suite written)​

  • Test: upload file β†’ /vectors/search returns it (scenarios/test_phantom_e2e.py)
  • Test: /api/chat with indexed context β†’ sources in response
  • Test: multi-file upload
  • Test: /metrics returns Prometheus format
  • Test: cortex-desktop β†’ phantom-api proxy round-trip (Playwright β€” deferred)

2.3 β€” phantom-soc E2E βœ… (suite written)​

  • Test: publish network.asset.discovered.v1 β†’ consumer subject reachable (scenarios/test_phantom_soc_e2e.py)
  • Test: publish network.dns.query.v1 β†’ event schema + envelope validated
  • Test: multi-event ordering over single subject (NATS ordering guarantee)
  • Test: data-plane phantom ops listen-nats starts without crash
  • Test: GTK4 LogViewer headless smoke (skipped if no DISPLAY)
  • Test: live dispatch round-trip β€” consumer subprocess receives published event
  • Live validation: passed against real stack on 2026-03-30 (9 passed, 3 skipped)

2.4 β€” NATS reconnect βœ…β€‹

  • Test: kill NATS β†’ owasaka/ai-agent-os survive + reconnect (chaos/test_nats_reconnect.py)
  • Test: partial boot β†’ intelligence services gracefully unavailable (chaos/test_partial_boot.py)
  • Test: phantom degraded β†’ cached responses served (chaos/test_phantom_degraded.py)
  • Fix: owasaka Publisher β€” MaxReconnects(-1), ReconnectWait(2s), disconnect/reconnect handlers
  • Fix: ai-agent-os nats_client β€” ConnectOptions::max_reconnects(None), connection_timeout(5s), event callback

2.5 β€” Performance / SLO βœ… (suite written)​

  • Test: phantom-api P99 < 500ms (performance/test_phantom_latency.py)
  • Test: β‰₯20 req/s sustained throughput (performance/test_throughput.py)
  • Test: spooknix transcribe < 30s/min-audio (performance/test_spooknix_latency.py)

Milestone 3 β€” Security Hardening​

Goal: Zero-trust between services. No plaintext secrets.

3.1 β€” NATS Auth βœ…β€‹

  • Generate NATS NKey credentials for all 6 services (owasaka, ai-agent-os, phantom, phantom-soc, cerebro, securellm-bridge)
    • Seeds: spectre/config/nkeys/<service>.nk (gitignored, SOPS-managed in prod)
    • Regenerate: nix run .#nkeys-gen
  • NATS server config with per-subject ACLs (spectre/config/nats-server.conf)
    • owasaka: publish network.> only
    • ai-agent-os: publish system.> only
    • phantom: publish ingest.> + analysis.>, subscribe cognition.insight.generated.v1
    • phantom-soc: subscribe network.> + system.> (consumer-only, no publish)
    • cerebro: publish cognition.>, subscribe ingest.file.sanitized.v1
    • securellm-bridge: publish llm.> only
  • owasaka Publisher.Connect() β€” NKey auth via NATS_NKEY_SEED / NATS_NKEY_SEED_FILE
  • ai-agent-os Agent::with_config() β€” NKey auth via NATS_NKEY_SEED / NATS_NKEY_SEED_FILE
  • docker-compose: NATS_NKEY_SEED env vars wired for all core services
  • .env.example: all 6 *_NKEY_SEED vars documented
  • flake: nix run .#nats loads auth config if present; nix run .#nkeys-gen regenerates all seeds
  • Integration tests: sentinel/scenarios/test_nats_auth.py β€” connection auth, ACL allow/deny, cross-service flows
  • Live validation: passed against live stack on 2026-03-30 (14 passed)
  • SOPS encryption of seed files (M3.3 β€” done)

3.2 β€” TLS everywhere βœ…β€‹

  • Self-signed CA (secrets/tls/ca.crt) + per-service EC P-256 certs (7 services)
    • SANs include Docker DNS names, spectre-net IPs, and localhost
    • Cert rotation script: sentinel/scripts/rotate-tls.sh
  • NATS mTLS live wiring (spectre/config/nats-server.conf + client TLS wiring) validated in local compose
    • Clients must present cert signed by spectre CA
    • Certs mounted in compose: secrets/tls/{nats,ca}.{crt,key}
  • Phantom API behind TLS β€” Caddy reverse proxy on :8008
    • spectre/config/Caddyfile β€” terminates TLS, proxies to phantom-api:8000
    • phantom-proxy service in docker-compose with cert volumes
  • Spooknix cert generated (secrets/tls/spooknix.{crt,key}) β€” ready for server config
  • Live validation: passed on 2026-03-30 (phantom TLS PASS, NATS mTLS wiring PASS, NATS auth E2E 14 passed)
  • Sentinel TLS harness adjusted for Python 3.13 strict CA handling so local auth validation reflects the live stack behavior
  • Production: replace self-signed with Let's Encrypt / Vault PKI

3.3 β€” Secrets management βœ…β€‹

  • .sops.yaml at project root β€” age encryption, path-regex rules for secrets/ and *.env.enc
  • Age key at ~/.config/sops/age/keys.txt (pre-existing)
  • NKey seeds encrypted: secrets/nkeys.env β†’ secrets/nkeys.env.enc (SOPS+age)
  • secrets/.gitignore β€” blocks *.env, *.key, *.pem; allows *.enc
  • Rotation script: sentinel/scripts/rotate-nkeys.sh
    • Regenerates all 6 NKey seeds, updates nats-server.conf pub keys, encrypts to SOPS
  • TLS rotation script: sentinel/scripts/rotate-tls.sh
    • Regenerates CA + 7 service certs with correct SANs
  • No plaintext secrets in git β€” all sensitive files gitignored, encrypted copies committed
  • Runtime secret bundle baseline: secrets/runtime.env.enc for HF_TOKEN, DATABASE_URL, provider keys
  • HF_TOKEN, DATABASE_URL, API keys β†’ live per-project SOPS adoption and runtime injection

3.4 β€” SecureLLM Bridge integration βœ…β€‹

  • phantom/api/cortex_api.py β€” _call_via_bridge() routes all providers through bridge
    • SECURELLM_BRIDGE_URL env var (Docker: http://securellm-bridge:8080, local dev: http://localhost:8081)
    • _bridge_model_id() maps cortex provider names β†’ {provider}/{model} identifiers
    • Graceful fallback: if bridge unreachable (local dev) β†’ direct provider calls
  • phantom/api/app.py β€” /ready endpoint now checks securellm_bridge status
  • docker-compose.yml β€” SECURELLM_BRIDGE_URL wired to phantom-api service
  • .env.example β€” SECURELLM_BRIDGE_URL documented
  • Integration tests: sentinel/scenarios/test_securellm_e2e.py extended with:
    • test_phantom_ready_includes_bridge_check β€” validates /ready wiring
    • test_phantom_chat_routes_through_bridge β€” metrics-based routing proof
    • test_bridge_rate_limit_enforced β€” 429 enforcement under load
    • test_bridge_provider_model_routing β€” /v1/models registry check

Milestone 4 β€” Observability Operational PASS​

Goal: Know what's happening across the platform in real-time.

4.1 β€” Metrics βœ…β€‹

  • Prometheus scrape config for all spectre-net services (spectre/prometheus.yml)
    • phantom-api, owasaka, securellm-bridge, cerebro, spooknix, nats-exporter, prometheus self
  • NATS Prometheus exporter (nats-exporter service in compose observability profile)
  • owasaka: real /metrics endpoint β€” HTTP requests, events published, assets discovered, DNS queries
  • Grafana dashboard: service health, phantom latency P50/P95/P99, NATS throughput, bridge requests, owasaka events (spectre/config/grafana/dashboards/voidnxlabs-overview.json)
  • ai-agent-os system metrics dashboard (spectre/config/grafana/dashboards/ai-agent-os-system-metrics.json)
  • system.metrics.v1 β†’ Prometheus bridge (spectre/tools/ai-agent-metrics-bridge)
  • Batch 4 metrics gate returns PASS with live ai_agent_* series in Prometheus

4.2 β€” Logging βœ…β€‹

  • Structured JSON logging wiring validated in required services
  • Loki + Promtail centralized log aggregation wired in observability compose profile
  • Correlation ID wiring present across HTTP/NATS code paths
  • Batch 4 logging gate returns PASS with live Loki query validation

4.3 β€” Alerting βœ…β€‹

  • 15 alert rules across 5 groups (spectre/config/alerts.yml):
    • Service availability (all services), phantom SLO (P99 < 500ms, error rate < 5%)
    • SecureLLM Bridge provider failures + rate limits
    • NATS slow consumers + connection drops
    • owasaka event throughput
  • Prometheus rule and alert endpoints validated live
  • Batch 4 alerting gate returns PASS
  • Thermal threshold alert (ai-agent-os β†’ NATS β†’ phantom-soc UI) β€” deferred to M7
  • E2E tests: sentinel/scenarios/test_observability_e2e.py

Milestone 5 β€” CI/CD (DONE)​

Goal: Every push is tested and deployable.

5.1 β€” GitHub Actions βœ…β€‹

  • integration-tests.yml β€” quick-tests (PR), full matrix (main), chaos (nightly), benchmarks
  • ci.yml β€” per-project build matrix (spectre, owasaka, phantom, ai-agent-os, neoland, website)
  • release.yml β€” integration gate β†’ image builds β†’ GHCR push β†’ GitHub Release
  • PR template with ROADMAP checklist (.github/pull_request_template.md)
  • Nix build cache (cachix voidnxlabs)

5.2 β€” Container images βœ…β€‹

  • Images built in release.yml: phantom-api, owasaka, cerebro, securellm-bridge, spooknix
  • Multi-arch: linux/amd64 + linux/arm64
  • Push to ghcr.io/VoidNxSEC/{service}:{version} on release

5.3 β€” Deploy​

  • packaging/nix/nixos-module.nix β€” NixOS systemd services module
  • docker-compose.yml production profiles with restart policies and healthchecks
  • Rollback procedure documented (sentinel/docs/runbooks/rollback.md)

Milestone 6 β€” ML Pipeline (Neutron + Cerebro) βœ…β€‹

Goal: Training and knowledge extraction operational.

6.1 β€” Cerebro knowledge pipeline βœ…β€‹

  • Phantom publishes ingest.file.sanitized.v1 after DAG pipeline sanitization (phantom/nats/publisher.py + phantom_dag.py Step 10)
  • Cerebro consumes ingest.file.sanitized.v1 β†’ runs HermeticAnalyzer + ChromaDB indexing (cerebro/nats/consumer.py)
  • Cerebro publishes cognition.insight.generated.v1 with themes, concepts, summary, file_hash (cerebro/nats/publisher.py)
  • Phantom subscribes to cognition.insight.generated.v1 β†’ ingests into FAISS vector store (phantom/nats/consumer.py)
  • Both consumer+publisher wired into FastAPI lifespan in app.py (phantom + cerebro)
  • nats-py >= 2.7 added to both phantom/pyproject.toml and cerebro/pyproject.toml

6.2 β€” SecureLLM Bridge observability βœ…β€‹

  • Real Prometheus metrics: securellm_requests_total, securellm_request_duration_seconds, securellm_rate_limited_total, securellm_provider_errors_total, securellm_token_usage_total, securellm_cost_usd_total (crates/api-server/src/state.rs)
  • NATS events: llm.request.v1 + llm.response.v1 + cost.incurred.v1 on every LLM call (crates/api-server/src/services/nats.rs)
  • Metrics endpoint wired via prometheus::TextEncoder (routes/metrics.rs)

6.3 β€” ml-ops-api βœ…β€‹

  • NATS events: inference.request.v1 / inference.response.v1 (ml-ops-api/api/src/nats.rs wired into AppState + inference handler)
  • MlOpsProvider in securellm-bridge routing (ml-ops/{model} prefix) (crates/providers/src/ml_ops.rs β€” OpenAI-compatible proxy, no API key)
  • Config: ML_OPS_ENABLED=true + ML_OPS_API_URL env vars
  • Circuit breaker: 3 failures β†’ open, 120s timeout (GPU-aware)
  • Fallback chain orchestration (local candle β†’ ml-ops-api β†’ securellm-bridge) (phantom/src/phantom/api/cortex_api.py β€” 3-tier chain with graceful degradation)

6.4 β€” E2E test suite βœ…β€‹

  • sentinel/scenarios/test_ml_pipeline_e2e.py β€” full pipeline: upload β†’ ingest event β†’ cerebro insight event β†’ phantom RAG updated β†’ bridge real metrics β†’ bridge NATS events

Milestone 7 β€” Production Deploy​

Goal: Running on real hardware, serving real users.

Execution note: use sentinel/docs/go-live-goals.md as the operational checklist for batch execution and release gating.

7.1 β€” NixOS deployment βœ…β€‹

  • NixOS configuration module for full stack (packaging/nix/nixos-module.nix)
  • Systemd services with restart rate limits (StartLimitIntervalSec=60s + StartLimitBurst=5)
  • Firewall rules β€” only expose: phantom-api 8008, spooknix 8000, cortex-desktop 1420 (openFirewall option guards the TCP port list; internal ports never exposed)

7.2 β€” Backup & DR βœ…β€‹

  • PostgreSQL backup script: sentinel/scripts/backup-postgres.sh (7d daily / 4w weekly retention)
  • PostgreSQL restore script: sentinel/scripts/restore-postgres.sh
  • NixOS backup timer: sentinel/packaging/nix/backup.nix (runs at 02:00, Persistent=true)
  • NATS JetStream streams: spectre/config/jetstream-streams.json (7 streams: INGEST/COGNITION/LLM/NETWORK/SYSTEM/INFERENCE/COST)
  • JetStream init script: sentinel/scripts/init-jetstream.sh (idempotent, idempotent create)
  • Rollback runbook: sentinel/docs/runbooks/rollback.md (Docker/NixOS/DB/NATS/SOPS/provider)
  • Git-based config backup: sentinel/scripts/backup-config-git.sh emits git bundle + tracked-change evidence for master, sentinel, and spectre

7.3 β€” SLO validation βœ…β€‹

  • P99 latency targets: phantom-api < 500ms, spooknix transcribe < 30s/min-audio
  • Availability target: 99.5% uptime (tested via chaos suite)
  • Neoland readiness score: 85/100 βœ… (engine tests +12, nlp tests +9, proxy tests +5, SLO suite added) (neoland/tests/slo_validation_test.rs β€” 7 non-ignored + 4 server-dependent tests)

Milestone 8 β€” Distribution (POST-RELEASE)​

Goal: Installable on NixOS, Linux, macOS, Windows. Zero manual setup.

Status: intentionally deferred until after the production release. Before deploy, the priority is per-project release checkups and final hardening across the participating software.

8.1 β€” NixOS / nixpkgs upstream​

  • packaging/nix/nixos-module.nix β€” systemd services + SOPS secrets
  • Submit spooknix to nixpkgs (most standalone, good first PR)
  • Submit cerebro, phantom after spooknix lands

8.2 β€” Linux (Debian/Ubuntu)​

  • packaging/deb/build.sh β€” builds .deb via cargo-deb + fpm
  • packaging/deb/postinst.sh β€” service user + systemd unit setup
  • GitHub Releases asset upload (release.yml downloads deb-packages artifacts and attaches *.deb)
  • Optional: Launchpad PPA

8.3 β€” Linux (RHEL/Fedora)​

  • packaging/rpm/build.sh β€” builds .rpm via fpm
  • Copr repository for Fedora users
  • GitHub Releases asset upload (release.yml downloads rpm-packages artifacts and attaches *.rpm)

8.4 β€” macOS (Darwin aarch64 + x86_64)​

  • packaging/macos/build.sh β€” universal binary via lipo
  • packaging/macos/homebrew-formula.rb β€” Homebrew formula for custom tap
  • Publish tap as VoidNxSEC/homebrew-voidnxlabs
  • Submit to Homebrew core (after tap matures)

8.5 β€” Windows (amd64)​

  • packaging/windows/build.ps1 β€” cross-compile + PyInstaller bundles
  • packaging/windows/wix-config.wxs β€” .msi installer config
  • Submit winget manifest to microsoft/winget-pkgs
  • GitHub Releases .msi asset upload

Project Status Matrix​

ProjectPhaseBuildsTestsNATS WiredProd Ready
spectrePhase 0 doneyes11/11N/A (is the bus)infra yes
owasakaAll 6 phasesyes35 passpublishesreconnect βœ…, NKey βœ…, TLS ready
phantomM6 doneyes70%+ covpub+sub βœ…API yes, TLS (Caddy proxy) βœ…
phantom-soc/controlA5 doneyesβ€”subscribes (EventBus)dev only
phantom-soc/dataA4 doneyesβ€”consumesdev only
ai-agent-osPhase 1 doneyes2/2publishesreconnect βœ…, NKey βœ…, TLS ready
neoland85/100yes131 passnoSLO suite βœ…
spooknixSprint 3 doneyesβ€”noneeds TLS
cerebroM6 doneβ€”112 passpub+sub βœ…NATS wired βœ…
securellm-bridgeM6 doneyesβ€”publishes βœ…real Prometheus metrics βœ…
securellm-mcpPhase 1 doneyesβ€”N/Aprod ready
intelagentFoundationyescore onlynoscaffolding, ADR-0054 decoupled
phantom-soc-kernelKernel doneyesβ€”nobackend complete, needs UI wire
adr-ledgerAlphaβ€”β€”N/Arelease governance + docs gate
sentinelOrchestratoryessuite completeN/ACI/CD + dist ready

Priority Order​

M1 (compose) βœ… -> M2 (tests) βœ… -> M3 (security) βœ… -> M4 (observability) βœ…
M5 (CI/CD) βœ… -> M6 (ML pipeline) βœ… -> M7 (deploy + release checkups) ← NEXT
M8 (distribution) ← POST-RELEASE

Milestones M1 through M4 are operationally closed.

Immediate pre-release focus:

  1. Complete per-project release checkups before deploy
  2. Track the deferred ai-agent-os -> phantom-soc UI thermal path in M7
  3. Keep rerunnable evidence current if core configuration changes before deploy

References​

  • ADR-0050: Umbrella Delivery Roadmap (adr-ledger)
  • Domain Manifest v2.1.0: phantom-ray/phantom-stack/specs/DOMAIN_MANIFEST.md
  • Spectre docker-compose: spectre/docker-compose.yml (NATS + TimescaleDB + Neo4j)
  • Unified compose: ~/master/docker-compose.yml
  • Sentinel test suite: sentinel/scenarios/, sentinel/chaos/, sentinel/performance/
  • Packaging: sentinel/packaging/ (nix, deb, rpm, macos, windows)