DEV Community

Zane
Zane

Posted on

Knovum v0.1.0: Canvas Auto-Layout, In-Canvas Video Scrubbing & Local-First AI Architecture

Over the past few weeks, we've been building Knovum — a local-first, privacy-respecting desktop AI knowledge workspace built with Tauri 2, Vue 3, and Rust.

Unlike standard chat wrappers or cloud dashboards, Knovum provides an infinite 2D canvas where human notes, PDF excerpts, audio transcriptions, and local LLMs (via Ollama/LanceDB) live together spatially without vendor lock-in.

Today we're preparing our major milestone: v0.1.0. Here is an engineering breakdown of the three biggest technical challenges we solved in this release.


1. Figma-Style Auto-Layout & Tidy-Up on an Open Canvas (.canvas)

Spatial canvases are wonderful for brainstorming, but messy card sprawl is a known pain point. When you have dozens of AI generation cards and research notes scattered around, manual alignment becomes tedious.

In v0.1.0, we introduced native Auto-layout Sections and Tidy-Up:

  • Native Rust Packing (planner::packing): Instead of running heavy geometric calculations in JavaScript, spatial flow (row, column, and balanced grid packing) is calculated by compiled Rust code via Tauri IPC.
  • Squarest Table Packing: When organizing an arbitrary collection of cards into a Section, the planner computes the optimal aspect ratio to keep the bounding section as close to golden/square proportions as possible without overlapping.
  • Direct JSON Canvas Compatibility: All positioned cards, section groups, and flow relations are saved directly into the open standard *.canvas format (compatible with Obsidian Canvas), maintaining complete portability.

2. In-Canvas Video Scrubbing & Audio Waveform Streaming

Research often involves multimedia — recorded lectures, technical podcasts, and screen captures. In existing tools, clicking a video either opens a heavy external player or throws you into an isolated modal window.

In v0.1.0, we brought full Video & Audio Workbenches directly onto 2D canvas cards:

  • Streaming Audio Waveforms: We built a high-performance audio waveform visualizer that decodes and renders audio tracks in real-time without buffering whole gigabyte files into RAM.
  • Filmstrip & Frame-Accurate Scrubbing: Hovering over the timeline scrubs through visual filmstrip keyframes rendered directly within the Konva-based canvas node.
  • Whisper Integration with Diagnostics: Paired with our embedded whisper.cpp sidecar, audio from video cards can be transcribed locally into time-stamped note cards with zero audio bytes leaving your computer.

3. Preflight Diagnostics: Eliminating the "Silent AI Failure" Problem

One of the most frustrating aspects of local AI desktop apps is silent runtime failure:

  • Is Ollama running in the background?
  • Did the user pull the requested model (e.g. qwen2.5 or llama3.2)?
  • Does the system have sufficient VRAM available?
  • Are the speech sidecar binaries executable?

In v0.1.0, we implemented an AI Readiness Preflight Engine (features/ai-preflight):
Before firing off any generation or vector embedding pipeline, Knovum conducts non-blocking health checks:

  1. Pings the local Ollama daemon and inspects installed model tags.
  2. Verifies local Whisper sidecar binary permissions and model weights (ggml-base.bin).
  3. Validates LanceDB vector index integrity and SQLite schema version.

If any check fails, the UI surfaces actionable, inline recovery prompts (e.g., "Ollama is reachable, but qwen2.5:7b is missing — run ollama pull qwen2.5:7b") instead of freezing or failing silently.


Performance Snapshot

  • Idle RAM: ~45MB (thanks to Tauri 2 native OS WebViews vs 800MB+ for Electron).
  • Storage: 100% local SQLite for notes + LanceDB for embeddings. No cloud subscription, no SaaS telemetry.
  • License: Source-available and free for personal & research use.

We’d love to hear your thoughts, feedback, and architecture critiques!

🔗 GitHub Repository: https://github.com/madebyzan/knovum

Top comments (0)