No public IP, no port forward, no VPN
Every server is behind whatever NAT it happens to be behind: the agent dials out, and WireGuard between peers finds a direct path by hole punching.
10.224.0.0/12 overlay · disco UDP · relay only when nothing else can Your own machines carry the traffic
When two machines cannot reach each other, a third one of yours that can reach both carries the WireGuard ciphertext instead of us — it learns nothing a relay would not.
transit chosen from the fleet's reachability matrix · odalr.transit=off opts out Containers, VMs and functions on one address space
Docker containers, QEMU/KVM guests from cloud images with cloud-init, Firecracker microVMs, and functions with Lambda-shaped or Web fetch handlers — each gets a stable overlay address.
odalr run · odalr vm · odalr fn deploy · Lambda Runtime API on every node A hostname and a certificate for everything
Publish a service and it gets a name under your account with a Let's Encrypt certificate, or bring a domain and prove it with one TXT record.
<service>.<account>.run.odalr.com · odalr domain add · ACME HTTP-01 and DNS-01 Volumes that survive a machine
A volume kept on two machines is mirrored with DRBD and promoted when the replica itself reports the primary gone; a single copy is rebuilt from its last restic snapshot, and the failover says when that was.
--replicas 2 · --sync for protocol C · odalr volume restore Kubernetes, on your servers
Upstream k3s on VMs the platform places — one API server or three, never two — where a PersistentVolumeClaim becomes a replicated volume and a LoadBalancer becomes a route with a certificate.
odalr cluster create prod --ha · kubectl as your platform identity · CSI driver Secrets that never travel in the clear
Sealed at rest, referenced as secret://name, and substituted only as the spec reaches the machine that runs it — so the value never appears in the API, the event stream or a backup.
_FILE convention delivers a tmpfs file · private registry logins get the same treatment Networks that actually restrict
A private network's members reach each other and nothing else does, compiled to per-node nftables rules; a network that says the internet is blocked drops forwarded traffic outside the overlay.
odalr net create backend --member api --member db · policy swapped atomically Reach anything, manage over ssh
odalr ssh reaches a VM with no public address and no open port, and the whole management surface is available as ssh odalr.com 'node ls' — with the key you already have.
odalr proxy for scp and rsync · odalr forward for a local port · commands generated from the API Backups on a different machine
Scheduled copies of a bucket land on another machine with retention, and volume snapshots are taken by restic into the object store — content-chunked, encrypted, and pruned so old ones free their space.
odalr backup · fourteen kept by default · the metrics store is backed up unasked Storage, registry and metrics live on your fleet
Buckets are a Garage cluster the fleet runs itself, the registry is zot with its blobs in that store, and metrics are VictoriaMetrics — all placed as workloads on your machines like anything else.
no special path for platform components · deleting one is refused by name Signed, reversible updates
Publish a signed agent binary and every connected machine verifies, swaps and restarts into it in seconds; a build that cannot reach the control plane rolls itself back.
release key pinned at enrolment · --canary 10 exposes a tenth first