Pantograph is a local-first desktop app that turns sketches and prompts into editable Svelte UI.
npm install
npm run dev:desktop
npm)cargo, rustc)Install Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
Install Tauri system dependencies:
# Debian/Ubuntu
sudo apt install pkg-config libsoup2.4-dev libjavascriptcoregtk-4.0-dev
# Fedora
sudo dnf install pkgconf-pkg-config libsoup-devel javascriptcoregtk4.0-devel
# Arch
sudo pacman -S pkgconf libsoup2 webkit2gtk
Install project dependencies:
npm install
npm run dev:desktop
npm run dev
npm run build:desktop
./launcher.sh --help
llama.cpp sidecar with local model files# Lint (configured scope)
npm run lint
# Full lint scan
npm run lint:full
# Critical anti-pattern gate (src/ + packages/)
npm run lint:critical
# Type check
npm run typecheck
# Tests
npm test
# Runtime separation guard (no compile-time Python linkage)
npm run test:runtime-separation
# All quality gates
npm run check
Python-backed model execution is intentionally out-of-process and externally provisioned.
See docs/python-runtime-separation.md for configuration and migration details.
For a local diffusion worker smoke path, run:
./.venv/bin/python scripts/diffusion_cli_smoketest.py --model-path /path/to/tiny-sd-turbo
Pantograph exposes a Rust-first headless workflow API for host integrations
through crates/pantograph-workflow-service:
workflow_runworkflow_get_capabilitiesworkflow_get_ioworkflow_preflightcreate_workflow_sessionrun_workflow_sessionclose_workflow_sessionworkflow_get_session_statusworkflow_list_session_queueworkflow_cancel_session_queue_itemworkflow_reprioritize_session_queue_itemworkflow_set_session_keep_aliveIntegration boundary:
src-tauri commands are desktop app transport adapters, not the headless API.frontend-http in UniFFI and Rustler).workflow_get_io -> workflow_preflight -> workflow_run.Reference docs:
docs/headless-embedding-api-v1.mddocs/headless-embedding-migration.mddocs/adr/ADR-001-headless-embedding-service-boundary.mddocs/headless-embedding-implementation-notes.md| Path | Description |
|---|---|
src/ |
Frontend Svelte app, UI components, stores, and services |
src-tauri/src/ |
Tauri backend commands and runtime wiring |
crates/ |
Shared Rust crates (inference, node-engine, workflow-nodes, bindings) |
packages/svelte-graph/src/ |
Reusable graph editor package modules |
scripts/ |
Validation and tooling scripts |
docs/ |
Architecture and process documentation |
npm run check and relevant targeted Rust tests before opening a PR.Workspace crates declare MIT OR Apache-2.0 in Cargo metadata. Review individual package metadata for any exceptions.