Skip to content

Commit 7800bc1

Browse files
committed
Rename hmm → oída across package, app, routes, env and docs
- Python package aear/ → oida/; primary CLI 'oida' (+ 'oida-daemon'), keeping 'hmm'/'aear' as backward-compat aliases. - Env vars: OIDA_* primary with HMM_*/AEAR_* fallbacks (config + harness). - macOS shell: HmmMacOS → OidaMacOS target ('oida-macos'); builds clean. - Route /hmm/status → /oida/status; server identity, journal, UI titles read oída. - Data dir prefers Application Support/oida, falls back to legacy hmm dir. - Sonic Field bridge resolves ~/Documents/SFL/sonicfield (post-reorg path). - Untracked build artifacts (.build/, dist/) that were committed pre-ignore. - 103 unit tests pass; app.js + compileall + swift build verified.
1 parent 4e06cfe commit 7800bc1

103 files changed

Lines changed: 621 additions & 569 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
HMM_ENGINE_PROFILE=mac-mps
2-
HMM_AUDIO_DIR=~/Documents/hmm/audio
3-
HMM_MOSS_PREWARM=1
4-
HMM_SONICFIELD_ROOT=~/Documents/sonicfield
5-
AEAR_SERVER_URL=http://127.0.0.1:8765
6-
AEAR_AKOUO_ROOT=~/Documents/sfl/akouo
7-
AEAR_MOSS_AUDIO_REPO=./MOSS-Audio
8-
AEAR_MOSS_INSTRUCT_MODEL=./weights/MOSS-Audio-4B-Instruct
9-
AEAR_MOSS_THINKING_MODEL=./weights/MOSS-Audio-4B-Thinking
10-
AEAR_MOSS_RESIDENT=single
11-
AEAR_SGLANG_BASE_URL=http://127.0.0.1:30000
1+
# oída environment configuration.
2+
# OIDA_* is primary; legacy HMM_*/AEAR_* remain honored as fallbacks.
3+
OIDA_ENGINE_PROFILE=mac-mps
4+
OIDA_AUDIO_DIR=~/Documents/oida/audio
5+
OIDA_MOSS_PREWARM=1
6+
OIDA_SONICFIELD_ROOT=~/Documents/SFL/sonicfield
7+
OIDA_AKOUO_ROOT=~/Documents/SFL/akouo
8+
OIDA_SERVER_URL=http://127.0.0.1:8765
9+
OIDA_MOSS_AUDIO_REPO=./MOSS-Audio
10+
OIDA_MOSS_INSTRUCT_MODEL=./weights/MOSS-Audio-4B-Instruct
11+
OIDA_MOSS_THINKING_MODEL=./weights/MOSS-Audio-4B-Thinking
12+
OIDA_MOSS_RESIDENT=single
13+
OIDA_SGLANG_BASE_URL=http://127.0.0.1:30000
1214
DYLD_LIBRARY_PATH=/opt/homebrew/lib

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ jobs:
2727
uv run pytest -q
2828
2929
- name: Compile Python modules
30-
run: uv run python -m compileall -q aear harness bench_adapter scripts tests
30+
run: uv run python -m compileall -q oida harness bench_adapter scripts tests
3131

3232
- name: Check dashboard JavaScript
33-
run: node --check aear/static/app.js
33+
run: node --check oida/static/app.js
3434

3535
- name: Build macOS shell
3636
working-directory: apps/macos

CHANGELOG.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,20 @@
22

33
## 0.2.0 - Unreleased
44

5+
- **Renamed the project `hmm``oída`** (part of the Sonic Field "sonic
6+
evolution"). Python package `aear``oida`; primary CLI `oida`
7+
(`oida-daemon`), with `hmm`/`aear` kept as aliases. Environment variables use
8+
the `OIDA_*` prefix first, falling back to `HMM_*`/`AEAR_*`. macOS shell target
9+
renamed `HmmMacOS``OidaMacOS` (`oida-macos`). Status route `/hmm/status`
10+
`/oida/status`; server identity, journal headers, and UI titles now read
11+
`oída`. Data directory prefers `~/Library/Application Support/oida`, falling
12+
back to a pre-rename `hmm` directory so existing listening memory is not
13+
orphaned. The Sonic Field bridge now resolves `~/Documents/SFL/sonicfield`.
14+
515
- Made `mac-mps` the default engine everywhere (daemon, macOS shell, env
616
examples); the daemon prewarms MOSS-Audio-4B-Instruct in the background and
717
reports readiness at `/engine/status` (`HMM_MOSS_PREWARM=0` disables).
8-
- Added the deterministic **signal listener** (`aear/signal_listener.py`):
18+
- Added the deterministic **signal listener** (`oida/signal_listener.py`):
919
DSP-only classification (silence / speech-like / music-like / tonal /
1020
percussive / noise / ambient), honest captions, and inferred hypotheses with
1121
numeric bases. Perception never falls back to placeholder text; without a
@@ -16,14 +26,14 @@
1626
- Chunked mac-mps inference at 45 s per pass (`HMM_MOSS_CHUNK_SECONDS`), with a
1727
decode-degeneracy guard that discards token-soup output instead of letting it
1828
become claims, and a tokenizer-safe decode fallback.
19-
- Added Sonic Field bridge (`aear/sonicfield.py`, `/sonicfield/*`): after a
29+
- Added Sonic Field bridge (`oida/sonicfield.py`, `/sonicfield/*`): after a
2030
listen, "Explore in the wiki" searches the wiki/lexicon, topics, journal,
2131
93k-item library, paths, research, notes, and labs for related concepts,
2232
with taxonomy alias normalization and Finder reveal.
2333
- Added `/events/stream` (SSE) so every surface mirrors one daemon state, and
2434
`/background/capture-request` so the web dashboard can ask the native shell
2535
to capture system audio.
26-
- Default audio directory moved to `~/Documents/hmm/audio`
36+
- Default audio directory moved to `~/Documents/oida/audio`
2737
(`HMM_AUDIO_DIR`); captures, uploads, and fixtures land there.
2838
- Rebuilt the dashboard as one Listen surface (source + presets + skill
2939
manager), claims rendered by AKOUO category, memory and history cards, and a
@@ -38,7 +48,7 @@
3848
## 0.1.0 - Unreleased
3949

4050
- Added platform data directory support through `HMM_DATA_DIR` / `AEAR_DATA_DIR`
41-
with macOS default `~/Library/Application Support/hmm`.
51+
with macOS default `~/Library/Application Support/oida`.
4252
- Disabled implicit Hugging Face hub model fallback unless explicitly enabled.
4353
- Added bearer-token enforcement for wildcard/LAN daemon binds.
4454
- Added raw-audio status and wipe endpoints for local upload/live-buffer

CITATION.cff

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
cff-version: 1.2.0
2-
title: "hmm: local listening agent for the Listening Stack"
3-
message: "If you use hmm in research, please cite the software and the Listening Stack paper."
2+
title: "oida: local listening agent for the Listening Stack"
3+
message: "If you use oida in research, please cite the software and the Listening Stack paper."
44
type: software
55
authors:
66
- name: "Sonic Field Labs"
77
version: 0.1.0
88
date-released: 2026-07-02
99
license: Apache-2.0
10-
repository-code: "https://github.com/sonicfieldlabs/hmm"
10+
repository-code: "https://github.com/sonicfieldlabs/oida"
1111
preferred-citation:
1212
type: article
1313
title: "The Listening Stack: Agentic Sonic Computation for Hybrid Listening Ecologies"

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Contributing
22

3-
`hmm` is a local-first listening agent. Changes should preserve four contracts:
3+
`oida` is a local-first listening agent. Changes should preserve four contracts:
44

55
- Raw audio never leaves the operator machine by default.
66
- Raw audio retention and deletion paths stay explicit and testable.

PLAN.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# hmm Implementation Plan (historical AEAR phases)
1+
# oida Implementation Plan (historical OIDA phases)
22

33
This file tracks the `mossagent.md` plan as implemented in this repository,
4-
written under the project's earlier name AEAR and kept as a phase log. For the
4+
written under the project's earlier name OIDA and kept as a phase log. For the
55
current architecture map, see `docs/architecture/current-state.md`.
66

77
## Phase 0 - Feasibility Spike
@@ -21,7 +21,7 @@ Acceptance target from source plan: dense caption of a 60 s field recording on
2121
this Mac in tolerable wall time, target under 60 s. If slower, use
2222
`cuda-server` or 4B-Instruct-only.
2323

24-
## Phase 1 - AEAR Daemon
24+
## Phase 1 - OIDA Daemon
2525

2626
- Implemented FastAPI server and task endpoints.
2727
- Implemented `PerceptionReport` schema.
@@ -47,20 +47,20 @@ tempo disagreement yields an `undetermined` contradiction.
4747

4848
- Implemented read-only AKOUO skill/schema loader.
4949
- Implemented routing-plan and command-output builder.
50-
- Implemented `aear listen` session writer with `PerceptionReport.json`,
50+
- Implemented `oida listen` session writer with `PerceptionReport.json`,
5151
`command-output.json`, `listening-output.json`, and `journal.md`.
5252
- Implemented `/listen`, `/tech`, `/voice`, `/field`, `/forensic`, and
5353
`/one-sound-many-ears` routing defaults.
5454

55-
Acceptance target: `aear listen field.wav --command /field` produces schema
55+
Acceptance target: `oida listen field.wav --command /field` produces schema
5656
valid command output with category, confidence, and basis for every claim.
5757

5858
## Phase 4 - Dialogic And Corpus Modes
5959

60-
- Implemented `aear chat` transcript/journal workflow with retained session
60+
- Implemented `oida chat` transcript/journal workflow with retained session
6161
context across turns.
62-
- Implemented `aear sweep`, lexicon builder, merged corpus timeline output, and
63-
deterministic `aear corpus-qa` over timeline artifacts.
62+
- Implemented `oida sweep`, lexicon builder, merged corpus timeline output, and
63+
deterministic `oida corpus-qa` over timeline artifacts.
6464

6565
## Phase 5 - Live Mode And Panel
6666

@@ -69,7 +69,7 @@ valid command output with category, confidence, and basis for every claim.
6969

7070
## Hard Rules
7171

72-
- Do not edit AKOUO from AEAR.
72+
- Do not edit AKOUO from OIDA.
7373
- MOSS output is evidence, not a claim.
7474
- The claim taxonomy remains the safety boundary.
7575
- Contradiction becomes `undetermined`; it is never silently resolved.

README.md

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
# hmm
1+
# oída
22

3-
`hmm` is a local listening agent for machine ears. It listens to audio files,
3+
`oida` is a local listening agent for machine ears. It listens to audio files,
44
browser microphone input, and captured live buffers, routes sound through
55
MOSS-Audio and AKOÚŌ listening paths, extracts measured signal features, and
66
normalizes results into listening events that can be saved as Akousmata memory.
77

8-
This repository was previously named AEAR. The Python package still uses
9-
`aear` internally for compatibility, and the legacy `aear` CLI remains available.
10-
New user-facing commands and UI copy use lowercase `hmm`.
8+
This project was previously named **AEAR**, then **hmm**; it is now **oída**.
9+
The Python package and primary CLI are `oida`; the `hmm` and `aear` commands
10+
remain available as backward-compatible aliases, and `OIDA_*` environment
11+
variables are read first with `HMM_*`/`AEAR_*` honored as fallbacks. UI copy
12+
uses the accented display name **oída**.
1113

1214
## What Is Implemented
1315

@@ -21,7 +23,7 @@ New user-facing commands and UI copy use lowercase `hmm`.
2123
silence/clipping, zero-crossing, centroid/rolloff/flatness, band energy,
2224
onsets/BPM candidate, and stereo correlation/width/balance.
2325
- Canonical `AudioSegment`, `AudioSourceDescriptor`, and `ListeningEvent`
24-
contracts for `hmm` workflows.
26+
contracts for `oida` workflows.
2527
- Source registry for live input, file input, captured buffers, and explicit
2628
system-output fallback status.
2729
- Live local ring buffer with quick "capture last N seconds" extraction.
@@ -62,7 +64,7 @@ uv sync --extra dev
6264
Run the daemon (MOSS-Audio on Apple Silicon is the default profile):
6365

6466
```bash
65-
uv run hmm --host 127.0.0.1 --port 8765 # add --profile stub for a model-free dev run
67+
uv run oida --host 127.0.0.1 --port 8765 # add --profile stub for a model-free dev run
6668
```
6769

6870
Open the dashboard:
@@ -74,33 +76,33 @@ http://127.0.0.1:8765
7476
Generate a normalized listening event:
7577

7678
```bash
77-
uv run python -c "import numpy as np, soundfile as sf; t=np.arange(16000)/16000; sf.write('/tmp/hmm-tone.wav',(0.15*np.sin(2*np.pi*440*t)).astype('float32'),16000)"
79+
uv run python -c "import numpy as np, soundfile as sf; t=np.arange(16000)/16000; sf.write('/tmp/oida-tone.wav',(0.15*np.sin(2*np.pi*440*t)).astype('float32'),16000)"
7880
curl -s http://127.0.0.1:8765/listen-event \
7981
-H 'content-type: application/json' \
80-
-d '{"path":"/tmp/hmm-tone.wav","route_preset":"basic"}'
82+
-d '{"path":"/tmp/oida-tone.wav","route_preset":"basic"}'
8183
```
8284

8385
Run a routed local session and write `sessions/<stamp>-<slug>/`:
8486

8587
```bash
86-
uv run hmm listen path/to/clip.wav --command /listen --server http://127.0.0.1:8765
88+
uv run oida listen path/to/clip.wav --command /listen --server http://127.0.0.1:8765
8789
```
8890

8991
Start and inspect a local live ring-buffer session:
9092

9193
```bash
92-
uv run hmm live --start
93-
uv run hmm live --status <session_id>
94-
uv run hmm live --stop <session_id>
94+
uv run oida live --start
95+
uv run oida live --status <session_id>
96+
uv run oida live --stop <session_id>
9597
```
9698

9799
Control the background runtime:
98100

99101
```bash
100-
uv run hmm background status
101-
uv run hmm background pause
102-
uv run hmm background resume
103-
uv run hmm background capture --seconds 10 --route-preset basic
102+
uv run oida background status
103+
uv run oida background pause
104+
uv run oida background resume
105+
uv run oida background capture --seconds 10 --route-preset basic
104106
```
105107

106108
The background runtime is daemon-side in this phase. It can keep state, track the
@@ -114,7 +116,7 @@ Run the native macOS shell:
114116
apps/macos/script/build_and_run.sh
115117
```
116118

117-
The shell stages `apps/macos/dist/hmm.app`, adds a menu bar extra, opens the
119+
The shell stages `apps/macos/dist/oida.app`, adds a menu bar extra, opens the
118120
dashboard, triggers background quick capture, and exposes an optional global
119121
hotkey in Settings. If the daemon is offline, the shell starts one automatically with the
120122
`mac-mps` profile. Launch at login is
@@ -129,9 +131,9 @@ captures are listed at `/native/system-audio/temp` and can be removed through
129131
`/native/system-audio/cleanup`; the macOS shell exposes this as Clean Temp.
130132
Native source-route profiles are exposed at `/native/system-audio/routes`; the
131133
current route is `display_mix`, meaning the selected display's system mix with
132-
the hmm process excluded.
134+
the oida process excluded.
133135

134-
Raw browser uploads and live chunks are stored under the configured hmm data
136+
Raw browser uploads and live chunks are stored under the configured oida data
135137
directory, not the source checkout. Inspect them with `/raw-audio/status` and
136138
delete them with `/raw-audio/wipe`; the dashboard exposes this as Wipe raw
137139
audio. Recordings written by older builds into the checkout's `uploads/` are
@@ -164,7 +166,7 @@ Existing listening events can be rerun through a different preset with
164166
new audio. Rerun responses include a conservative route comparison over route
165167
ids, summary changes, warnings, deterministic DSP deltas, and applied comparison
166168
filters. The daemon also keeps a bounded recent-result list at
167-
`/background/history`, persists derived event JSON under the configured hmm data
169+
`/background/history`, persists derived event JSON under the configured oida data
168170
directory, and excludes incognito events from that durable history by default.
169171
Pinned recent results are persisted separately from the rolling recent list, and
170172
`/background/history/export`, `/background/history/pin`,
@@ -201,10 +203,10 @@ DSP feature similarity when embeddings are not available.
201203
Dashboard controls cover remember, forget, search, open, and export. CLI access:
202204

203205
```bash
204-
uv run hmm memory list
205-
uv run hmm memory search "machine hum"
206-
uv run hmm memory export
207-
uv run hmm memory forget <trace_id>
206+
uv run oida memory list
207+
uv run oida memory search "machine hum"
208+
uv run oida memory export
209+
uv run oida memory forget <trace_id>
208210
```
209211

210212
See `docs/akousmata-memory.md`.
@@ -229,7 +231,7 @@ the daemon, native system-output signal meters, and memory-match state.
229231
## System Audio In This Phase
230232

231233
The current dashboard runs in the browser, so it cannot directly capture macOS
232-
system output. `hmm` supports system audio now through a visible loopback-device
234+
system output. `oida` supports system audio now through a visible loopback-device
233235
workflow:
234236

235237
1. Install or enable a virtual loopback input such as BlackHole, Loopback, or
@@ -259,7 +261,7 @@ The `mac-mps` adapter expects the official MOSS-Audio repository classes:
259261
- `MossAudioProcessor`
260262
- `load_audio`
261263

262-
The local setup script sets these environment variables before starting `hmm`:
264+
The local setup script sets these environment variables before starting `oida`:
263265

264266
```bash
265267
export AEAR_MOSS_AUDIO_REPO="$PWD/MOSS-Audio"
@@ -281,32 +283,32 @@ and sets `audio_input_mask = input_ids == processor.audio_token_id`.
281283
`AEAR_MOSS_RESIDENT=single` hot-swaps Instruct and Thinking instead of keeping
282284
both 4B models resident.
283285

284-
`hmm` will not silently download model code or weights. If the local `weights/`
286+
`oida` will not silently download model code or weights. If the local `weights/`
285287
paths are absent, the `mac-mps` profile falls back to the stub engine unless
286288
`AEAR_REQUIRE_MODEL=1` is set, and Hugging Face hub lookup is refused unless
287289
`HMM_ALLOW_HF_HUB=1` or `AEAR_ALLOW_HF_HUB=1` is set. `HF_HUB_OFFLINE=1` always
288290
keeps hub lookup disabled.
289291

290292
## CUDA/SGLang Profile
291293

292-
Start the official MOSS-Audio SGLang fork separately, then point `hmm` at it:
294+
Start the official MOSS-Audio SGLang fork separately, then point `oida` at it:
293295

294296
```bash
295297
export AEAR_SGLANG_BASE_URL=http://127.0.0.1:30000
296-
uv run hmm --profile cuda-server
298+
uv run oida --profile cuda-server
297299
```
298300

299301
Thinking budgets are forwarded through `custom_params.thinking_budget`.
300302

301303
## Privacy Defaults
302304

303-
`hmm` is local-first. The daemon binds to `127.0.0.1` by default and does not
305+
`oida` is local-first. The daemon binds to `127.0.0.1` by default and does not
304306
upload audio. If you bind to `0.0.0.0` or `::`, the daemon refuses to start
305307
unless `HMM_AUTH_TOKEN` or `AEAR_AUTH_TOKEN` is set; clients then send
306308
`Authorization: Bearer <token>`.
307309

308-
Persistent local data defaults to `~/Library/Application Support/hmm` on macOS,
309-
or `$XDG_DATA_HOME/hmm` / `~/.local/share/hmm` elsewhere. Override it with
310+
Persistent local data defaults to `~/Library/Application Support/oida` on macOS,
311+
or `$XDG_DATA_HOME/oida` / `~/.local/share/oida` elsewhere. Override it with
310312
`HMM_DATA_DIR` or `AEAR_DATA_DIR`.
311313

312314
Background-style buffers are ephemeral by product policy, but browser live

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ and whether raw audio or private listening traces can be exposed.
1313

1414
## Local-First Boundaries
1515

16-
`hmm` binds to `127.0.0.1` by default. Wildcard or LAN binds are refused unless
16+
`oida` binds to `127.0.0.1` by default. Wildcard or LAN binds are refused unless
1717
`HMM_AUTH_TOKEN` or `AEAR_AUTH_TOKEN` is set, and token-protected clients must
1818
send `Authorization: Bearer <token>`.
1919

aear/__init__.py

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)