Admin API
All admin endpoints live under /_simfra/. These are Simfra-specific - not part of any AWS API.
Authentication
When SIMFRA_ADMIN_TOKEN is set, all admin endpoints (except health and a few WebSocket/SSE endpoints that use query param auth) require a Bearer token:
Authorization: Bearer <token>
WebSocket and SSE endpoints accept the token as a ?token= query parameter since browsers cannot set headers on WebSocket or EventSource connections.
Health checks (GET /_simfra/health) never require authentication.
Account Management
| Method | Path | Description |
|---|---|---|
POST |
/_simfra/accounts |
Create account (optional bootstrap field) |
GET |
/_simfra/accounts |
List all accounts |
GET |
/_simfra/accounts/{id} |
Get account details with credentials |
DELETE |
/_simfra/accounts/{id} |
Delete account and all resources |
POST |
/_simfra/accounts/{id}/reset |
Clear all resources in account |
See Multi-Account Support for details.
Service Discovery
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/services |
List all services with descriptions, protocols, and operations |
GET |
/_simfra/services?names |
Compact list: service names and total counts only |
The full response includes each service's name, description, supported protocols, operation count, and operation names.
Health
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/health |
Server health, service count, Docker and persistence status |
Returns 503 during bootstrap, 200 when ready:
{
"status": "healthy",
"services": 88,
"dockerEnabled": true,
"persistenceEnabled": false
}
SSE Event Stream
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/events |
Server-Sent Events stream for real-time change notifications |
Query parameters:
accountId- filter events by accounttoken- admin token (for auth)
The web console uses this to invalidate stale data without polling. Events include the service, resource type, and action (e.g., {"service": "s3", "type": "buckets", "action": "mutated"}).
Certificate Authority
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/ca/info |
Root and intermediate CA certificate details |
GET |
/_simfra/ca/root.crt |
Download root CA certificate (PEM) |
The root CA is used by Docker containers for TLS trust. Download it to trust Simfra-issued certificates on your host.
Docker Management
Requires SIMFRA_DOCKER=true.
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/docker/summary |
Overview of containers, images, networks, volumes |
GET |
/_simfra/docker/containers |
List all Simfra-managed containers |
GET |
/_simfra/docker/containers/{id} |
Inspect a container |
POST |
/_simfra/docker/containers/{id}/start |
Start a container |
POST |
/_simfra/docker/containers/{id}/stop |
Stop a container |
POST |
/_simfra/docker/containers/{id}/restart |
Restart a container |
GET |
/_simfra/docker/containers/{id}/logs |
Stream container logs |
DELETE |
/_simfra/docker/containers/{id} |
Remove a container |
GET |
/_simfra/docker/images |
List Docker images |
POST |
/_simfra/docker/images/pull |
Pull an image |
DELETE |
/_simfra/docker/images/{id} |
Remove an image |
GET |
/_simfra/docker/networks |
List Docker networks |
GET |
/_simfra/docker/networks/{id} |
Inspect a network |
DELETE |
/_simfra/docker/networks/{id} |
Remove a network |
GET |
/_simfra/docker/volumes |
List Docker volumes |
DELETE |
/_simfra/docker/volumes/{name} |
Remove a volume |
POST |
/_simfra/docker/cleanup |
Remove all Simfra containers, networks, and volumes |
Port Forwarding
Requires SIMFRA_DOCKER=true.
| Method | Path | Description |
|---|---|---|
POST |
/_simfra/port-forwards |
Create a port forward to a private container |
GET |
/_simfra/port-forwards |
List active port forwards |
GET |
/_simfra/port-forwards/targets |
List available targets (private containers) |
GET |
/_simfra/port-forwards/{id} |
Get port forward details |
DELETE |
/_simfra/port-forwards/{id} |
Delete a port forward |
Message Inbox
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/inbox |
List messages (supports ?type=, ?source=, ?search=, ?limit=, ?offset=) |
GET |
/_simfra/inbox/unread-count |
Get unread message count |
POST |
/_simfra/inbox/read-all |
Mark all messages as read |
DELETE |
/_simfra/inbox |
Delete all messages |
GET |
/_simfra/inbox/{id} |
Get a single message |
POST |
/_simfra/inbox/{id}/read |
Mark message as read |
DELETE |
/_simfra/inbox/{id} |
Delete a message |
POST |
/_simfra/inbox/{id}/action |
Execute message action (e.g., confirm SNS subscription) |
See Message Inbox for details.
Storage
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/storage/summary |
Persistence stats: DB size, resource counts by service |
Backup (Export / Import)
A full, portable snapshot of everything Simfra is managing — all resources across every account and region, plus S3 object bodies, Lambda code, ECR layers, and the account registry. Works whether or not persistence is enabled (state is read from live memory, not the SQLite file).
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/export |
Stream a full system dump as a gzipped tar (simfra-dump.tar.gz) |
POST |
/_simfra/import |
Restore a dump; replaces in-memory state with the dump's contents |
# Snapshot a running Simfra to a file
curl -s http://localhost:4599/_simfra/export -o simfra-dump.tar.gz
# Restore it (into the same or a different Simfra instance)
curl -s -X POST --data-binary @simfra-dump.tar.gz http://localhost:4599/_simfra/import
The import response is a JSON summary of what was applied:
{ "resources": 128, "blobs": 12, "accounts": 3, "skippedServices": [], "corrupt": 0 }
To load a dump at launch instead of POSTing to a running server, set
SIMFRA_IMPORT=<dump path> — the dump is imported before the server starts serving.
See Backup & Restore for the dump format, semantics, launch loading, and limitations.
CloudShell
| Method | Path | Description |
|---|---|---|
WS |
/_simfra/cloudshell/connect |
WebSocket for terminal session |
Query parameters: accountId, region, token.
See CloudShell for details.
Embedded Browser
| Method | Path | Description |
|---|---|---|
WS |
/_simfra/browser/connect |
WebSocket for browser VNC session |
Query parameters: accountId, token.
See Embedded Browser for details.
SSM Web Terminal
| Method | Path | Description |
|---|---|---|
WS |
/_simfra/ssm/web-terminal |
WebSocket for EC2 instance shell |
Query parameters: accountId, region, instanceId.
See EC2 Instance Connect for details.
Service-Specific Endpoints
DNS
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/dns/{accountId} |
Get DNS container host port for an account |
SES SMTP
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/smtp/{accountId} |
Get SMTP relay host port for an account |
Cognito Hosted UI
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/cognito-auth/{accountId} |
Get Cognito hosted UI host port |
POST |
/_simfra/cognito-idp/authenticate |
Authenticate user directly |
POST |
/_simfra/cognito-idp/issue-tokens |
Issue tokens for a user |
POST |
/_simfra/cognito-idp/refresh-tokens |
Refresh tokens |
POST |
/_simfra/cognito-idp/signup |
Sign up a user |
GET |
/_simfra/cognito-idp/{region}/{poolId}/.well-known/jwks.json |
Cognito JWKS endpoint |
ACM Certificate Validation
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/acm/{accountId}/{region}/pending-validations |
List pending certificate validations |
POST |
/_simfra/acm/{accountId}/{region}/validate/{arn} |
Validate all domains on a certificate |
POST |
/_simfra/acm/{accountId}/{region}/validate/{arn}/{domain} |
Validate a specific domain |
SSO Sessions
| Method | Path | Description |
|---|---|---|
POST |
/_simfra/sso/sessions |
Create SSO session |
GET |
/_simfra/sso/sessions |
List SSO sessions |
DELETE |
/_simfra/sso/sessions/{token} |
Delete SSO session |
SSO OIDC
| Method | Path | Description |
|---|---|---|
POST |
/_simfra/sso-oidc/authorize |
Authorize a device |
GET |
/_simfra/sso-oidc/device-authorizations |
List device authorizations |
GET |
/_simfra/sso-oidc/clients |
List registered clients |
OIDC Provider JWKS
| Method | Path | Description |
|---|---|---|
GET |
/_simfra/oidc/{accountId}/{issuer}/.well-known/jwks.json |
OIDC provider JWKS endpoint |