Sindri is a 2d game engine, editor workspace, and local AI-assisted tooling stack written in Rust. The AI lives inside the workspace as a peer — every action lands as a reviewable proposal, so you stay in control.
Batched sprites, shapes, tilemaps, particles, text, and lighting on top of wgpu. Offscreen rendering and screenshots included.
wgpuRigid bodies, colliders, triggers, and collision callbacks wired into the world and exposed to scripts.
rapier2dEntity-attached scripts with lifecycle callbacks and deferred world mutation. Save the file, keep playing.
lua 5.4 · mluaAI-assisted entity and scene actions through Ollama. Runs on your machine — no external API required.
ollama · local-firstWorld + EntityId, immutable and mutable queries, built-in gameplay components, and a fluent EntityBuilder.
world · entitybuilderScenes save and load through the editor, with undo/redo commands and editor/runtime parity tracking.
.sndr scenesCamera zoom, bounds, world/screen conversion, typed grids, and A* pathfinding out of the box.
camera2d · a*Audio through rodio; frame-accurate input with action mapping for keyboard and beyond.
rodioThe assistant is a peer collaborator with full agency over the project — it can stage scenes, scripts, and components. But nothing touches your project until you accept it. No cloud, no API key: everything runs locally through Ollama.
Make the drone follow the beacon and play a chime when it gets close.
you · cmd-kThe goal is not just to render sprites. The goal is to make gameplay iteration, scripting, tooling, and editor workflows feel cohesive. Rust is the right layer for the parts you write once and lean on forever; Lua is the right layer for the gameplay you rewrite twenty times a day.
crates/ sindri/ engine core sindri-server/ local engine/editor http server sindri-ai/ ollama client + ai action types editor/ tauri 2 + react editor examples/ curated examples, not subsystem spam docs/ engine documentation
Lua 5.4 through mlua, with lifecycle callbacks, deferred world mutation, collision and trigger callbacks, and physics, camera, animation, and tilemap helpers. Scripts hot-reload while the game runs.
$ cargo run -p hello_sindri $ cargo run -p scripted_asteroids
Sindri Pixel is a companion sprite and pixel-art editor, built on the Dream Pixel editor. The plan: draw sprites, animate frames, and hand them straight to your Sindri scenes — same local-first stack, same workspace.
Follow on GitHub