## Sesame local voice interface progress (2026-02-22)

- Continued Sesame voice setup from BOOTSTRAP context, focusing on fully local/free operation without gated `sesame/csm-1b` access.
- Implemented CSM->Dia fallback + `TTS_ENGINE=auto` behavior in `/home/pmello/sesame_csm_openai/app/main.py`.
- Added local STT->TTS helper script: `/home/pmello/sesame_csm_openai/scripts/local_stt_tts_loop.py`.
- Updated README with local fallback run steps.

### Key blockers/fixes encountered

1. **Permission errors writing to `/app` on host runs**
   - Added writable host fallback via `APP_DATA_DIR` in `app/main.py`.
   - Also patched `app/voice_cloning.py` to respect host writable data dir fallback.

2. **Dia config mismatch** (`decoder_config`/`encoder_config` missing)
   - Added config normalization in `app/main.py` to convert downloaded Dia config format into the currently installed Dia package schema (`config.normalized.json`).

3. **Wrong DAC package installed**
   - `dac` package conflict caused `module 'dac' has no attribute 'utils'`.
   - Removed wrong `dac`; installed `descript-audio-codec` so Dia can load DAC utilities.

4. **Audio export failures in API**
   - `/v1/audio/speech` was failing with 500 because torchaudio required unavailable torchcodec encoder path.
   - Patched `/home/pmello/sesame_csm_openai/app/api/routes.py` to use `soundfile` (`sf.write`) for WAV intermediary/output instead of `torchaudio.save`.

### Current runtime state

- Dia model downloads and loads locally on GPU; `/health` reports healthy with sample rate 44100.
- TTS generation request now completes and successfully produced:
  - `/home/pmello/sesame_csm_openai/outputs/telegram_sesame.wav` (about 2.6 MB)

### Remaining issue

- Could not send local media file via OpenClaw `message` tool due allowlist restriction: local file paths are rejected as “not under an allowed directory” in this runtime.
- User explicitly requested sending the voice note directly in chat; workaround still needed for attachment delivery path.
## 2026-02-22T21:43:31-05:00 | Agent ops triage
- tags: agent-ops,triage,routing
- note: |
  triage_report=/home/pmello/.openclaw/workspace-codex/reports/agent_ops/triage_20260222_214322.md
  status=ok
  requested_mode=normal
  recommended_mode=conserve
  routing_policy=local-first-small-models
  failure_path=tools/agent_ops
  failure_hours=48
  failure_limit=5
  device_rc=0 failure_rc=0 ollama_rc=0
  latest_budget_hint=remaining=12%

## 2026-02-22T22:10:50-05:00 | Agent ops triage
- tags: agent-ops,triage,routing
- note: |
  triage_report=/home/pmello/.openclaw/workspace-codex/reports/agent_ops/triage_MILESTONEA_SMOKE.md
  status=ok
  requested_mode=normal
  recommended_mode=normal
  routing_policy=balanced-local-routing
  failure_path=tools/agent_ops
  failure_hours=2
  failure_limit=3
  device_rc=0 failure_rc=0 ollama_rc=0
  latest_budget_hint=none
  report_summary_only=1