A hardware-accelerated orchestration sanctum for your local AI agent ecosystem.
Aether is a fullscreen desktop GUI built in C++20 with Raylib and Dear ImGui. It scans your ~/Projects/ directory for Gemini CLI agents, skills, and chains, tails live agent session logs in real time, and surfaces everything through a tabbed interface backed by a reactive particle system.
Runs on Fedora Asahi (ARM64) and CachyOS (x86_64).
| Tab | Purpose |
|---|---|
| The Crystal Ball | AI-generated insights and warnings about your ecosystem — unassigned skills, empty chains, agent health |
| The Weaver's Loom | Edit and persist Agent Chains as YAML; modify step agents and missions inline |
| The Akashic Records | Live, filtered chronicle of active agent sessions streamed from .gemini/tmp/ |
| The Forge | Scaffold new agents with a name, write the .agent.md, and trigger the Forge Ritual animation |
| Navigator | Search projects and open any directory directly in a terminal |
| System Console | Raw log view of all chronicle entries including internal agent thoughts |
Dependencies are fetched automatically on first build via CMake FetchContent (~968 MB into build/_deps/).
mkdir -p build && cd build
cmake ..
cmake --build .Run the binary from the project root:
./build/aetherThe binary must be launched from the project root so relative paths to
media/resolve correctly.
Registers Aether as a desktop application with your app menu:
./setup.shThis writes a .desktop entry to ~/.local/share/applications/ and sets media/app-icon.jpg as the application icon.
To launch without the app menu:
./hub-gui.shTwo namespaces: gemini::core (data and logic) and gemini::rendering (UI and display).
HubEngine— Scans~/Projects/*/for.gemini/skills/,.gemini/agents/, and policy files. Tails~/.gemini/tmp/daripper/chats/*.jsonlfor live agent messages. Saves and loads Agent Chains as YAML inchains/. Filters secrets and masks absolute paths.CrystalBall— Generates warnings and recommendations from the current ecosystem snapshot.ParticleSystem— 1000-particle physics simulation with velocity, gravity, damping, and attraction points that pull toward hovered UI windows.
ImGuiLayer— All UI logic. Six-tab fullscreen hub. Loads background textures and icons frommedia/.VideoPlayer— Frame-sequence animation player with WAV audio sync. Used for the loading screen (media/loading_frames/) and Forge Ritual (media/agent_frames/).ParticleRenderer— Raylib circle rendering with additive glow rings.
Three states: loading animation → optional Forge Ritual → main tabbed UI. Skippable with Space or Escape. Raylib owns the window in FLAG_FULLSCREEN_MODE; ImGui draws inside it via rlImGui.
All assets live under media/:
media/
├── app-icon.jpg # App menu icon
├── splash.png # Background texture
├── loading_sound.wav # Loading screen audio
├── agent_sound.wav # Forge Ritual audio
├── loading_frames/ # Loading animation (PNG sequence)
└── agent_frames/ # Forge Ritual animation (PNG sequence)
CMake detects the host architecture and applies flags automatically:
- ARM64 (Fedora Asahi):
-march=armv8-a+crc+crypto -mcpu=apple-m1 - x86_64 (CachyOS):
-march=native -O3
Wayland and X11 are both linked on Linux. The Navigator tab opens a kgx (GNOME Console) terminal for project directories.
Testing is manual. Build, launch, and verify each tab. There is no automated test runner.
