apps/api-go is the platform gateway. It serves snapshot-backed read endpoints and can optionally proxy audit control-plane calls to a configured Runtime service.
Start the gateway with defaults:
powershell -ExecutionPolicy Bypass -File .\apps\api-go\run-platform-api.ps1Equivalent explicit form:
powershell -ExecutionPolicy Bypass -File .\apps\api-go\run-platform-api.ps1 `
-ListenHost 127.0.0.1 `
-ListenPort 8780 `
-PublicDataDir .\apps\api-go\data\public `
-RuntimeBaseURL http://127.0.0.1:8765The default listen port is 8780.
py -3 .\apps\api-go\scripts\publish_public_snapshot.py `
--runtime-base-url http://127.0.0.1:8765 `
--research-root ..\Research `
--output-dir .\apps\api-go\data\publicWhen the Runtime control plane is unavailable during publishing, the publisher can reuse existing snapshot files and optionally read admitted evidence from a local Research checkout. This is a publish-time fallback only. Request-time API routes remain snapshot-backed.
The publisher validates the top-level public snapshot shapes before writing them. Invalid catalog or models payloads are replaced with empty lists; invalid attack-defense tables are replaced with an empty diffaudit.attack_defense_table.v1 table. Each replacement is recorded in manifest.json warnings so bad publish-time inputs are visible without leaking raw Runtime or filesystem errors.
Snapshot-backed read routes:
GET /healthGET /api/v1/catalogGET /api/v1/evidence/attack-defense-tableGET /api/v1/modelsGET /api/v1/experiments/recon/bestGET /api/v1/experiments/{workspace}/summary
Optional live control-plane routes:
GET /api/v1/research-boundariesGET /api/v1/audit/jobsPOST /api/v1/audit/jobsGET /api/v1/audit/jobs/{job_id}DELETE /api/v1/audit/jobs/{job_id}GET /api/v1/audit/job-template
This service is a gateway only:
- it does not run research jobs directly;
- it does not shell out to Python during public requests;
- it serves workspace read models from the configured snapshot bundle;
- it forwards only audit control-plane calls and read-only research admission boundaries to Runtime, and only when that upstream is configured.