Deploy to your cloud
Where Loams 0.1.1 runs today on AWS, Google Cloud, Azure, Cloudflare and Vercel, for a development VM and for production, and what is still planned.
Don't rent a cloud. Loam it. Loams runs in an account you own: your laptop, your homelab, or a VM in your own cloud. Ostrium runs no data plane, and the engine is never on the public internet.
This section says what works today, in 0.1.1, on each cloud, and labels the rest. Everything here is the same release: the compose bundle attached to the v0.1.1 GitHub release, its images on ghcr.io/ostrium-labs, and your own Tailscale tailnet as the only way in.
What works today
One Linux VM running the compose stack. That is the only install path in 0.1.1, on every cloud. The VM runs the light default stack, and the engine can keep its data in that cloud's object store. The stack and the tailnet are covered in Self-hosting over Tailscale; the pages below add what is specific to each cloud.
| AWS | Google Cloud | Azure | Cloudflare | Vercel | |
|---|---|---|---|---|---|
| Development VM | EC2 | Compute Engine | Azure VM | No VMs. Run the VM on another cloud or your own machine | No VMs. The data plane is a VM elsewhere; the app runs locally on your tailnet |
| Production today | One EC2 VM, bucket on S3 | One Compute Engine VM, bucket on Cloud Storage | One Azure VM, bucket on Blob Storage | R2 as the bucket of a VM elsewhere | Nothing on Vercel yet: apps on Vercel cannot reach the engine until edge reach ships |
| Bucket credentials | The instance role, no keys | The VM's service account, no key | A storage account key | An R2 API token's S3 keys | Vercel Blob is not S3-compatible; use R2 |
| Planned | OpenTofu modules, ECS Fargate, EKS with the operator | OpenTofu modules, Cloud Run, GKE with the operator | OpenTofu modules, Container Apps, AKS with the operator | A Deploy to Cloudflare template: the engine in a Container, R2 as the source of truth; apps on Workers | Apps and agents on Vercel Functions, reaching the engine through edge reach; a Vercel integration |
| Page | AWS | Google Cloud | Azure | Cloudflare | Vercel |
Every "today" cell is Available in 0.1.1, as one node with the limits below; every "planned" cell is designed and not built. Vercel never hosts the data plane: it runs apps and agents, and the engine runs on one of the other clouds or your own machine.
The stack on one VM
docker compose up -d in the bundle's release/ directory starts the light default:
- the engine (
loams) on its embedded stores: the metastore on openraft and redb, Loams Live on redb, Durable on SQLite, Git and Graph, with the bucket a local folder unless you pointLOAMS_BUCKETat an object store; - Loams House, linked to the engine;
- Loams Postgres: its storage broker, pageserver, safekeeper and one compute, with their remote storage in local folders;
agentd, the agent daemon;- the
tailscalesidecar, the stack's only door.
Loams House runs on chDB today. It is ClickHouse-compatible analytics on chDB, the embedded ClickHouse library, inside the loams-fabric image, and it is experimental. A Rust engine of our own for the House is designed (design 75) but not built.
It needs about 10 GB of free disk and 2 GB of free memory, and it idles near 1 GB, measured on 0.1.0's images. Profiles add more, set in .env as COMPOSE_PROFILES before the first start:
| Profile | Adds | Cost |
|---|---|---|
tikv | PD, TiKV and TiDB: Loams SQL, and the engine's metastore and Live on TiKV | About 3 GB more of images and 2 GB more of memory |
rustfs | RustFS, an S3 bucket on the same machine for Loams Postgres's storage | A little more disk |
A stack's data stays on the stores it started on: the engine refuses to switch stores on existing data. Choose the profiles on the first start.
VM sizes
The default fits a small VM. Leave room for the operating system on top of the stack's 2 GB.
| Light default | With tikv | |
|---|---|---|
| Memory | 4 GiB | 8 GiB |
| Disk | 30 GB | 50 GB |
| AWS | t3.medium | t3.large |
| Google Cloud | e2-medium | e2-standard-2 |
| Azure | Standard_B2s | Standard_B2ms or Standard_D2s_v5 |
The cost calculator prices these sizes side by side on each cloud, with the bucket, requests and egress. Loams itself is free.
Use Ubuntu 24.04 LTS on x86-64. Two reasons:
- The House's workers need Landlock with TCP rules, from Linux 6.7, and refuse to boot without it. Ubuntu 24.04 ships a 6.8 kernel. Distributions on 6.1, such as Debian 12 and Amazon Linux 2023's default kernel, are too old for the House (verify for your image).
- The
loams,loams-fabric,loams-agentdandloams-pg-controlimages are built for amd64 and arm64, but the patched TiDB image is amd64 only, and the pinned Loams Postgres images on arm64 are not yet confirmed. x86-64 avoids both.
Never public
No step in this section opens a port to the internet.
- People reach the engine over your tailnet, at
https://loams.<tailnet>.ts.net, through the stack'stailscalesidecar. The VM needs outbound internet only. - Shell access goes through the cloud's own console or identity-aware tunnel, or over the tailnet once the VM is on it. Create every VM with no inbound firewall rules.
- Machines on the tailnet, such as CI runners, use an API key (
LOAMS_AUTH_MODE=tailscale,apikey), because Tailscale gives no user identity for tagged devices. - Callers off the tailnet, such as a serverless function, have no supported path in 0.1.1. The gateway's edge listener, reached over a private link or Cloudflare Tunnel with every request authenticated first, is Planned (design 69).
The console
| Where | Status |
|---|---|
Loams Desktop: add https://loams.<tailnet>.ts.net as a server. Download it from the download page | Available in 0.1.1 |
Served by the engine at https://loams.<tailnet>.ts.net/ui/, same-origin with the API | Planned for 0.1.2. It is merged on dev and not in 0.1.1 |
The hosted console at console.loams.dev | Retired |
| The console on your own Cloudflare or Vercel project | Planned |
Identity
| What | Status |
|---|---|
One organization per install, created once by first-run setup with LOAMS_SETUP_TOKEN, with you as its owner | Available |
Sign-in modes tailscale (default), oidc with an OIDC issuer you choose, apikey for the CLI, SDKs and CI | Available |
| Authorization is coarse: a valid identity can do anything the engine can. No per-namespace roles yet | Known limit |
| Zitadel for identity and OpenFGA for authorization (design 76) | Planned |
Upgrades
0.1.1 changes the default stack; reinstall. A 0.1.1 stack starts from the 0.1.1 bundle with a fresh .env. A 0.1.0 stack keeps its data only if you add COMPOSE_PROFILES=tikv,rustfs to its .env before upgrading, because 0.1.0 ran on TiKV and RustFS.
From then on, loams upgrade upgrades a stack with the tikv profile in place, with a snapshot first. It refuses a stack on the default embedded stores for now; upgrade one of those by hand: back up the volumes, docker compose stop, set LOAMS_VERSION in .env, then docker compose up -d. See upgrades.
What is planned
These are designed and approved, not built. None of them ships in 0.1.1.
| Piece | Design | Status |
|---|---|---|
| Per-cloud cloud-init files and guides with the bucket, key and secrets in the cloud's own services | 70, BY0 | Planned |
| The Deploy to Cloudflare template: the engine in a Cloudflare Container behind a Durable Object, metadata checkpointed to R2, labelled preview | 70, BY0 | Planned |
OpenTofu modules per cloud and tier, and a loams byoc deploy command | 70, BY1 | Planned |
| Container services (ECS Fargate, Cloud Run, Container Apps) as a checkpointed single node | 70, BY1 | Planned |
loams backup into your own bucket | 70, BY1 | Planned |
The loams-operator and a Helm chart on EKS, GKE and AKS | 65, 70, BY2 | Planned |
| Managed metastores: DynamoDB, Cloud SQL or Azure Database for PostgreSQL, Durable Objects on Cloudflare | 70 | Planned |
App BYOC: apps and agents on each cloud's serverless free tier, with loams app deploy | 71 | Planned |
| Void for apps on Cloudflare, and Void's Node build on Vercel and the other clouds, with Vite+ as the toolchain | 79 | Planned |
| The gateway's edge listener for callers off the tailnet, such as apps on Vercel or Workers | 69 | Planned |
| Loams Cloud: a free, invite-only try-out that joins your own devices for development | 78 | Planned |
Design 78 sets the order the deploy targets arrive in: TiDB X for development state, then Cloudflare, Vercel, AWS, Google Cloud and Azure, with AWS, Google Cloud and Azure as the production targets. The plan says production goes into your company's own cloud account, and development runs on your own devices.
Self-hosting over Tailscale
Run the Loams 0.1.1 stack with Docker or Podman Compose on your laptop or your own VM, reachable only over your Tailscale tailnet, and use it from Loams Desktop.
Deploy on AWS
Run Loams 0.1.1 on an EC2 VM in your own AWS account, as a development environment over your tailnet, or as a single production node with its bucket on S3.