Introduction
Mikrom takes an application from a Git repository to a running, HTTPS-served deployment inside an isolated microVM. It is built as a set of Rust services you can operate yourself, plus a Zig guest init and an eBPF data-plane helper.
The mental model
Section titled “The mental model”Git repo ──► mikrom-builder ──► OCI image ──► mikrom-scheduler ──► mikrom-agent ──► microVM │External traffic ──► mikrom-router (ingress + TLS) ───────────────────────────────────┘- You create an app and point it at a Git URL.
- A deployment builds the repo into an OCI image. If the repo has a
Dockerfile, it is built with Docker; otherwise the build is detected automatically with Railpack. - The scheduler places the deployment on a worker, and the agent boots a microVM for it.
- The router publishes the app at
<app-name>.<apps-domain>and obtains a TLS certificate automatically. - External traffic never passes through the control plane — it enters through the router and is routed straight to the app’s microVM.
What is included
Section titled “What is included”- Git-based deployments with build caching and a per-app history.
- MicroVM isolation (Firecracker or Cloud Hypervisor), one microVM per deployment.
- Automatic hostname and HTTPS for every app.
- Activate/rollback to any previous deployment.
- Pause, resume, and stop a running deployment.
- Scale-to-zero after inactivity, plus fixed replicas or CPU/memory-based autoscaling (0–3 replicas).
- Streaming logs and metrics; health checks.
- Neon-backed PostgreSQL with branches, backups, and snapshots.
- Persistent volumes with snapshots.
- MicroVM snapshots for a running deployment.
- Personal access tokens, GitHub App integration and deploy-on-push, per-app security-group rules, platform notifications, and audit logging.
- A REST API (
/v1, Bearer auth) and a dashboard.
What is not included yet
Section titled “What is not included yet”- Custom domains are not self-service. Every app is reachable at its
generated
<app-name>.<apps-domain>hostname; bringing your own domain is not exposed through the API or CLI. See Domains and TLS. - Team roles / RBAC. Projects group resources, but fine-grained per-member authorization is not implemented.
- Multi-region placement. Scheduling is single-cluster.