mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
翻譯準備中
Free Figma alternative made on Rust
翻譯準備中
設計Rust · HTMLGitHub @deepfounder-ai自行安裝營運者未確認
試用過了嗎? 點一下就好,不需要登入。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Create a presentation with File → New deck. Decks use editable 16:9 frames with slide thumbnails, add/duplicate/delete controls, ordering, overview, and speaker notes. Switch to Layers for the existing text, shape, image, and vector editing tools. Notes save with Save notes or when navigating to another slide. Slide edits and saved notes support Undo/Redo and persist in the document.
Present starts at the active slide. Use Right/Space/Page Down and Left/Page Up, or Previous/Next; Home/End jump to the first/last slide. Click Fullscreen or press F11 for a borderless presentation with the controls hidden; Esc returns to preview, then exits. Launch directly with --fixture deck --fullscreen. This initial version does not yet include transitions, a template gallery, or a separate presenter display. Preview the sample with cargo run -p desigma-app -- --fixture deck.
Export the current slide or the whole deck using the Slide PDF / Deck PDF controls or File menu. Each slide becomes one PDF page in document order, with no speaker notes or editor controls. The initial PDF export uses high-resolution raster pages; text is not selectable.
Every screenshot here is the real app on its built-in showcase file, captured offscreen at 2x with its own --screenshot mode.
Motion mode (the waveform button in the toolbar) turns a page into a timeline. It is free like the rest of the app and works offline.
What is in it:
.fig files made in Figma's Motion mode come in as editable desigma motion. Curved motion paths and colour/effect tracks are not imported yet.desigma_add_keyframe, desigma_apply_animation_preset, desigma_set_timeline, desigma_export_animation) so an agent can animate and render.cargo run -p desigma-app -- --motion # the built-in animated onboarding, in Motion mode
cargo run -p desigma-app -- --motion --screenshot docs/images/desigma-motion.png --scale 2
cargo run -p desigma-app -- --motion --panel motion-easing --screenshot easing.png --scale 2
cargo run -p desigma-app -- --export-animation onboarding.desigma --out onboarding.gif --scale 0.75 --fps 20 # add --dither to smooth gradients (bigger file)
Motion follows the workflow of Figma's Motion (Beta) mode but is desigma's own implementation, and it is not affiliated with Figma, Inc. Animation data lives in .desigma files and in desigma's REST JSON export; it cannot be written back into .fig files.
Click Share in the editor, copy the desigma://join/… link and send it. Anyone with the link opens it (or pastes it into Join session on the home screen) and edits the same file with you, live, on Windows, macOS or Linux. There is no account and no server: your copy of desigma hosts the session while the file stays open.
Design and protocol: docs/collaboration.md.
desigma reads two kinds of Figma input, and both land in the same document model:
GET /v1/files/:key. Save it to a file and open it, or let the optional net feature of desigma-fig fetch it with your personal access token. The token is only ever sent as a request header and is never logged or stored..fig files, from File → Save local copy. desigma unpacks the zip wrapper, decodes the kiwi schema and message, and maps node changes, embedded images, shared styles, instance overrides, layout grids and prototype interactions.The .fig format is undocumented. Our decoder follows community reverse engineering and is tested against synthetic files, so expect gaps on real-world files and please report them.
.pen files (the plain-JSON format of the Pencil design tool) open too, through File → Open, drag and drop, the projects home screen or desigma file.pen. Frames and auto layout, shapes, paths, text, fills, strokes, effects, components with instance overrides, and variables with themes come across; scripts, shaders and icon-library icons do not, and the toast on opening lists what was left out (field mapping). Like .fig, an imported .pen is not written back: Save goes to .desigma. This is file compatibility only; desigma is not affiliated with or endorsed by Pencil.
desigma-doc is plain data plus an undo stack. Every edit is a Command with an exact inverse.desigma-render draws on the CPU with tiny-skia, so output is reproducible byte for byte. Tiles stitched together match a whole-page render.desigma-diff compares screenshots with anti-aliasing detection and SSIM, and writes an HTML report. The development target is faithful document rendering and an independently designed editor, with its own approved UI baselines.| Crate | What it does |
|---|---|
desigma-doc | Scene graph, paints, text, auto layout, components, prototype and motion model (keyframes, easing, springs, presets), undo/redo |
desigma-engine | Editing logic shared by the app and the MCP server: transactions, auto layout, text measuring, component sync |
desigma-render | tiny-skia renderer, spatial index, parallel tile cache |
desigma-gpu | wgpu renderer with a CPU fallback |
desigma-svg | SVG import |
desigma-pen | Pencil .pen import |
desigma-library | Projects, team libraries, publishing and version history |
desigma-fig | Figma REST JSON and .fig import, REST JSON export |
desigma-fonts | Bundled Inter, Fontsource fetch and cache, font substitution |
desigma-export | PNG, JPG, SVG and PDF export, animated GIF / WebM / PNG sequences, Dev mode CSS, SwiftUI and Compose code |
desigma-collab | Live collaboration sync: document diffs, host ordering, conflict rules, per-person undo |
desigma-net | Peer-to-peer session transport over iroh: links, password, approval, presence |
desigma-app | The egui desktop editor |
desigma-diff | Pixel-diff library and CLI |
desigma-mcp | Local MCP server for design-file inspection, editing, and code generation |
Grab the build for your platform from the latest release: a .dmg for macOS (one file for Apple Silicon and Intel), a -setup.exe installer (or a portable .zip) for Windows and a .tar.gz with an installer script for Linux.
[!NOTE] Release builds are not code-signed yet, so the first launch shows a warning. On Windows, run the installer and click More info → Run anyway in the SmartScreen dialog. On macOS, open the
.dmg, drag desigma to Applications, open it once, then click Open Anyway in System Settings → Privacy & Security, or runxattr -dr com.apple.quarantine /Applications/desigma.app. Step-by-step instructions: docs/install.md.
git clone https://github.com/deepfounder-ai/desigma
cd desigma
cargo run --release -p desigma-app # the editor, with a demo document
cargo run --release -p desigma-app -- file.fig # open a Figma file
cargo test --workspace # the test suite
On Linux you need the usual windowing headers: pkg-config libxkbcommon-dev libwayland-dev libx11-dev libxcursor-dev libxrandr-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev. macOS is built and tested in CI.
Want to contribute or cut a release? See CONTRIBUTING.md and docs/releasing.md.
Useful flags for automation and testing:
desigma --screenshot out.png --size 1600x1000 --select Card # render one frame and exit
desigma --fixture showcase --select Home --size 1600x1000 --scale 2 --screenshot hero.png # the showcase file, rendered at 2x (3200x2000)
desigma --select Welcome --rulers --layout-grid columns --zoom 120 --screenshot out.png # rulers + column grid
desigma --edit-text "Welcome back" --select-text 0-7 --screenshot out.png # mid-edit with a selection
desigma --tab prototype --present # open straight into Present
desigma --fixture proto-vars --select Add --tab prototype --panel interaction --screenshot i.png # the interaction editor with a Conditional
desigma --fixture proto-vars --present --panel present-variables --screenshot p.png # Present with the live Variables panel
desigma --seed-library ./my-library # fill a library directory with the showcase sample files
desigma --home --library ./my-library --screenshot home.png # the projects home screen on a library directory
desigma --fixture variables --panel variables --screenshot v.png # the Variables view
desigma-diff compare reference.png actual.png --out diff.png # pixel-compare two images
[!IMPORTANT] Status: desigma is in early alpha. Much of Figma's everyday design surface exists, but it is not yet a replacement for professional daily work. The biggest gaps are collaboration, plugins, PDF export,
.figfeatures that real files haven't exercised yet, and code-signed release builds. Expect rough edges, and please file issues with your OS, a sample file if you can share one, and a screenshot.
Build the local server with cargo build --locked -p desigma-mcp, then configure your MCP client to launch desigma-mcp --workspace /path/to/designs. It provides 16 tools for importing files, inspecting layers and tokens, generating code, editing with undo/redo, and saving a new .desigma file. With the editor's agent bridge on (Preferences → Allow MCP agents to control this editor, or launch with desigma --bridge), the same tools edit the document that is open on screen and share its Undo; a status pill shows while the bridge is on. Without a running editor the server works on an isolated file session as before. See the setup and tool reference.
Open Plugins from the editor rail or main menu, choose Install plugin, and paste a manifest URL from desigma-plugins. GitHub blob and raw URLs are supported, for example:
https://github.com/deepfounder-ai/desigma-plugins/blob/main/plugins/icon-browser/manifest.json
The registry is public, so no token is needed. The installer uses the GitHub contents API, which allows 60 unauthenticated requests per hour; if you hit that limit, set DESIGMA_PLUGINS_TOKEN to any GitHub token before launching the editor. The installer does not discover credentials automatically and never puts credentials in URLs or installed metadata. Prefer a commit SHA in place of main for a fixed package revision.
Schema 2 plugins include a root HTML panel and declared HTML/CSS/JavaScript assets. Choose Open on an installed plugin to launch its panel in your browser. Icon Browser can insert static SVG into the current document as editable layers; one Undo removes each insertion. Stop, switching documents, or returning to the library revokes the session. Schema 1 packages remain installable but do not run.
The browser panel is served from a temporary loopback address. Only document:insert-svg and storage:local permissions are supported, with optional access to https://api.iconify.design. The bridge checks the session token and request origin; plugins cannot read the document or access GitHub credentials. Browser JavaScript retains normal browser capabilities; this is a scoped document bridge, not a general-purpose JavaScript sandbox. Favorites in a launched panel last for that browser session because each launch uses a fresh origin.
Schema 2 adds panel, files (including the main script and panel), and network to the native manifest. Bundles require a sibling LICENSE. Downloads are limited to 16 assets, 2 MiB per file and 8 MiB total, with redirects disabled. Extra paths, unsupported permissions, Figma Community URLs and other repositories are rejected. SVG insertion accepts static vectors only and is blocked during presentation, version preview, and active editing gestures.
Logos, social images, banners and copy are in marketing/.
Licensed under either of MIT or Apache-2.0, at your option. Unless you state otherwise, any contribution you submit for inclusion is dual-licensed the same way, without additional terms.
The licenses cover the code, not the desigma name, logo or icon. Forks are welcome but must use their own name and branding; see TRADEMARKS.md.
Bundled Inter is © The Inter Project Authors, licensed under the SIL Open Font License 1.1 (see crates/desigma-fonts/assets/inter/OFL.txt).
Editor icons use Lucide under its ISC license (see crates/desigma-app/assets/icons/lucide/LICENSE). Release packages include both asset notices in licenses/ (inside desigma.app/Contents/Resources/ on macOS).
desigma is an independent project. It is not affiliated with, endorsed by or sponsored by Figma, Inc. or Pencil. Figma and Pencil are trademarks of their owners, used here only to describe file compatibility.