The Podium Gateway is a Rust/Axum HTTP server that fronts the coordinator cluster. It handles authentication, routing, S3 deployment uploads, and native protocol WebSocket proxying.

Authentication

All requests require an API key:
Authorization: Bearer pod_your_api_key
Admin operations require a key with the pod_admin_ prefix.

Deployments

POST /api/v1/deployments

Upload a new agent deployment bundle. Content-Type: multipart/form-data
FieldTypeRequiredDescription
filefileYestar.gz bundle
agent_typestringYesAgent type name
versionstringYesSemantic version
Flow:
  1. Receives tar.gz bundle
  2. Computes SHA256 checksum
  3. Uploads to S3: {env}/deployments/{type}/{version}/{type}-{version}.tar.gz
  4. Generates deployment_id: {type}:{version}@{hash_prefix}
  5. Forwards to coordinator for initial deployment
  6. Returns deployment_id
Response:
{
  "deployment_id": "claude-agent:1.0.0@2b795103",
  "agent_type": "claude-agent",
  "version": "1.0.0",
  "checksum": "2b795103..."
}

Instances

POST /api/v1/instances

Create a new agent instance.
{
  "deployment_id": "claude-agent:1.0.0@2b795103",
  "config": {
    "model": "claude-sonnet-4-20250514",
    "temperature": 0.7
  },
  "secrets": {
    "ensemble_api_key": "ens_..."
  }
}
Flow:
  1. Validates API key and tenant scope
  2. Queries Valkey for least-loaded coordinator
  3. Forwards to coordinator: POST /instances
  4. Returns instance_id

GET /api/v1/instances/

Get instance info including status, config, and Chronicle WebSocket endpoint.

DELETE /api/v1/instances/

Stop and remove an instance.

API Keys

POST /api/v1/keys

Create a new tenant API key.

GET /api/v1/keys

List API keys.

DELETE /api/v1/keys/

Revoke a key.

Secrets

PUT /api/v1/secrets/

Set secrets for an agent type (encrypted at rest).

GET /api/v1/secrets/

Retrieve secrets (admin only).

Configuration

GET /api/v1/config

Get current platform configuration including available models (fetched from Ensemble).

PUT /api/v1/config

Update runtime configuration.

GET /api/v1/config/models

List available models with capabilities and pricing (proxied from Ensemble /api/v1/models).

Health

GET /health

Gateway health check.

WebSocket

WS /agent/

Native protocol WebSocket connection to an agent instance. The gateway proxies this to the coordinator that hosts the agent. Podium’s native StreamUpdate protocol flows through this connection (not ACP). Diminuendo connects here and translates between this native protocol and ACP for clients.