- Rust 98.4%
- TypeScript 1.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| crates | ||
| docs | ||
| examples | ||
| experiments | ||
| notes | ||
| prompts | ||
| schemas | ||
| scripts | ||
| state | ||
| tools | ||
| vendor | ||
| web | ||
| .gitignore | ||
| .gitmodules | ||
| AGENTS.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
Ghostlight
Ghostlight builds persistent generative people and worlds. Its active product is Ghostlight Dungeon: a Vault-grounded narrative simulation in which places, knowledge, relationships, institutions, clocks, and consequences survive beyond the model's current context.
The project began as a research and fixture pipeline for socially persistent Aetheria agents. That material remains useful regression evidence. The live machine is now a Rust runtime with typed campaign state, one canonical world authority, bounded Persona projection, fiction-first action resolution, and a multiresolution agency graph for keeping large settings active at finite cost.
What Ghostlight Owns
WorldKernelis the sole owner of committed campaign state and revisions.- Every player command, NPC action, strategic tick, wait, import, and reload enters the same validated campaign mailbox and atomic CultCache commit path.
- Vault evidence grounds world compilation; branch-local invention remains distinct from canon.
- Hosted lore Vaults are planned as Git-synchronized, Obsidian-compatible Markdown hierarchies. The Vault service owns their indexes; campaigns retain only manifest bindings and exact evidence receipts.
- Projector → Persona → Interpreter turns produce proposals. Models never commit world state.
- Knowledge, perception, capability, location, custody, and authority are validated against the exact actor proposing an action.
- Fiction-first d20 resolution treats player text as an attempt rather than an accomplished fact.
- Multiresolution Gestalts keep people, institutions, and factions active under a bounded Persona-cell budget without merging rivals into one mind or erasing named individuals.
- Away-time simulation advances clocks and remote agency without puppeting or directly harming an absent player character.
- CultMesh publishes typed service and Eve/CultUI state; the browser lowers that surface and does not become a second state authority.
Current Status
Ghostlight Dungeon is implemented and deployed as a Starfire-hosted, Heimdall-gated playtest harness. The current acceptance surface covers:
- persistent DM-led Session Zero with shared/private channels, typed contracts, private boundaries, character bargains, digest-bound unanimous approval, and atomic publication;
- source-grounded world compilation from an approved brief, with evidence gaps returned to negotiation instead of borrowing a nearby story;
- persistent campaigns, forks, resets, exports, and Heimdall-account-isolated sessions;
- parallel affected-character Projector/Persona/Interpreter waves;
- impossible-action refusal, assessed stakes, server-side rolls, and receipted commits;
- strategic clocks, away-time catch-up, institution activity, migration, and information-channel-aware news;
- bounded shared-scene co-op for up to eight Heimdall members, with exact member→actor authority, actor-filtered surfaces, unanimous time/budget governance, and no player puppeting or PvP mutation;
- connected cohesive and arena simulation covers at budgets from 1 to 128;
- Gestalt materialisation, folding, member deltas, migration, and later rematerialisation of the same person;
- atomic rejection of malformed, stale, or semantically invalid model waves;
- provider, token, cache, latency, validation, state-version, and build receipts;
- exact-build deployment and restart verification on Starfire.
The remaining forge gate is multi-account human pressure testing of Session Zero privacy/publication and bounded co-op alongside continued multiresolution Gestalt agency pressure. The public site is provisional; checkout is not live.
Bounded Co-op
Campaign creation now supports one to eight authenticated players. One
SessionZeroKernel owns negotiation; after unanimous approval, one
WorldKernel owns the shared campaign. Membership binds each account to one
exact actor, and every player receives an actor-filtered Eve projection.
This milestone is intentionally one shared scene with sequential public
actions. PvP, split parties, private in-play actions, delegation, late joining,
and simultaneous declarations remain closed until their consent and governance
contracts exist. See
docs/architecture/ghostlight-dungeon-session-zero.md
and the longer-term
multiplayer intention.
Lore Vault Product Intention
The hosted product will accept ordinary Obsidian-compatible lore Vaults synced
through Git. Contributor and Private plans provision one active custom Vault;
their Plus variants provision three, subject to combined indexed-source and
import allowances. The entitlement, accounting rules, authority boundary, and
security gates are recorded in
docs/product/lore-vault-entitlements.md.
Custom tenant import is not yet part of the deployed tester harness.
Architecture
The shortest reliable re-entry path is:
docs/architecture/ghostlight-dungeon-mvp.md: runtime authority, compiler, action loop, persistence, hosting, and security;docs/architecture/ghostlight-dungeon-session-zero.md: campaign negotiation, privacy, publication, membership, and bounded co-op;docs/architecture/ghostlight-multiresolution-agency.md: dynamic Gestalt partitioning, cohesive and arena cells, fairness, and atomic strategic waves;notes/ghostlight-current-system-map.md: current implemented pipeline;notes/ghostlight-implementation-plan.md: live sequence and next pressure tests;state/map.yaml: canonical human-readable project state.
Repository Shape
crates/ghostlight-dungeon/: Rust daemon, kernel, compiler, persistence, provider stages, web lowerer, and acceptance harnesses;crates/ghostlight-persona-projection/: generalized projection membrane owned by Ghostlight and consumed by Epiphany;docs/architecture/: durable contracts and authority maps;docs/articles/: accessible public explanations;notes/: implementation planning, handoff, and current-system maps;schemas/: published JSON Schemas for typed boundary documents;examples/: earlier fixtures and regression material;state/: human-readable project memory plus older research-pipeline state;tools/: state, validation, and fixture helpers.
Runtime documents and campaign exports use MessagePack-backed CultCache .cc.
JSON exists at schema publication, browser, MCP, model-provider, and diagnostic
boundaries; it is not the canonical hosted state store.
Useful Commands
cargo test --workspace
npm run state:status
npm run state:prepare-compaction
npm run schema:validate
For Codex-driven work, read AGENTS.md before changing the repository. It owns
the persistence, grounding, verification, and handoff discipline.