storytold /figcraft

FigCraft: interface design and prototyping; an open-source, clean-room reimplementation of collaborative design workflows in pure Rust

★ 4,764⑂ 1,793👁 34⑃ 1,433● 696▤ 17◈ 0
RustApache-2.0Created 2026-10-09getartcraft.com/apps/figcraft
4,764
stars
+42
1,793
forks
34
watchers
1,433
prs
696
issues
17
releases
0
discussions

README

FigCraft


  Interface design and prototyping: open source, collaborative and built in pure Rust.
  Frames, auto layout, components and variants, vector networks, styles, variables and prototypes,
  in a native app that opens instantly and works offline. Open source, and yours.



  
  
  
  
  
  
  



  



  FigCraft on getartcraft.com ·
  ArtCraft ·
  All Crafting Apps





  
  Ridgeline: auto layout screens built from components, with Light and Dark modes from one set of colour variables · examples/ridgeline-app.figcraft




 [!NOTE]
 ArtCraft is a community of artists from all walks of life. Designers, illustrators, developers,
 musicians, game makers — if you make things, you're one of us. Come say hi on Discord.


  A look around ·
  Made in FigCraft ·
  Features ·
  Agents ·
  Under the hood ·
  Get started ·
  Crafting Apps ·
  Discord





  
    
      🎛️ Familiar by design
      The toolbar, layers panel, Design panel, menus and shortcuts sit right where your hands expect them.
    
    
      ⚡ Native and fast
      A Rust engine with a persistent document model: edits touch only what changed, so creating a node in a 20,000-node file takes a fraction of a millisecond. No Electron, no web view.
    
    
      🔌 Offline and private
      Your files are plain .figcraft archives on your own disk. No account, no telemetry, and nothing leaves your computer unless you share a file (what sharing sends where). SVG, PNG, JPG, WebP and PDF in and out; .fig files open (best effort), and so do designs exported as the public REST API file JSON, with their prototypes and variables.
    
    
      🤖 Agent-ready
      Every menu item, tool and drag is a command, so the same engine runs from the UI, the CLI, a JSON control channel or an MCP server.
    
  




 A look around




  
  Components and variants: component sets, variant properties and the Assets panel · examples/ridgeline-design-system.figcraft


  
  Prototyping: connections, transitions, back actions and a flow · examples/ridgeline-onboarding.figcraft




  
  Developer Mode: ready-for-dev status, annotations and React code where component properties become props · examples/ridgeline-app.figcraft


  
  Vector networks: points and handles, variable-width strokes, booleans that stay editable · examples/glass-and-vectors.figcraft




  
  Layout grids and styles, light theme: a 12-column grid, paint, text, effect and grid styles, charts drawn from shapes · examples/ridgeline-studio-dashboard.figcraft


  
  Live sessions: three apps on one figcraft-server file, with cursors, selections, cursor chat and spotlight




  
  Boards: a whiteboard file kind with sticky notes, templates, connectors, a shared timer and voting, in the same live sessions


  
  Developer Mode measurements: redlines placed between layers or along a side, saved in the file and following the layers · examples/ridgeline-app.figcraft




 Made in FigCraft

Every design below was built entirely through FigCraft

Top issues

Latest release

FigCraft v0.16.0 v0.16.0 2026-11-06
What's Changed
 fix(collab): place keyed-list puts through an index within a batch by @dylanmtaylor in https://github.com/storytold/figcraft/pull/1893
 Reject fractional index in proto.interaction.remove and set by @Silvertree2010 in https://github.com/storytold/figcraft/pull/1874
 Reject fractional index in layout.setTrack by @Silvertree2010 in https://github.com/storytold/figcraft/pull/1892
 Reject invalid dashes in node.set instead of dropping entries by @Silvertree2010 in https://github.com/storytold/figcraft/pull/1899
 perf(color): sort gradient stops once per diamond texture by @dylanmta

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON