One binary.
Same protocol everywhere.
ω is the Omega CLI. It speaks the substrate protocol locally (against your dev daemon), against a private deployment, and against the multi-tenant production substrate — using the same commands and the same manifest format. There is no separate "cloud CLI".
static · ~12 MiB
curl · brew · cargo · winget
x86_64 · aarch64 · riscv64
self-managed · signed deltas
The properties
that matter.
scaffold a new manifest in the current directory
compile the manifest, show diffs vs current substrate state
execute the plan; --watch streams lifecycle events
tail structured logs; --since/--until/--filter supported
P50/P95/P99 latency, CPU, memory; flame graph export
capture VM/instance snapshot; signed and content-addressed
graceful shutdown; --recycle returns to pool
adjust scaling bounds without re-applying full manifest
manage capability tokens
walk the span tree for a request
snapshot · screenshot · trace artifacts
inspect the resolver and the egress allowlist
What it
looks like running.
$ω plan --substrate gaia --capability standard
brane.api gaia/standard replicas=16 ✓
brane.score gaia/standard replicas=8 ✓
brane.archive habitat/std hosts=3 ✓
graph edges=2 ✓
estimate $0.31/hr · 6.4 GiB · 12 vCPU
$ω logs api --since 30s --filter status>=400
Ω 14:11:03 api.0017 REQ /score?id=42 status=429 rl=true
Ω 14:11:08 api.0008 REQ /score?id=51 status=503 upstream-503
What you
can rely on.
Same commands on laptop, lab, cloud
ω init in your terminal does the same thing as ω init inside a CI runner — same protocol, same plan output, same diffable apply.
ω plan is real diff
The output of `ω plan` is a structured manifest diff you can pipe through `git diff` or paste into a PR. Plans are review artifacts.
Apply is all-or-nothing
Either every brane reaches READY or the apply rolls back. No half-apply state. ω apply --strategy canary lets you stage progressive rollouts.
Manifest revert = rollback
The manifest is the source of truth. To roll back, revert the manifest and ω apply. There's no separate rollback command — there doesn't need to be.