No description
  • Rust 93.2%
  • PowerShell 5.7%
  • C 0.5%
  • HLSL 0.4%
  • Batchfile 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens e27de13efd muninn-contracts: Muninn's 15 state records leave odin-core
New library crate crates/muninn-contracts holds the records Muninn owns
(telemetry surface, capture stream and command, OBS catalog, Move marker
candidate, controller state, identity, light command, hue program,
tracker health and evidence transport health, HID controller state,
Quest access, command boundary, transport profile), their schema
constants, and the MuninnRecords document set. The definitions are the
odin-core ones moved verbatim; the wire is unchanged.

muninn and sleipnir import the records from here, so both link one
definition. muninn registers MuninnRecords after OdinDocuments, which
stays because it still carries Odin's own records and stale copies of
the same schema ids. Muninn's odin-core imports are now
EveProviderAdvertisementRecord, EveSurfaceStateRecord and OdinDocuments.

Tests pin every type name and schema id, the document-set bindings, and
the positional wire layout of two records.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:31:46 +02:00
crates muninn-contracts: Muninn's 15 state records leave odin-core 2026-09-29 23:31:46 +02:00
deployment/idunn Declare the Odin dependency raven-muninn publishes to 2026-09-29 12:51:59 +02:00
docs Retire --idunn-rudp-health and the daemon-health publisher 2026-09-29 23:17:13 +02:00
native Observe scheduled Move hues through PSMoveAPI 2026-07-12 22:07:41 +01:00
scripts Retire --idunn-rudp-health and the daemon-health publisher 2026-09-29 23:17:13 +02:00
.gitignore Give the extracted Muninn a root of its own 2026-09-09 23:04:41 +02:00
Cargo.lock muninn-contracts: Muninn's 15 state records leave odin-core 2026-09-29 23:31:46 +02:00
Cargo.toml muninn-contracts: Muninn's 15 state records leave odin-core 2026-09-29 23:31:46 +02:00
README.md Give the extracted Muninn a root of its own 2026-09-09 23:04:41 +02:00

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.