Inkfinite #
Inkfinite is a local-first infinite canvas for drawing, wireframing, and diagramming. It runs in the browser or as a desktop app.
What you can do #
- Draw and edit rectangles, ellipses, lines, arrows, text, Markdown, freehand strokes, and native vector paths.
- Organize work with pages, layers, groups, nested containers, and a built-in stencil library.
- Pan, zoom, select, transform, reorder, style, undo, and redo directly on the canvas.
- Store boards in your browser or work with local, Automerge-backed
.inkfinitefiles in the desktop app. - Import static SVG, Excalidraw, and Obsidian Canvas content. Export SVG, PNG, Excalidraw, and Obsidian Canvas files.
- Inspect, query, edit, validate, and render saved files or open desktop sessions from the CLI.
- Let coding agents propose changes for review in the desktop app or apply them directly when you enable direct access.
Run from source #
You need Node.js 18 or newer, pnpm, and Rust 1.89. The desktop app also requires the Tauri 2 prerequisites for your OS.
To get started, clone the repo & install the front-end toolchain/deps:
pnpm install
The browser app also needs the Rust WebAssembly target and the wasm-bindgen
CLI version used by Cargo.lock:
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.126 --locked
pnpm wasm:build
pnpm dev:web # adding --open will open your browser
To start the desktop app:
pnpm tauri dev
To build the CLI used by scripts and live desktop sessions:
cargo build -p inkfinite-cli --bin inkfinite
./target/debug/inkfinite --help
# Build an installable release tree with the binary, man page, and completions.
cargo xtask dist
See the CLI documentation for installation paths and shell completion setup.
Documentation #
- Quickstart
- Editor guide
- Import and export
- Web platform
- Desktop platform
- CLI
- Agent workflows
- Architecture
Credits #
I was inspired by fantastic apps in the space like Excalidraw and more recently, tldraw. tldraw offline in particular was so cool that it kicked off a lot of other agent-capable projects.
The choice to use perfect-freehand came from playing around with this react flow demo.
The SVG capabilities were inspired by this post.
License #
Inkfinite is licensed under Apache-2.0.