DEV Community

Zane
Zane

Posted on

Knovum 0.0.2: Building an Open-Source Local-First AI Canvas with Tauri 2, Vue 3, and Rust

Like many developers and researchers, I've spent the past two years experimenting with local LLMs (via Ollama) and local RAG. But existing desktop frontends repeatedly hit two frustrating walls:

  1. The 1D Chat Trap: Linear chat streams work well for simple Q&A, but break down during deep research synthesis. Earlier reasoning turns scroll off the top, and you cannot visually compare multiple document excerpts side-by-side.
  2. The Electron Memory Tax: Most desktop AI wrappers idle at 700MB–1GB RAM before you even load model weights into VRAM.

To solve this, we built Knovum — an open-source, local-first desktop AI knowledge workspace built on an infinite 2D canvas with Tauri 2, Rust, and Vue 3.

Today we just shipped v0.0.2, so I wanted to share the engineering decisions behind the architecture, what we learned building it, and what's new.


Core Architecture: 45MB Idle RAM & Local-First Storage

┌────────────────────────────────────────────────────────┐
│             Vue 3 Spatial Frontend                     │
│  (Konva Infinite 2D Canvas + JSON Canvas Specification) │
└───────────────────────────┬────────────────────────────┘
                            │ Tauri 2 IPC (Channels)
┌───────────────────────────▼────────────────────────────┐
│                    Rust Backend Core                   │
│   ┌────────────────────┐      ┌────────────────────┐   │
│   │   SQLite Storage   │      │ Embedded LanceDB   │   │
│   │  (Notes, Boards,   │      │ (In-Process Vector │   │
│   │   Numbered Migr.)  │      │   Search Engine)   │   │
│   └────────────────────┘      └────────────────────┘   │
│   ┌────────────────────┐      ┌────────────────────┐   │
│   │    Ollama API      │      │ Embedded Whisper   │   │
│   │ (Local LLM Router) │      │ (Speech-to-Text)   │   │
│   └────────────────────┘      └────────────────────┘   │
└────────────────────────────────────────────────────────┘
Enter fullscreen mode Exit fullscreen mode

1. Why Tauri 2 + Vue 3?

By leveraging native OS WebViews (WKWebView on macOS, WebView2 on Windows) orchestrated by a compiled Rust backend, Knovum cold-boots in sub-second time and idles around 45MB of RAM. This leaves virtually all of your machine's physical memory dedicated to loading model weights.

2. Dual-Engine Embedded Storage

  • SQLite: The canonical single source of truth for notes, cards, and relations, guarded by strict numbered migrations.
  • Embedded LanceDB: Runs in-process on disk for fast vector similarity search without requiring Docker, external daemons, or Python runtimes.

3. Zero Lock-In with JSON Canvas

Every visual workspace is stored directly on your local filesystem using the open JSON Canvas (.canvas) specification. You can open, edit, and inspect any Knovum board directly in Obsidian Canvas or parse it with custom scripts.


What's New in Knovum 0.0.2

Here are the key improvements shipped in our 0.0.2 release:

1. Differential Space Indexing (Gap Indexing)

In traditional vector RAG setups, updating a document collection often triggers expensive full re-indexes. In 0.0.2:

  • Rebuilding a space indexes only the gap (delta) instead of re-processing the entire space.
  • The live index stays fully readable and searchable while the background rebuild runs.
  • Indexing is managed as a first-class, cancellable job in the unified Task Center.

2. Streaming Conversation Boundaries

Streaming LLM answers now respect clear block boundaries instead of erasing or slicing through previous turns. Concurrency is strictly owned by a single writer per execution run.

3. Interactive Voice Preview

Knovum includes an on-device Whisper transcription engine. In 0.0.2, the voice library can be audited and heard before selection, and visualizes the active speaker in real time.

4. Hardened Windows Desktop

  • Ships an opaque window with the WebView2 bootstrapper directly embedded.
  • Startup failures fail visibly instead of leaving hidden zombie windows.
  • The main window is revealed safely from the async runtime, eliminating white flashes on launch.
  • Local model memory verification admits memory the OS can dynamically allocate rather than hard-failing.

5. Mutation-Aware Citation Integrity

When an LLM synthesizes an insight from your notes, the citation anchors to exact sentence-level character spans in the source note. If you edit or mutate the source note later, the citation badge automatically flags that the source has evolved—preventing silent hallucination decay.


Download & Open Source

Knovum is 100% free and open-source under the Apache-2.0 license.

If you're interested in local-first software, spatial computing, or running LLMs on your own hardware, give the repository a ⭐ on GitHub and let us know your feedback!

Top comments (2)

Collapse
 
officialmailkr profile image
오피셜메일 •

원문이 바뀌면 인용 배지를 갱신해 주는 부분이 특히 흥미롭습니다. 문장 앞에 내용을 삽입하거나 여러 문장을 합쳤을 때 기존 인용 위치를 어떻게 추적하시나요? 재색인 중의 검색 결과가 어느 원문 버전을 가리키는지도 보이면 검토하기 더 좋겠어요.

Collapse
 
zane_bb379d5c3aa0d830cc84 profile image
Zane •

좋은 질문 감사합니다! 두 가지 모두 중요한 부분이라고 생각합니다.

현재 Knovum에서는 인용을 원본 노트의 문장 단위 character span에 연결하고, 원본이 수정되면 인용을 무조건 새로운 위치로 옮기기보다는 source evolved 상태로 표시해 다시 검토할 수 있도록 하는 데 초점을 맞추고 있습니다. 따라서 문장 앞에 내용이 삽입되거나 여러 문장이 합쳐지는 경우까지 자동으로 정확하게 재앵커링한다고 보장하기는 어렵습니다. 이런 변경은 기존 인용 위치를 다시 검증해야 하는 케이스로 보고 있습니다.

재색인 측면에서는 v0.0.2에서 백그라운드 인덱싱 중에도 기존 인덱스를 계속 검색할 수 있도록 했습니다. 말씀하신 것처럼 검색 결과에 원본의 revision이나 index generation을 함께 표시하면, 결과가 어떤 버전을 기준으로 하는지 훨씬 쉽게 확인할 수 있을 것 같습니다.

좋은 피드백 감사합니다! 인용의 추적 가능성과 재색인 중 버전 가시성은 앞으로 더 개선해 나가고 싶은 부분입니다.