Pantograph is a local-first, Rust-native framework with an optional desktop app. It provides unified local inference, node-based workflows, resource-aware runtime scheduling, real-time observability, and diagnostic tracing for AI pipelines. Host integrations consume the native Rust interface or projections through UniFFI, Rustler, and optional HTTP adapters.
Review branch: PR #71. These assets are tracked on the demo branch pending review and merge. All captures use the actual Svelte application in Chromium, connected to a persistent Rust workflow service through an explicit loopback HTTP host. These are not native Tauri windows. The host executes the deterministic graph, serves live diagnostic queries and retained artifact bytes, and reads an isolated Pumas library. No service mocks or recorded-response injection are used.
This historical capture from 7fc3584c renders the JSON demo before editor
submission support. The follow-up host also provides editor-demo, a saved
Text Input → Text Output workflow with real edit/save/validate/submit APIs.
Its HTTP integration tests pass; a new browser capture is pending a permitted
Chromium sandbox. See the demo guide.
The Diagnostics page queries real run facts, node status and ledger events from the running Rust service. The matching native response preserves the capture evidence; the application does not replay that file.
The node-status view reports both executed tasks completed and all three small payloads retained.
The I/O Inspector queries the backend run graph and resolved I/O, then reads the actual retained text through the artifact API. No model inference is claimed.
The Library page reads a real, isolated empty Pumas catalog and usage ledger. This limited host disables model search/download/delete with an explanation. No models were invented or downloaded and no private user library was accessed.
The sidebar's Node Editor is a separate Node Lab page whose authoring API, local agent and runtime publishing remain unavailable in current source. It is not the workflow Graph canvas. This change fixes browser transport and inspection, not node authoring or editor-to-model inference. Native Tauri capture still requires GTK/WebKit dependencies unavailable in this environment.
A small deterministic workflow now exercises the native scheduler without model weights: Selection Input → JSON Filter → Text Output. It validates a graph, submits an execution session, extracts text from JSON, and records task lifecycle and I/O diagnostics in SQLite. Try both successful extraction and a missing path:
python3 examples/scheduler-demo/serve.pyOpen http://127.0.0.1:8765. See the demo guide
for prerequisites, exact scope, raw execution records, and screenshot reproduction.
This is real deterministic Rust execution, not model inference. The minimal browser host is separate from the desktop editor.
The GitHub Pages presentation source combines screenshots, an interactive viewer of recorded scheduler events, inference ownership boundaries, and readable research editions. It is prepared for local preview and review; Pages has not been enabled or deployed by this change.
| Area | Research |
|---|---|
| Nodes and extensions | Node Execution and Dynamic Extensions |
| Scheduling | A Resource Safe Learning Scheduler and v2 simulation evaluation |
| Inference backends | Designing Compatible Inference Backends |
| Diagnostics and provenance | Execution Ledger and Provenance |
These are source audits, research proposals, and separately labeled simulations; they do not establish production or GPU performance. The research index records their pinned editions and limits.
See ARCHITECTURE.md for the current module map, target scheduler-owned task execution model, ownership rules, active transition, and links to authoritative ADRs and implementation status.
The current standards audit records the repository-wide compliance baseline and routes its findings into focused follow-up audits. Its remediation portfolio coordinates the resulting implementation plans.
- Clone the repository.
- Install dependencies:
npm install
- Run the desktop app:
npm run dev:desktop
- Node.js (for
npm) - Rust toolchain (
cargo,rustc) - Tauri system libraries for your OS
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 webkit2gtkInstall project dependencies:
npm installnpm run dev:desktopnpm run devThe Vite dev server binds to 127.0.0.1 by default. For an intentional LAN
preview, set PANTOGRAPH_VITE_HOST=0.0.0.0 when starting the server.
npm run build:desktop./launcher.sh --help
./launcher.sh --test
./launcher.sh --release-smoke- External OpenAI-compatible server (for example LM Studio)
- Bundled
llama.cppsidecar with local model files
- Node.js + npm matching
.node-versionandpackage.json - Rust toolchain matching
rust-toolchain.toml - Python matching
.python-versionfor Python-backed smoke paths - Tauri system dependencies (above)
See Development for toolchain ownership, setup caveats, and the current verification status.
# Frontend type and configured test checks
npm run typecheck
npm run test:frontend
# Rust workspace checks
cargo fmt --all -- --check
cargo check --workspace --no-default-featuresThese commands prove only their stated scopes. Pantograph does not currently have one green repository-wide compliance command; see the verification audit.
Python-backed model execution is out-of-process and externally provisioned. See Runtime Operations for interpreter selection, runtime inspection, recovery, and current security/lifecycle limitations.
Pantograph exposes a Rust-first service with UniFFI, Rustler, and optional HTTP projections. See Headless Workflow Integration for the supported ownership model, session flow, exact contract sources, and known transition boundaries.
| Path | Description |
|---|---|
ARCHITECTURE.md |
Current architecture, target execution model, ownership, and status entry points |
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/ |
Current guides, decisions, audits, and implementation plans |
- Create a focused branch for one logical change.
- Follow coding, tooling, accessibility, and documentation standards.
- Run the smallest checks that decide the affected behavior and contracts.
- Use Conventional Commits for all commits.
The repository currently contains Apache-2.0 license material while Cargo
metadata declares MIT OR Apache-2.0. Resolve that mismatch before
distribution; see Release.






