A modular, open-source VR engine built in Rust for creating immersive virtual worlds.
Status: Early development (v0.1.0). APIs are unstable and subject to change.
Building virtual worlds today means stitching together dozens of disparate libraries, dealing with C++ interop, and fighting runtime crashes. Aether takes a different approach:
- Rust-native from day one — Memory safety, fearless concurrency, and zero-cost abstractions without sacrificing performance.
- Modular by design — 32 crates, each a self-contained subsystem. Use only what you need, swap out what you don't.
- Built for multiplayer — Networking, state synchronization, and server-side validation are first-class citizens.
- Social VR focus — Avatars, social graphs, economies, and user-generated content are part of the core engine, not plugins.
Aether is organized as a Rust workspace with 32 crates spanning seven domains:
aether/
├── crates/
│ ├── Core Engine ──── aether-ecs, aether-physics, aether-renderer, aether-audio,
│ │ aether-input
│ ├── Scripting ────── aether-scripting, aether-creator-studio, aether-world-editor
│ ├── World ────────── aether-world-runtime, aether-network, aether-zoning,
│ │ aether-federation, aether-multiplayer
│ ├── Social ───────── aether-avatar, aether-social, aether-economy, aether-ugc,
│ │ aether-asset-pipeline
│ ├── Platform ─────── aether-gateway, aether-registry, aether-platform, aether-build,
│ │ aether-openxr, aether-vr-overlay, aether-vr-emulator, aether-cli
│ ├── Safety ───────── aether-security, aether-trust-safety, aether-compliance,
│ │ aether-content-moderation
│ └── Infrastructure ─ aether-deploy, aether-persistence
├── examples/
│ ├── 3d-demo ──────────── Interactive 3D scene with software renderer
│ ├── gpu-demo ─────────── PBR scene rendered with wgpu (shadows, MSAA)
│ ├── multiplayer-demo ─── Server-authoritative multiplayer over QUIC
│ ├── single-world-demo ── Phase 1 integrated demo (render + physics + ECS)
│ ├── vr-emulator-demo ─── PC-based VR emulator with stereo rendering
│ └── quest-debug ──────── Quest 3 debug overlay (in-VR metrics panel)
└── docs/design/ ─────────── 77 design documents
| Crate | Description |
|---|---|
| aether-ecs | Archetype-based ECS with parallel queries, event bus, and network-aware components |
| aether-physics | Rapier3D integration with rigid bodies, joints, triggers, collision layers, and VR interaction physics (grab, throw, hand collision, haptics) |
| aether-renderer | Rendering pipeline with GPU scheduling, foveated rendering, frame budgeting, and a software rasterizer for prototyping |
| aether-audio | Spatial audio with HRTF, Opus codec, acoustic zones, attenuation models, and audio capture |
| aether-input | VR input abstraction with OpenXR session/tracking/haptics, desktop fallback, locomotion comfort policies, and action mapping |
| Crate | Description |
|---|---|
| aether-scripting | WASM script runtime with per-script resource caps, rate limiting, priority scheduling, and world-level orchestration |
| aether-creator-studio | Creator tools: terrain/prop/lighting editors, undo/redo, and a visual scripting editor with node graph, type system, validation, and IR compiler |
| aether-world-editor | In-world editor state, edit modes, project/version tracking — edit 2D and 3D worlds from within VR |
| Crate | Description |
|---|---|
| aether-world-runtime | World lifecycle, chunk-based streaming with LOD, manifest loading, tick scheduling, input buffering, and client-side prediction |
| aether-network | QUIC transport, delta compression, interest management, voice channels, client-side prediction, and server reconciliation |
| aether-zoning | Spatial load balancing with zone split/merge, cross-zone ghost entities, portal system with aether:// URLs, and session handoff |
| aether-federation | Cross-instance interoperability with handshake protocol, server registry, asset transfer, and federated auth |
| aether-multiplayer | Multiplayer prototype integrating QUIC transport with world runtime — server, client, avatar sync, and protocol definitions |
| Crate | Description |
|---|---|
| aether-avatar | Avatar system with skeletal animation, FABRIK IK, blend shapes, lip-sync, LOD, GPU skinning, and performance rating |
| aether-social | Social graph with friends, blocking, groups, presence, real-time chat, and horizontal sharding |
| aether-economy | Double-entry ledger, wallet management, fraud detection, transaction processing, and settlement/payout |
| aether-ugc | User-generated content pipeline: upload, scanning, approval workflow, artifact storage, and moderation integration |
| aether-asset-pipeline | Asset import (glTF), processing, compression, hashing, and bundle packaging |
| Crate | Description |
|---|---|
| aether-gateway | API gateway with auth middleware, rate limiting, geo routing, health checks, and voice relay |
| aether-registry | World discovery, search, ranking, matchmaking, analytics, and portal registration |
| aether-security | Anti-cheat (movement validation, teleport detection, hit validation), JWT auth, encryption, and action rate limiting |
| aether-trust-safety | Runtime safety controls: personal space bubbles, safety zones, visibility filtering, parental controls, and block enforcement |
| aether-content-moderation | Automated scanning (text/image/WASM), human review queue, severity classification, and report system |
| aether-compliance | GDPR data deletion/export, pseudonymization, retention scheduling, and legal hold management |
| aether-platform | Multi-platform client support with capability detection, quality profiles, and platform-specific builds |
| aether-build | Cross-platform build system — Quest 3 APK packaging, Android NDK toolchain, aether build CLI command |
| aether-openxr | OpenXR runtime integration — instance, session, swapchain, input actions, frame loop |
| aether-vr-overlay | Platform-agnostic VR debug overlay — bitmap font renderer, real-time metrics panel (FPS, tracking, controllers) |
| aether-vr-emulator | PC-based VR emulator — window, display, head tracking, and controller emulation for development without a headset |
| aether-cli | aether CLI binary — run demos, build targets, and manage projects without a Rust toolchain |
| aether-deploy | Kubernetes deployment, autoscaling, health probes, failover, and region-aware topology |
| aether-persistence | WAL-backed durable state with PostgreSQL/Redis/NATS backends and ephemeral checkpointing |
Download the latest release for your platform from GitHub Releases, or install with:
curl -fsSL https://raw.githubusercontent.com/<org>/aether/main/install.sh | shThen run:
aether run --list # See available examples
aether run 3d-demo # Launch the 3D demoPrerequisites: Rust (stable toolchain)
cargo build
cargo testTo build and deploy to Meta Quest 3, install the Android SDK command-line tools — Android Studio is not required.
Prerequisites:
| Tool | Install | Purpose |
|---|---|---|
| Android SDK command-line tools | brew install --cask android-commandlinetools |
sdkmanager CLI |
| SDK build-tools | sdkmanager "build-tools;34.0.0" |
aapt2, zipalign, apksigner |
| SDK platform-tools | sdkmanager "platform-tools" |
adb (device install) |
| SDK platform | sdkmanager "platforms;android-32" |
android.jar for manifest |
| Android NDK | sdkmanager "ndk;27.0.12077973" |
clang cross-compiler |
| Rust Android target | rustup target add aarch64-linux-android |
Cross-compilation |
| JDK (for debug signing) | brew install openjdk |
keytool (debug keystore) |
Environment variables (add to ~/.zshrc):
# If installed via Homebrew:
export ANDROID_HOME="/opt/homebrew/share/android-commandlinetools"
# If installed via Android Studio:
# export ANDROID_HOME="$HOME/Library/Android/sdk"
export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/27.0.12077973"Build and deploy:
aether build --target quest # Build debug APK
aether build --target quest --release # Build release APK
aether build --target quest --install # Build + install to connected QuestOutput: target/aether-build/quest/<app-name>-debug.apk
Interactive scene with software renderer, physics, and keyboard controls:
aether run 3d-demo # using pre-built binary
cargo run -p aether-3d-demo # from source| Key | Action |
|---|---|
W A S D |
Move |
| Arrow keys | Orbit camera |
Q / E |
Zoom in / out |
ESC |
Quit |
PBR scene rendered with wgpu (shadows, MSAA, metallic-roughness materials):
cargo run -p gpu-demoServer-authoritative multiplayer with QUIC transport and avatar sync:
cargo run -p multiplayer-demo --bin mp-server # Terminal 1: start server
cargo run -p multiplayer-demo --bin mp-client # Terminal 2: connect clientLive debug panel rendered inside VR on Meta Quest 3 — shows FPS, head tracking, controller positions, and session state:
aether build --target quest --install # Build APK + deploy to QuestToggle the debug panel with the menu button on the left controller. The panel floats 1.5m in front of you as a 0.8m x 0.4m billboard.
The Phase 1 milestone demo — ties together GPU rendering, physics, multiplayer networking, visual scripting, and asset hot-reloading through the ECS:
cargo run -p single-world-demo| Key | Action |
|---|---|
W A S D |
Move camera |
| Arrow keys | Rotate camera |
Space / Shift |
Move up / down |
ESC |
Quit |
Design documentation lives in docs/design/ with 77 documents covering architecture decisions, data models, and implementation plans for every subsystem. Key documents:
- ECS Core Architecture
- Visual Scripting Editor
- Multiplayer Runtime
- WASM Scripting Runtime
- Federation Protocol
- Portal System
- Archetype-based ECS with parallel queries
- Rapier3D physics integration
- Software renderer and interactive 3D demo
- Input handling with OpenXR integration
- Visual scripting editor (node graph + IR compiler)
- VR interaction physics (grab, throw, haptics)
- Avatar rendering pipeline (skinning, blend shapes, LOD)
- Anti-cheat server-side validation
- World chunk streaming system
- Portal system with cross-world navigation
- Server-side WASM runtime with hot-reload
- GPU-accelerated rendering (wgpu)
- Networked multiplayer prototype
- Visual script runtime execution
- Asset hot-reloading
- Quest 3 build pipeline (
aether build --target quest) - VR debug overlay (in-headset metrics panel)
- First public release
Contributions are welcome! Whether it's a bug report, feature request, or pull request — all forms of participation are appreciated.
Please see CONTRIBUTING.md for development setup, coding guidelines, and the PR process.
- Issues — GitHub Issues for bug reports and feature requests
- Discussions — GitHub Discussions for questions and ideas
Aether is licensed under the Apache License, Version 2.0.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you shall be licensed under Apache-2.0, without any additional terms or conditions.

