One oracle, many voices. Install the core on any OS and that OS becomes an Aether OS.
The invariant
AetherCodex is the native macOS face of a larger system. The brain is not baked into the editor — it lives in AetherOracle, a portable RubyGem. Install that gem on any machine and it becomes an Aether OS: the same reasoning substrate, the same memory, the same council, everywhere.
There is one oracle; Pythia is its voice. Every turn resolves to
POST /aether/invoke on some host that carries the core. There is no
client/server split — only the aether, and the shells that open onto it.
The layers
The core (AetherOracle)
A single gem, two tiers:
| Tier | Contents | Needs |
|---|---|---|
| Brain tier | ask, server, config, task, logs, repl — the daemon, the oracle, Mnemosyne, the instrumentarium |
the brain gems (auto-installed) |
| Link tier | peers, heartbeat, invoke — pure Ruby stdlib |
nothing but Ruby |
The link tier is the aetherlink surface: a minimal box with only Ruby can reach the brain on a Mac over the same wire contract. This is how iOS reaches the oracle — there is no daemon on iOS; the companion finds a peer’s daemon over the LAN.
Installing the gem registers seven aliases, all the same aether:
aetheroracle · aether · oracle · oracleaether · ae · aero · orae
## The daemon
The brain’s running form is ruby/standalone_daemon.rb. AetherOracle owns the
implementation and the per-OS lifecycle shims
(platform/{darwin,ios,windows,linux}); the native shells own the policy —
when to start, when to stop, how to respond to a crash. On macOS the editor
spawns the daemon as a child NSTask; Windows and Linux do the equivalent; iOS
reports canRunDaemon == false.
The resources
The visual grammar is shared data, not macOS-only assets:
resources/Themes— YAML themes (the syntax renaissance)resources/Syntax— TextMate grammars + tree-sitter queriesresources/Fonts— the typography of the athanortreesitter/— the C tree-sitter engine + grammars (portable C, used by SwiftPM)