zwrmd) is the central server that manages apps, deployments, VMs, volumes, secrets, databases, and sandboxes. It runs a REST API, background workers for image building and deployment, and optionally a reverse proxy, SSH proxy, and PostgreSQL proxy.
CLI flags
| Flag | Default | Description |
|---|---|---|
--config | /etc/zwrm/config.toml | Path to config file |
--generate-config | false | Generate default config and exit |
Systemd service
Create/etc/systemd/system/zwrmd.service:
Configuration
The control plane reads/etc/zwrm/config.toml. Generate a default config with zwrmd --generate-config.
Server
Database
Workers
Scheduler
Build
Secrets
Volumes
CORS
https://app.example.com) and wildcard patterns (https://*.example.com).
Startup sequence
- Load configuration and apply environment variable overrides
- Initialize database (SQLite or PostgreSQL)
- Clean up stale Firecracker processes and reconcile machine state
- Set up VM networking (IPAM, NAT, iptables rules)
- Start background services (workers, restart manager, cache cleanup)
- Initialize reverse proxy, SSH proxy, and metadata server (if configured)
- Start HTTP server
- Wait for
SIGINTorSIGTERM
Graceful shutdown
Shutdown timeout is 30 seconds. Components stop in order: metadata server, SSH proxy, reverse proxy, API server (drains workers), HTTP server (drains connections), private networking cleanup, database close.Authentication model
- Localhost bypass: Requests from
127.0.0.1or::1get automatichost-adminaccess - Session tokens:
Authorization: Bearer <token>validated against the auth database - API keys: SHA-256 hashed, validated against the
apikeytable - Org scoping: All resources are scoped to the user’s active organization
Networking
VM networking, IP forwarding, and private networking.
Proxy & TLS
Reverse proxy, TLS, SSH proxy, and PostgreSQL proxy.
Environment Variables
Override any config value via environment variables.