3.9 KiB
3.9 KiB
AGENTS.md
Purpose
Mimir is the public face of this repo: the local realtime field machine for turning cameras, microphones, speakers, and timing signals into one coherent OBS-facing volumetric program surface.
Some native ABI names still use localcast until a deliberate rename cut exists.
Keep this repo blunt. The goal is not to fork OBS for sport. Use existing OBS and FFmpeg surfaces until a real invariant is impossible without native code.
For the persistent Mimir Face agent identity, voice, jurisdiction, avatar, and
VoidBot heartbeat contract, read docs/mimir-face.md.
Persistence Scaffolding
- Treat
state/map.yamlas the canonical current map for this repo. - Treat
state/scratch.mdas disposable scratch for one bounded subgoal. - Treat
state/evidence.jsonlas the distilled durable ledger of decisions, verifications, rejected paths, and scars that change future belief. - Treat
state/branches.jsonas the lightweight branch/hypothesis ledger. - Treat
notes/fresh-workspace-handoff.mdas the short re-entry packet. - Treat
notes/current-system-map.mdas the current source-grounded architecture and data-flow map. - Treat
docs/implementation-plan.mdas the forward plan for what is implemented, temporary, and next. - Treat
docs/mimir-face.mdas the persistent Face memory for the Mimir agent. - Update
state/map.yamlwhen project understanding changes. Add evidence only when the lesson changes what the next agent should believe. - Keep exact branch and HEAD snapshots out of handoff prose. Git commands own volatile truth.
- Commit
.voidbotstate whenever it is dirty, even if you did not create the changes. Put it in a separate state commit so Face memory and status do not stay stranded as local-only residue.
Session Bootstrap And Re-entry Protocol
On a fresh session, do this before editing:
- read:
state/map.yamlnotes/fresh-workspace-handoff.mdnotes/current-system-map.mddocs/implementation-plan.md
- run:
git status --short --branchgit log --oneline -5Get-Content .\state\evidence.jsonl -Tail 8
- restate the current mechanism, intended change, and next bounded move before broad edits
After compaction, resume, or suspicious continuity loss:
- rerun
git status --short --branch - reread
state/map.yamlandnotes/fresh-workspace-handoff.md - treat the persisted next action as orientation, not permission to wander
When the user says to prepare for imminent compaction:
- immediately write the hot context into a collision-proof scratch file under
state/ - use
state/map.yaml,notes/fresh-workspace-handoff.md,notes/current-system-map.md,state/scratch.md,state/evidence.jsonl, and git status as the checklist for map, handoff, scratch, evidence, and git hygiene - update only the state that actually changed
- commit the completed persistence pass unless the work is deliberately mid-surgery
Operating Discipline
- Before substantial edits, restate the current mechanism and intended change.
- Prefer one clear hypothesis per iteration.
- Verify against OBS ingest behavior and actual sender-side FFmpeg capability, not vibes wearing a lab coat.
- Do not add an OBS plugin, fork, registry, custom transport daemon, or compatibility layer until the script-based SRT design fails a concrete invariant.
- Keep video, audio-source isolation, transport, and OBS composition as separate responsibilities.
- If the diff grows while understanding shrinks, stop implementation and update the map.
Product Truths
- V1 is a LAN bridge, not an internet relay.
- Sender-side video encoding must use NVENC when available.
- Receiver-side OBS should see stable source URLs that can be added as Media Sources.
- Audio must remain separately mixable in OBS. That means separate audio endpoints in v1, even if a later synchronized bundle becomes useful.
- The repo owns repeatable setup, scripts, config, and operating docs. FFmpeg and OBS own media work.