No description
  • Rust 74.9%
  • C++ 10.4%
  • PowerShell 7.4%
  • JavaScript 4.6%
  • Shell 1.6%
  • Other 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 8e1de662c7 Write map: C5 Hands landed on a branch; Soul pending the operator's go
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 01:04:24 +02:00
assets/personas Hermodr leaves Odin 2026-09-06 19:46:06 +02:00
crates Odin: the projection-unreadable mark is found through anyhow context layers 2026-09-30 05:23:54 +02:00
deployment/idunn Name the runner environment each build step needs 2026-09-07 00:20:45 +02:00
docs Write map: C5 Hands landed on a branch; Soul pending the operator's go 2026-10-01 01:04:24 +02:00
native Observe scheduled Move hues through PSMoveAPI 2026-07-12 22:07:41 +01:00
notes Note: fold-back verified end to end by a consumer catalog pull 2026-09-11 00:46:19 +02:00
personas Refresh Gjallar Yggdrasil memory 2026-08-24 20:51:02 +02:00
scripts Delete deploy, restart, health and start/stop scripts for other services 2026-09-30 00:22:19 +02:00
state Map: CultLib pin bump is a recorded follow-up, not a tonight item 2026-09-11 01:33:34 +02:00
.gitignore Refuse agent scratch 2026-09-04 15:08:44 +02:00
AGENTS.md Muninn has one body: drop the workspace copy 2026-09-10 23:39:16 +02:00
Cargo.lock odin-core: keep the cultnet-rs dependency (cultmesh_documents! expands to it) 2026-09-30 00:22:45 +02:00
Cargo.toml Delete crates/sleipnir-daemon: Sleipnir lives in the Muninn workspace 2026-09-29 22:09:41 +02:00
CLAUDE.md Give Odin its own doctrine, re-entry surfaces, and a deployment handoff 2026-09-10 21:19:29 +02:00
LICENSE Add MIT license 2026-09-05 21:52:55 +02:00
package.json package.json: drop scripts that named the deleted coordinator and a missing crate 2026-09-30 00:23:07 +02:00
README.md Docs: Idunn owns deployment and daemon survival; Odin does discovery only 2026-09-30 00:25:20 +02:00

Odin

Odin is the GameCult all-seer: the central CultMesh node every Verse can use to discover the other Verses, inspect schema catalogs, and find translation paths between local realities.

It is not the renderer. It is not Eve. It is not a Starfire utility script wearing a bigger coat. Odin owns discovery, schema awareness, translation planning, and accepted operator surfaces. Eve clients and Gjallar lower Odin's published CultUI surface into whatever body they have.

Odin is also the compliance witness for the GameCult service architecture: durable service state in CultCache .cc, local Verse visibility through CultMesh, meaningful presentation as Eve GUI/TUI DSL, and renderers as lowerers only.

Rust Spine

The target Odin body is Rust-first: ingest through narrow ports, normalize into typed Odin records, persist through CultCache .cc, expose through CultMesh / CultNet document registries over the shared RUDP transport, and lower interface state through Eve/CultUI.

The first Rust core lives in crates/odin-core and already separates typed documents, ingest ports, normalization, and repository persistence so unit tests can use mocked inputs and pipeline smokes can prove typed handoff without booting the whole daemon. Gjallar is not part of that Rust record spine: it is the Yggdrasil-resident C# composition daemon in F:\Projects\Gjallar. It consumes Odin's accepted provider snapshot and publishes one tiled gjallar.overview Eve surface for GUI, TUI, and agent lowerers.

Typed access discovery

Odin persists only document schemas it has registered. That is a deliberate typed-store boundary, not a license to accept anonymous blobs and hope later code understands them. The live Yggdrasil body at ba76a7239a7bb40aa1774df7d93b9388dc27b222, using CultLib 75c180782aeba7cfd22d6412877397708a4ed28f, registers Heimdall's provider, command-boundary, Eve-plugin, and transport-profile documents plus Ghostlight's public catalog envelope. Provider daemons own those documents; Odin owns typed catalog acceptance, ordered durable persistence, and exact retrieval. Sensitive auth commands and claims travel directly between the consuming app and Heimdall, never through Odin.

Ghostlight publishes a ghostlight.schema_catalog.v1 envelope containing only the state contracts named by its public provider surface. Odin registers that envelope so it can persist and return the provider-owned catalog; it does not register every private Ghostlight receipt, transition, or simulation schema.

Typed access discovery

Odin persists only document schemas it has registered. That is a deliberate typed-store boundary, not a license to accept anonymous blobs and hope later code understands them. The live Yggdrasil body at b4f9a2e95f0b41cebdeddc49223781d1d3c7b42a registers Heimdall's provider, command-boundary, Eve-plugin, and transport-profile documents. Heimdall owns their contents; Odin owns catalog acceptance and exact retrieval. Sensitive auth commands and claims travel directly between the consuming app and Heimdall, never through Odin.

Gjallar

Gjallar is the herald composition daemon that runs beside Odin and Idunn on Yggdrasil. Odin sees the Verses and accepts provider surfaces. Gjallar consumes that accepted snapshot and publishes one multi-scale tiled Eve surface. Eve clients—including EveCanvas—own graphical and TUI lowering.

Local package surfaces:

  • Organ contract: docs/gjallar.md
  • Branding Persona state: personas/gjallar.persona_state.cc
  • Runtime source: F:\Projects\Gjallar
  • Avatar asset: assets/personas/gjallar-avatar.png
  • Pixel avatar: assets/personas/gjallar-avatar-pixel-256.png

Idunn

Idunn (GameCult/Idunn) owns deployment and daemon survival for every GameCult target, Odin included: it builds from the target's recipe, activates and restarts the admitted incarnation, and holds the deployment and lifecycle brakes. Odin owns none of that. Odin does discovery, schema awareness, rendezvous, and interface aggregation, and it reads Idunn's topology projection to learn which incarnations exist. Agents do not deploy daemons directly: they configure the target's recipe and binding and let Idunn run the transaction.

Local package surfaces:

  • Deployment recipe: deployment/idunn/recipe.toml
  • Operator binding: /etc/gamecult/idunn/bindings/odin.toml on the host, not in this repository
  • Live deployment and admission map: state/map.yaml
  • Idunn's contract, brakes, and runbooks: the GameCult/Idunn repository

Authority Map

  • Owner: Odin owns the network-wide Verse registry, schema catalog index, translation map, and accepted provider catalog/proxy surfaces.
  • Inputs: CultMesh/CultNet peer announcements, schema catalog responses, daemon health/provider publications over cultnet.transport.rudp.v0, Idunn's read-only topology projection, and provider-owned Eve/CultUI surfaces.
  • Outputs: CultCache-backed Odin state, CultMesh documents, and CultNet schema/catalog messages. Browser, GUI, TUI, and framebuffer renderers lower those documents outside Odin instead of asking Odin to host web surfaces.
  • Derived state: Gjallar's aggregate surface is derived from Odin/provider state; Eve clients derive pixels from that aggregate.
  • Forbidden writers: renderers do not probe the network or decide Verse truth; individual projects do not maintain private incompatible discovery ledgers once Odin can see them.
  • Shared paths: human dashboards, worker schedulers, Verse bootstrap code, and compact TUI views consume the same registry and schema catalog.
  • Not Odin's: process lifecycle, restart, deployment, and daemon survival belong to Idunn.

Runtime Body

Odin runs as odin-daemon under Idunn on Yggdrasil, built from deployment/idunn/recipe.toml. There is no local start script. The daemon:

  • reads Idunn's read-only projection to learn which incarnations of which targets exist;
  • admits provider presences over RUDP for those incarnations and persists them through CultMesh/CultCache;
  • publishes signed runtime-topology correlation records;
  • answers CultNet/RUDP snapshot and document requests on its route.

Odin's native document catalog is addressed by CultMesh URI. Concrete RUDP bootstrap is configured behind CultMesh URI resolution by the operator or by Odin/Idunn deployment state:

cultmesh://odin/rendezvous/provider-catalog

That URI accepts typed document publication and schema/catalog requests through the shared CultMesh runtime. Consumers that need Odin's accepted surface can still request the current CultNet snapshot after CultMesh resolves the transport.

Browser and deck lowerers consume Odin's CultMesh state through their own lowering process. Odin does not host browser-deck surfaces or publish deck URLs as discovery seed material.

Provider advertisements and CultNet/RUDP transport profiles are the discovery path. External host probes, product health checks, port probes, and renderer bridges are debug or lowering surfaces outside Odin only.