How it works
How it worksπ
FILE.md βββΊ doc.rs βββββββΊ draft.rs ββββββββββΊ scene.rs βββΊ Bevy
sections + WorldManifest entities,
BLAKE3 hashes (localgpt-world- lights, fog
types) β²
β² β
watch.rs: poll the file, recompile on save tour.rs: camera + caption
doc.rs: Markdown β title, front matter (genre: β¦), and one section per place β a##heading (world) or a----separated slide (deck). Each section carries a hash of its text (plus anyworldfence).draft.rs: sections β aWorldManifestwith one region per section β a winding path (world) or a straight presentation path (deck) β and a tour with one stop per section. Deterministic, with entity ids that are stable per section, so editing one section leaves the other regions untouched. Per section the first of these wins: aworldfenceβs exact entities, the sidecarβs cached agent build, the cached recipe β else the rules.agent.rs/assets.rs(llmfeature): the tool-calling agent (ported from Verse) and the packβs manifest/kind/span math. A pure interpreter applies the modelβs tool calls to platform-local entities; the packβs real CC0 models are placed by semantic kind.recipe.rs/sidecar.rs(pure): the clamped per-region recipe type with its lenient LLM-reply parse, and the hash-keyed<doc>.world.jsonv2 cache (builds + recipes). Compiled in every build; only the authoring is feature-gated.llm.rs/generation.rs(llmfeature): the model (ported from Verse) and the worker thread running the tier chain β agent build β recipe β draft β in the background while the draft is already on screen.scene.rs: spawns the manifest in Bevy using the same mapping as LocalGPT Gen, and loads placed GLBs.tour.rsandwatch.rs: navigation and hot reload.
Worlds use localgpt-world-types, the format LocalGPT Gen saves as world.ron, and pass Genβs own validation. --print-ron prints exactly that file.
Developπ
cargo test
cargo clippy --all-targets -- -D warnings
cargo fmt --check
LocalGPT MD is open source under Apache-2.0; the code is at github.com/localgpt-app/localgpt-md.