hydra

Terminal replacement for Loopback — virtual audio devices and routing on macOS, from a ratatui TUI.
Log | Files | Refs | README | LICENSE

commit 21f92d59929b93ecfbaba98b020465929c672148
parent b8282cab4a1d246263fbcb6b4475ae7f82e01515
Author: Matthew Gantenbein <ganten1998@gmail.com>
Date:   Mon,  1 Jun 2026 15:31:39 -0500

docs: README reflects full feature set + complete keymap

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Diffstat:
MREADME.md | 34+++++++++++++++++++++++++---------
1 file changed, 25 insertions(+), 9 deletions(-)

diff --git a/README.md b/README.md @@ -21,13 +21,25 @@ theme, swappable. The daemon runs as a per-user **LaunchAgent** (GUI session — required for tap TCC consent). Clients talk to it over `~/Library/Application Support/hydra/hydrad.sock`. -## Status - -Working: per-app audio **capture → monitor** (verified on real hardware), **combine** -multiple apps into one route, live gain/mute, peak meters, route **persistence** across -restarts, a `query` subcommand + SketchyBar widget, and a buildable+signed virtual-audio -**driver** that makes "Hydra" selectable as an input in other apps. See `TESTING.md` for -what's verified vs. what needs your one-time approval. +## Status — a working, self-healing Loopback replacement + +Features (all verified on real hardware unless noted): +- **Per-app capture → virtual mic** — route any app's audio into "Hydra" (2ch / 44.1 kHz, + stereo-confirmed) so other apps (Discord/Vesktop, Zoom, OBS) pick it as an input. +- **Monitor** — or route to your speakers/interface to hear it. +- **Combine** — `c` mixes several apps into one route (shared gain); `C` starts each as a + **separate route** to the same device for independent per-source volume/mute/record. +- **Presets** — `P` save the whole routing setup, `p` recall it in one keystroke. +- **Record any route to WAV** — `R` → `~/Music/Hydra/`. +- **Rename the device** — `n`. +- **dB-scaled meters** with peak-hold; **SketchyBar widget**; `hydra query` subcommand. +- **Self-healing** — a supervisor rebuilds routes after a coreaudiod restart / driver + reinstall, and the LaunchAgent (RunAtLoad + KeepAlive) survives crashes and reboots. + Set a route once; it stays up. (The live coreaudiod-rebuild path is proven by unit test + + no-thrash run; its full end-to-end confirmation is the next real driver reinstall.) + +See `TESTING.md` for the verified-vs-user-gated breakdown and `diagnostics/` for the +audio-debugging toolkit. ## Install @@ -48,8 +60,12 @@ cargo run -p hydra # terminal 2: the TUI cargo test # unit tests ``` -TUI keys: `↑↓` select · `⏎` monitor · `␣` mark · `c` combine · `o` output · `a` all apps · -`⇥` switch pane · `m` mute · `+/-` gain · `d` stop · `q` quit. +TUI keys: +- **Apps pane:** `↑↓` select · `⏎` monitor selected · `␣` mark · `c` mix marked into one + route · `C` separate route each · `o` cycle output · `a` show all apps · `n` rename device · + `p` presets · `P` save preset +- **Routes pane** (`⇥` to switch): `↑↓` select · `m` mute · `+/-` gain · `R` record · `d` stop +- **Always:** `r` refresh · `q` quit Swap the theme: copy `themes/navi.toml` to `~/Library/Application Support/hydra/theme.toml`.