The Problem
Teams want quick diagram drafts from plain-language descriptions, but most AI diagram tools send text to a cloud service, require API keys, or produce static images you cannot edit. OpenVisual addresses that by running a local Ollama model and rendering editable diagrams on your own machine, with no network calls beyond http://127.0.0.1:11434.
What This Does
OpenVisual is a Tauri 2 desktop app that turns text prompts into editable Excalidraw diagrams. The flow: you paste text, click generate, a local Ollama model returns a structured description, and a deterministic layout engine in src/diagrams/layouts/ computes coordinates, colors, and strokes. The result opens in an editable canvas you can rearrange, restyle, save, and export.
The app supports six diagram types (flowchart, timeline, hierarchy, comparison, cycle, hub-and-spoke) and three detail levels. It also offers local transformations—regenerate, simplify, add detail, change type—all driven by the same AI pipeline in src/ai/.
How It Is Wired
Execution starts at src/main.tsx, which mounts src/App.tsx. The React frontend calls src/ai/client.ts, which sends prompts to the Rust backend via Tauri commands defined in src-tauri/src/commands/ollama.rs. That backend makes the only outbound network call—a POST to http://127.0.0.1:11434 (a compile-time constant). The response returns to src/ai/pipeline.ts, which parses and validates it via src/ai/parser.ts, then passes the structured diagram to src/diagrams/convertToExcalidraw.ts for rendering.
The layout engine in src/diagrams/layouts/ is the core: flowchart.ts, timeline.ts, hierarchy.ts, comparison.ts, cycle.ts, and hubSpoke.ts each compute node positions deterministically. src/diagrams/layout.ts routes to the correct layout based on the diagram type. The src/store/appStore.ts manages application state, and src/storage/ handles persistence via IndexedDB (db.ts) and project management (projects.ts).
The widest blast radius sits in src/ai/pipeline.ts—every generation, regeneration, and transformation flows through it. Changing the prompt format or parsing logic there affects all six diagram types. The src/diagrams/layouts/ directory is a close second; each layout file is independent, but layout.ts is the routing hub that ties them together.
How To Use It
From the README, the setup is:
brew install ollama && ollama serve
ollama pull qwen3:4b
npm install && npm run tauri dev
Configuration is minimal—no environment variables or API keys. The only external dependency is a running Ollama server with a model pulled. The app checks for Ollama on first run via the onboarding dialog in src/components/onboarding/OnboardingDialog.tsx.
Real-World Use
A product manager drafts a feature flow in plain English: "New user signs up, verifies email, sets up profile, then sees the dashboard." OpenVisual generates a flowchart with those four nodes, which the PM drags into a better order, exports as PNG, and drops into a spec doc. The same prompt always produces the same layout—deterministic, so it is safe for version control.
Code Health & Issues
- Med - No screenshots in
docs/despite the README requesting four specific captures; the demo GIF placeholder remains. Documentation is incomplete for a user-facing product. - Med - The
src-tauri/capabilities/default.jsonandsrc-tauri/tauri.conf.jsonare present, but the security posture beyond the compile-time Ollama URL constant is not documented in a way that an auditor could verify without reading Rust source. - Low -
scripts/sync-excalidraw-assets.mjsand the Vite plugin for local fonts are custom build tooling; they work but add maintenance surface area.
Tests are present (13 files), CI exists in .github/workflows/ci.yml, and a release workflow is configured. No structural red flags were detected.
The Bottom Line
OpenVisual is a well-architected local-first tool that solves a real pain point—editable AI diagrams without cloud dependencies. The deterministic layout engine and strict privacy boundary are its strongest assets. It is ready for a developer audience that already runs Ollama, but the missing screenshots and demo assets will hurt adoption with non-technical users.