The universal runtime control plane — deploy the same workload to Podman, Kubernetes, and KubeVirt, then migrate between them without rewriting infrastructure.
Releases · Quick Start · User Guide · Docs
Most teams write the app once — then rewrite the deploy story three times.
|
Declare what you care about — cost, performance, reliability. Aether scores Podman / Kubernetes / KubeVirt and recommends (or selects) the lane. |
Every runtime pair. Immediate, blue-green, or rolling. KubeVirt live migration with vGPU-aware validation. |
CLI, TUI, glass web dashboard, and REST + SSE API — same control plane, same state. |
Aether is Terraform for where workloads run — not just what they are.
# macOS Apple Silicon
curl -LO https://github.com/zyvorai/Aether/releases/download/v0.4.0/aether-macos-arm64
chmod +x aether-macos-arm64 && sudo mv aether-macos-arm64 /usr/local/bin/aether
# Linux amd64
curl -LO https://github.com/zyvorai/Aether/releases/download/v0.4.0/aether-linux-amd64
chmod +x aether-linux-amd64 && sudo mv aether-linux-amd64 /usr/local/bin/aether
aether --helpAlso available: macOS amd64 (aether-macos-amd64) and .sha256 checksums on the Releases page.
Official images publish from the Release workflow to GitHub Container Registry:
# Pull
docker pull ghcr.io/zyvorai/aether:0.4.0
# or: docker pull ghcr.io/zyvorai/aether:latest
# CLI via container (mount state + kubeconfig)
docker run --rm -it \
-v "$HOME/.aether:/root/.aether" \
-v "$HOME/.kube:/root/.kube:ro" \
-v "$(pwd):/work" -w /work \
ghcr.io/zyvorai/aether:0.4.0 --help
# API + glass dashboard on :5090
docker run --rm -p 5090:5090 \
-v "$HOME/.aether:/root/.aether" \
ghcr.io/zyvorai/aether:0.4.0 serve --host 0.0.0.0 --port 5090Tags: latest, 0.4.0, 0.4, 0 — image: ghcr.io/zyvorai/aether.
aether init
aether run --spec examples/demo-webserver.yaml
aether list --output wide
# Glass dashboard + API
aether serve
# → http://localhost:5090Build from source
git clone https://github.com/zyvorai/Aether.git && cd Aether
(cd web/dashboard && npm ci && npm run build) # embedded UI assets
cargo build --release
./target/release/aether --helpapiVersion: aether/v1
kind: Workload
metadata:
name: demo-webserver
requirements:
cpu: "500m"
memory: 256Mi
runtime:
preferred: kube
allow: [kube, podman, kubevirt]
network:
service: true
ports:
- containerPort: 8080
servicePort: 80One file. Three possible homes. Aether decides — or you override.
| From → To | Podman | Kubernetes | KubeVirt |
|---|---|---|---|
| Podman | — | Yes | Yes |
| Kubernetes | Yes | — | Yes |
| KubeVirt | Yes | Yes | Yes · live-migrate |
# Blue-green across runtimes
aether migrate my-app --from kube --to kubevirt --strategy blue-green
# Node-to-node KubeVirt live migration
aether live-migrate my-vm --watch-timeout 120
# Intent re-score
aether score --spec workload.yamlStrategies: immediate · blue-green · rolling — with drain, health gates, and rollback paths.
Zyvor-orange accent on macOS-26-style glass — not another Bootstrap admin theme.
- SSE live updates after mutations
- Command palette —
⌘K/Ctrl+K - Workload detail — Overview · Logs · Drift · Scoring
- Discovered pods & VMs — Logs + Shell (Operator / Admin)
- Intent debugger — SVG radar for cost / performance / reliability / availability
aether serve # → http://localhost:5090
# or: cd web/dashboard && npm run devDemo login (local): admin / Admin@321
flowchart TB
subgraph Surfaces
W[Web Dashboard]
T[TUI]
C[CLI]
end
subgraph ControlPlane[Control Plane]
API[Axum API + SSE]
I[Intent Engine]
M[Migration Engine]
P[Policy · RBAC · Audit]
end
subgraph Runtimes
Podman
K8s[Kubernetes]
KV[KubeVirt]
end
W --> API
T --> API
C --> API
API --> I
API --> M
API --> P
I --> Podman
I --> K8s
I --> KV
M --> Podman
M --> K8s
M --> KV
| Path | Purpose |
|---|---|
src/ |
Control plane — CLI, API, adapters, intelligence |
web/dashboard/ |
React 18 + TypeScript + Tailwind glass UI |
examples/ |
Specs you can run today |
helm/ · packaging/ |
Cluster & OS packaging |
docs/ |
Guides, architecture, user manuals |
| Interface | How |
|---|---|
| CLI | aether run · migrate · serve · live-migrate · … |
| API | http://localhost:5090/api/* |
| TUI | aether ui |
| Web | aether serve → browser |
| Want… | Go here |
|---|---|
| Full feature map | User Guide · PDF |
| Install / 5-minute start | Installation · Quick Start |
| Migration internals | MIGRATION-INTERNALS |
| Scoring / intent | Decision engine |
| Docs index | docs/README.md |
| Contributing | CONTRIBUTING.md |
Part of the Zyvor private-cloud stack — Aether is the universal runtime portability plane.
make ci # tests + clippy + dashboard build + vitest
cargo test
cargo clippy --all-targets --all-features
cd web/dashboard && npm run test && npm run check:hex-surfacesConventional Commits (feat:, fix:, docs:). PRs welcome — see CONTRIBUTING.md.
Apache License 2.0 — see LICENSE.
Confidential computing (Ragnarok) is a separate Zyvor product and is not shipped in this repository.
Star Aether · Releases · zyvor.dev
Built with Rust · Glass · Intent · by ZyvorAI Labs