Strut is an open-source, desktop-first motion design studio for interactive product graphics. It is built around an open .strut format, a fast Rust core, GPU-backed previews, and an AI-native workflow that can turn prompts, SVGs, images, or rough sketches into editable runtime-ready animation components.
Strut is not trying to be a free copy of any single tool. The goal is a local-first motion IDE where designers and engineers can create, verify, export, and automate interactive animation systems without locking their work into a closed editor.
Status: pre-alpha. The repository is being scaffolded. APIs, file schemas, and runtime contracts will change while the MVP is built.
- Open format:
.strutfiles are documented, inspectable, versioned, and designed for long-term portability. - Desktop only: first-class Windows, macOS, and Linux apps instead of a web SaaS dependency.
- Rust-fast core: parsing, validation, compilation, state machines, and render preparation live in Rust.
- Local GPU support: viewport/rendering architecture is designed around
wgpu, WebGPU, Metal, DirectX 12, and Vulkan paths with CPU fallback where needed. - AI first, BYOK: users can bring OpenAI, Anthropic, Gemini, OpenRouter, Ollama, LM Studio, Azure OpenAI, or any OpenAI-compatible endpoint.
- Agent compatible: Strut can orchestrate local coding agents such as Codex, Claude Code, Gemini CLI, Antigravity, Kiro, Copilot CLI, OpenCode, Cursor-style agents, and custom adapters.
- Mockup to model: SVGs are parsed deterministically; raster mockups use vision plus classical geometry extraction to create editable Strut scenes.
- Plan Mode: when there is no mockup, Strut sketches multiple 2D directions first, waits for review, then builds the full animation.
- Runtime ready: exported components are designed to be controlled by app code through stable inputs, bindings, and events.
Strut Studio desktop editor and AI workspace
Strut Format open .strut project/runtime format
Strut Runtime embeddable playback libraries
Strut Agent Engine BYOK provider router and local agent orchestration
Strut Verifier render, state-machine, export, and performance checks
Strut MCP controlled project access for external agentsThe first real milestone is a narrow but complete vertical slice:
Prompt: Create an animated login button with idle, hover, pressed, loading, success, and error states.
Expected result:
- Strut creates an artboard.
- Strut creates editable vector layers.
- Strut creates timelines and easing.
- Strut creates a state machine with named inputs.
- Studio previews the interaction.
- The verifier checks reachability and render snapshots.
- The exporter writes a .strut file.
- The React runtime can control the component.apps/
studio/ Tauri desktop app
crates/
strut-core/ scene graph, timelines, state machines
strut-format/ .strut read/write/validate
strut-renderer/ GPU renderer abstraction
strut-compiler/ editable project -> optimized runtime artifact
strut-agent/ provider router and agent orchestration
strut-verifier/ snapshot, export, and state checks
packages/
runtime-web/ browser runtime
runtime-react/ React wrapper
docs/ architecture, format, roadmap, review guides
assets/ brand and documentation assetsThe project intentionally ships in reviewable increments. At each checkpoint, run the commands in docs/MANUAL_REVIEW.md and inspect the listed files before moving to the next milestone.
Current checkpoints:
- Docs and repository identity
- Rust/Tauri scaffold
- Open
.strutformat - Runtime preview
- AI provider and local agent adapters
- Mockup/SVG to Strut
- Plan Mode
The current scaffold uses:
Rust 1.93+
Node.js 25+
npm 11+
Tauri v2
TypeScript
React
wgpu
SQLiteStandard commands:
npm install
npm run check
npm run test
npm run studio:devApache-2.0. See LICENSE.