11# oída
22
3- ` oida ` is a local listening agent for machine ears. It listens to audio files,
4- the microphone, and the computer's own output, routes sound through MOSS-Audio
5- and AKOÚŌ listening paths, extracts measured signal features, and normalizes
6- everything into listening events that can be remembered, questioned, handed to
7- germ as akousmata, or explored in the Sonic Field wiki.
3+ ` oida ` is the unified local agentic listening stack: the AKOÚŌ listening
4+ harness, Earworm provenance and memory protocol, and Akousmata listening
5+ library behind one agent, CLI, gateway, and install. It can listen through its
6+ own optional local engine (including MOSS-Audio plus deterministic DSP), or it
7+ can harness the audio perception already produced by Hermes, Codex, Claude, or
8+ another audio-input-capable host. Both paths produce the same accountable
9+ AKOÚŌ claims, Earworm session context, and optional durable Akousmata memory.
810
911This project was previously named ** AEAR** , then ** hmm** ; it is now ** oída** .
1012The Python package and primary CLI are ` oida ` ; ` hmm ` and ` aear ` remain as
@@ -14,6 +16,22 @@ name **oída**.
1416
1517## What Is Implemented
1618
19+ - ** Unified gateway contract** (` oida/gateway/v0.2 ` ) with two honest perception
20+ paths: Oída-owned audio through ` POST /gateway/listen ` , and host-owned model
21+ perception through ` POST /gateway/harness ` . ` GET /gateway ` advertises the
22+ installed AKOÚŌ, Earworm, and Akousmata contracts; `GET
23+ /gateway/schema/host-perception` publishes the host envelope.
24+ - ** One lifecycle** : ` oida start ` ensures a singleton background gateway,
25+ ` oida agent ` starts it and opens the listening agent, and every stdio MCP
26+ adapter can ensure/reuse that gateway itself. The same process serves the
27+ dashboard, REST API, streamable HTTP MCP at ` /mcp ` , and the complete
28+ Akousmata navigator at ` /library/ ` .
29+ - ** Local host integrations** installed by ` oida integrate ` : a native Hermes
30+ plugin, Codex and Claude plugins, and a mobile-responsive private Tailscale
31+ surface. Their generated MCP configs are pinned to the active Oída runtime,
32+ so they do not depend on shell ` PATH ` or require a second app. Host adapters
33+ start the gateway without prewarming MOSS; the host-perception path stays
34+ lightweight until Oída-owned listening actually needs the local model.
1735- FastAPI daemon (default ` 127.0.0.1:8765 ` ) with task endpoints
1836 (` /transcribe ` , ` /events ` , ` /caption ` , ` /speech ` , ` /music ` , ` /qa ` , ` /think ` ,
1937 ` /report ` ), the listening-event pipeline (` /listen-event ` ,
@@ -45,7 +63,7 @@ name **oída**.
4563- ** germ handoff** (shared akousmata store): after a listen, three actions —
4664 * Sound* , * Prompt* , * Lineage* — persist the listen as an ** akousma** in the
4765 shared store (` ~/Documents/SFL/akousmata ` , via earworm's ` py-akousma ` ) and
48- deep-link germ (` OIDA_GERM_URL ` , default ` http://127.0.0.1:5178/import ` ).
66+ deep-link germ's ` /import ` route (` OIDA_GERM_URL ` , default ` http://127.0.0.1:5178 ` ).
4967 Opt-in song identification (` OIDA_SONGID=1 ` , ShazamIO) enriches the record's
5068 ` extensions.songid ` .
5169- ** Sonic Field bridge** : "Explore in the wiki" searches the wiki, topics,
@@ -68,27 +86,45 @@ name **oída**.
6886 controls float just outside the box and appear on hover. Global hotkeys
6987 default to ⌃⌥L (listen) and ⌃⌥H (show/hide it).
7088- CLI (` oida listen/live/background/memory/chat/sweep/corpus-qa/bench ` ), ` ear `
71- and ` akoe ` helper CLIs, and an MCP server exposing ` oida_* ` tools (legacy
72- ` hmm_* ` /` aear_* ` /` ear_* ` aliases kept).
73- - 113 unit tests that run without model weights.
89+ and ` akoe ` helper CLIs, and an official MCP server exposing compact
90+ ` oida_* ` listening, harness, memory, and live tools (legacy aliases kept on
91+ the HTTP compatibility surface).
92+ - A dependency-light test suite that runs without model weights.
7493
7594## Quick Start
7695
77- Prerequisites: Python 3.12+, ` uv ` , ` ffmpeg ` for non-WAV uploads or browser
78- recordings, and a sibling checkout of ` earworm ` (the ` akousma ` dependency is an
79- editable path source at ` ../earworm/packages/py- akousma` ).
96+ Prerequisites: Python 3.12+, ` uv ` , and ` ffmpeg ` for non-WAV uploads or browser
97+ recordings. From this source workspace, one sync installs Oída together with
98+ the canonical AKOÚŌ, Earworm/ akousma, and Akousmata packages:
8099
81100``` bash
82- uv sync --extra dev
101+ uv sync --extra dev --extra moss
83102```
84103
85- Run the daemon (MOSS-Audio on Apple Silicon is the default profile) :
104+ Start the singleton gateway, then open the agent or library :
86105
87106``` bash
88- uv run oida --host 127.0.0.1 --port 8765 # add --profile stub for a model-free dev run
107+ uv run oida start # add --profile stub for model-free use
108+ uv run oida agent
109+ uv run oida agent --library
89110```
90111
91- Open the dashboard at ` http://127.0.0.1:8765 ` .
112+ ` oida ` or ` oida serve ` still runs the same system in the foreground. The local
113+ dashboard is ` http://127.0.0.1:8765 ` , the library is ` /library/ ` , REST gateway
114+ discovery is ` /gateway ` , and streamable HTTP MCP is ` /mcp ` .
115+
116+ Install the local adapters (each host can then start/reuse Oída automatically):
117+
118+ ``` bash
119+ uv run oida integrate hermes
120+ uv run oida integrate codex
121+ uv run oida integrate claude
122+ uv run oida integrate remote --serve # private responsive UI via Tailscale
123+ uv run oida doctor
124+ ```
125+
126+ No native iOS or cloud service is required: open the reported Tailscale URL on
127+ the phone to use it as the microphone, speaker, screen, and remote control.
92128
93129Generate a normalized listening event:
94130
@@ -98,6 +134,11 @@ curl -s http://127.0.0.1:8765/listen-event \
98134 -d ' {"path":"/path/to/clip.wav","route_preset":"basic"}'
99135```
100136
137+ An audio-capable host can keep perception in its own model and send a declared
138+ report to ` /gateway/harness ` ; see [ the gateway contract] ( docs/gateway-contract.md )
139+ for the schema and examples. MOSS is therefore an optimized local backend, not
140+ a requirement for the harness path.
141+
101142Routed local session, live ring buffer, and background runtime:
102143
103144``` bash
@@ -204,7 +245,11 @@ akousmata store is written only by the explicit germ handoff actions.
204245 (` PLAN.md ` keeps the historical OIDA phases).
205246- ` docs/release-readiness.md ` — what ` scripts/run_local_checks.sh release `
206247 validates.
248+ - ` docs/gateway-contract.md ` — lifecycle, host-perception envelope, and local
249+ integration boundaries.
250+ - ` integrations/ ` — the bundled Hermes, Codex, Claude, and remote adapters.
207251- CI (` .github/workflows/ci.yml ` ) runs pytest, compileall, a JS syntax check,
208252 the Swift build (including strict concurrency), packaging, and the stub
209- daemon release smoke. The ` akousma ` path dependency requires ` earworm `
210- checked out as a sibling.
253+ daemon release smoke. Development uses canonical sibling sources; the Oída
254+ distribution declares them as versioned dependencies so they are installed
255+ as one stack rather than copied into divergent forks.
0 commit comments