- Rust 93.2%
- PowerShell 5.7%
- C 0.5%
- HLSL 0.4%
- Batchfile 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Muninn's media records now come from CultLib rather than odin-core, and its envelope, record keys, validators and chunk key are gone in favour of the shared ones. 608 lines removed against 149 added, nearly all of it duplication that existed because there was nowhere else to put it. What went, and why it was there: The four *WirePayload tuple structs restated each record's entire field list positionally, kept in step by hand, for the sole purpose of applying serde_bytes to the payload — a workaround for the DatabaseEntry derive ignoring serde attributes. The records carry `bytes` now, so the derive emits bin itself. CultLib has a test comparing both encodings byte for byte before the deletion. encode/decode_media_wire_record, the four record-key builders, the four record validators, VideoChunkKey and the feedback-key normaliser were all contract living inside one producer. A consumer needed every one of them and had to reimplement or approximate them, which is precisely how the C++ receiver drifted. Muninn keeps what is genuinely its own: it names itself as producer, once, in MUNINN_MEDIA_PRODUCER, and passes that through MediaWireProvenance. The envelope no longer hardcodes "muninn-media:" and "muninn.media" into documents any other producer would also have had to emit. One test changed meaning rather than being deleted. A hex fixture captured from the deployed C++ OBS bridge carries muninn.media_receiver_feedback.v1, which the rename retires. It is now `the_previous_generation_bridge_is_deliberately_no_longer_understood` and asserts the refusal, naming what it refused. That break is real and accepted: the bridge is being replaced by Ratatoskr, and accepting both schema names would preserve the ownership confusion the rename exists to remove. If that test starts passing, someone has put the old id back. Requires CultLib 96138ff on claude/cultmesh-media-stream-contract. The pin in Cargo.toml still points at c13b6ba and must move before this builds clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
| crates | ||
| docs | ||
| native | ||
| scripts | ||
| .gitignore | ||
| Cargo.toml | ||
| README.md | ||
Muninn
Local capture broker for the GameCult swarm.
Muninn resolves what data streams a host can offer, advertises them, and serves them to CultMesh peers on request. Screen and loopback audio, cameras, PS Move controllers and their optical markers, HID and XInput gamepads, Quest access.
Muninn running does not mean Muninn is broadcasting. Each feed it can reach is available for another service to request. Mimir asks for sensors. Sleipnir asks for input. A stream asks for screen and audio. Muninn does not decide what any of them are for.
Extracted from Odin with its full history.
Muninn had lived as three crates inside the repository of the service that
discovers it, with its document schemas owned by odin-core — an inversion of
the ownership it needs to hold. Same shape as the
Idunn extraction of 2026-09-05, and done
deliberately after it.
Status
This repository does not build yet. It is a faithful history extraction, not
a finished cut. muninn-daemon still depends on odin-core by path for the
twenty record types and schema constants it uses, and that dependency is one of
the things being removed.
See docs/teardown-map.md for the working map: current
body, the authorities currently fused into one 14,567-line main.rs, schema
decomposition, extraction blast radius, and the measured diagnosis of the audio
decay that prompted the rebuild.
Authority
- Owner: Muninn owns local source enumeration, capability advertisement, per-consumer stream grants, and transport of granted streams.
- Input: locally reachable devices; typed capture stream commands from requesting peers.
- Output: CultMesh Media Streams and typed sensor records.
- Not Muninn's: the media protocol itself (a general CultMesh contract, owned by CultLib), discovery and rendezvous (Odin), deployment and continuity (Idunn), the hue programs that decide what colour a Move should be (Mimir), and any consumer's lowering — OBS, browser, or otherwise.
Muninn is one producer of a general contract. It is not the contract.