A high-speed, local-first knowledge workspace and Markdown engine built in pure Rust.
Overview • Key Features • Knowledge Graph • Architecture • Benchmarks • Getting Started • Shortcuts • Documentation
Nodera is a native desktop knowledge workspace designed for speed, deep focus, and longevity. Built entirely in Rust without heavy web wrappers (no Electron), Nodera provides instant note-taking, bidirectional Wikilink graph analysis, lightning-fast full-text search, and automated PDF-to-Markdown digestion.
- Plain Markdown as the Source of Truth: Every note is stored as a standard
.mdfile directly on your filesystem. No proprietary databases, no vendor lock-in, and zero risk of data loss. Deleting Nodera leaves your entire knowledge base intact and completely accessible. - Rebuildable Derived State: Fast indexes (SQLite metadata and Tantivy full-text index) are treated as transient caches. If indexes are corrupted or removed, Nodera self-heals and reconstructs them instantly from your raw Markdown files.
- Local-First & Offline: Everything runs locally on your machine with zero cloud dependencies, zero accounts, and zero telemetry.
- Mechanical Sympathy: Leveraging Rust's memory safety, Rayon multi-threading, and Tokio async runtime to achieve sub-millisecond search latencies and >1,000 notes/sec index throughput.
- Distraction-Free Editor: Responsive editing with live word count, line/column tracking, and unsaved changes indicators.
- Reading & Edit Modes: Seamless toggle between raw Markdown and styled preview with formatted tables, task lists, and blockquotes.
- Dynamic Table of Contents: Automatically parsed from document headings (
# H1through###### H6) with click-to-jump navigation. - Hierarchical Vault Explorer: Multi-level folder organization with file creation, renaming, deletion, and real-time filesystem watcher synchronization.
- Global 2D Graph View: Force-directed physics canvas visualizing interconnected concepts across your entire vault.
- Local Neighborhood Graph: Dedicated 1-hop interactive sub-graph inside the context inspector centered around the active note.
- Obsidian-Style Subtle Dotted Canvas: Uniform low-contrast grid background that scales and pans in hardware-accelerated lockstep with nodes and edges.
- Dynamic Dot Compensation: Dot radius dynamically compensates for zoom level (
(0.85 / zoom).clamp(0.4, 1.2)), ensuring dots stay crisp without visual checkerboard glare. - Physics Engine: Coulomb repulsion, Hooke spring attraction, and viewport center gravity with 75-step synchronous pre-warming.
- Floating Controls Toolbar: Frosted glass controls for Zoom In, Zoom Level (
%), Zoom Out, Center Reset, and Physics Re-layout. - Live Search & Highlighting: Filter nodes in real time; hovering any node highlights direct connections and dims distant notes.
- Bidirectional Linking: Instant resolution of
[[Target Note]]and aliased links[[Target Note|Custom Display Text]]. - Automatic Backlinks Detection: Live indexation of incoming references with context preview snippets.
- Broken Link Detection: Visual badges distinguishing resolved notes from dangling references.
- Sub-3ms Search Latency: Tantivy-powered search engine indexing titles, headings, body text, and tags.
- Dual-Index Architecture: SQLite manages relational metadata, link edges, and task states; Tantivy handles lexical full-text scoring.
- Self-Healing Recovery: Automatic detection and reconstruction from damaged or corrupted index files.
- Universal Task Aggregation: Automatically extracts all
- [ ]and- [x]Markdown checkboxes across every note in your vault. - Filter Views: Switch effortlessly between All, To Do, and Completed tasks.
- Interactive Toggling: Checking a task updates the source
.mdfile atomically while preserving formatting. - Origin Links: Click any task badge to navigate directly to the note and line where it was defined.
- Streaming Pipeline: Digestion throughput of ~875 pages/second (600-page book converted in ~685ms).
- Intelligent Structure Recognition: Automatic detection of chapters, headings, repeated running headers, and page numbers.
- Hyphenation & Paragraph Reconstruction: Heuristic-based repair of line-wrap hyphenations and fragmented paragraphs into flowing Markdown.
- Monotonic Progress Events: Live progress bar with cancellation support and collision-free vault import.
- Official Nodera Logo: High-DPI folded-book
Nmark embedded across window icons, Windows taskbar, and PE executable resources. - Zero Hardcoded Emojis: 30+ dedicated pure-Rust SVG vector icons adapting automatically across light and dark themes.
- Centralized Design Tokens: Strict semantic color tokens (
docs/design-system.md) with dark theme base (#0D0F14) and primary violet-indigo accents (#5B6CFF,#9A4BFF).
Nodera Graph Architecture
│
├── Global 2D Graph (Dedicated Canvas View)
│ ├── Physics: Coulomb Repulsion (1/r²) + Hooke Spring (k=0.045) + Gravity (k=0.012)
│ ├── Canvas: Infinite SVG with <pattern id="graph-dot-grid">
│ ├── Navigation: Smooth Pan (drag), Zoom (wheel 0.2x–3.5x), Drag & Drop Nodes
│ └── Controls: Frosted top-right pill (Zoom In / Out, Reset, Re-simulate)
│
└── Local 2D Graph (Context Inspector Panel)
├── Breadth-First Expansion (1-hop radius around active note)
├── Violet Active Node Highlight (#9A4BFF)
└── Quick Jump: Click any connected neighbor to switch active note
nodera/
├── crates/
│ ├── nodera-core/ # Vault filesystem operations, path resolution, models
│ ├── nodera-markdown/ # AST parsing, Wikilinks, backlinks, tasks, graph models
│ ├── nodera-index/ # SQLite metadata index + Tantivy full-text search
│ ├── nodera-pdf/ # High-speed PDF text extraction & Markdown converter
│ └── nodera-desktop/ # Dioxus 0.6 Desktop UI, state store, graph view, theme
├── assets/
│ └── branding/ # Canonical logos, multi-res .ico, .icns, and PNG assets
└── docs/ # Architectural decisions, design system, specifications
| Crate | Responsibility | Primary Technologies |
|---|---|---|
nodera-core |
Vault creation, safe relative path resolution, atomic writes | thiserror, uuid, serde |
nodera-markdown |
Parser, Wikilinks, backlinks, task parser, graph engine | pulldown-cmark, serde_yaml |
nodera-index |
Dual-tier indexer, SQLite relations, Tantivy FTS, recovery | rusqlite, tantivy |
nodera-pdf |
Streaming extraction, heading detection, paragraph repair | lopdf, regex, tokio |
nodera-desktop |
Reactive desktop UI, 2D force-directed canvas, icons, theme | dioxus 0.6, tao, wry, winres |
Tested on standard development workstation (AMD Ryzen 9 / Windows 11):
| Benchmark Scenario | Dataset / Workload | Metric / Latency | Result |
|---|---|---|---|
| PDF Ingestion Throughput | 600-page academic book (BT001S260218049) | ~875.7 pages/sec (685ms total) | PASS |
| Vault Cold Indexing | 1,000 hierarchical Markdown notes | ~1,100 notes/sec (908ms total) | PASS |
| Full-Text Search Latency | 1,000 indexed notes (Tantivy query) | 2.38ms (target: < 50ms) | PASS |
| Index Self-Healing Recovery | Corrupted SQLite & Tantivy headers | Auto-rebuilt & verified in 230ms | PASS |
| Startup Memory Footprint | Fresh desktop launch | ~24MB RSS | PASS |
- Rust 1.80+ toolchain installed.
- Windows, macOS, or Linux.
# 1. Clone the repository
git clone https://github.com/l1khith/Nodera.git
cd Nodera
# 2. Build the desktop release binary
cargo build --workspace --release
# 3. Launch Nodera
./target/release/nodera-desktop# Run the complete test suite (90 unit, integration, and stress tests)
cargo test --workspace
# Run Clippy lints (zero-warning policy)
cargo clippy --workspace --all-targets -- -D warnings
# Check code formatting
cargo fmt --all -- --check| Shortcut | Action | Scope |
|---|---|---|
| Ctrl + N | Create a new note | Global |
| Ctrl + S | Save current note | Editor |
| Ctrl + P | Open Command Palette / Quick Search | Global |
| Ctrl + E | Toggle Reading / Edit Mode | Editor |
| Ctrl + G | Toggle Right Inspector Panel (Local Graph) | Global |
| Ctrl + I | Import PDF as Markdown | Global |
| Ctrl + , | Open Settings & Vault Preferences | Global |
| Escape | Close Modals / Command Palette | Dialogs |
Comprehensive architecture, design decisions, and specifications are located in docs/:
docs/design-system.md: Canonical color tokens, typography, and UI guidelines.docs/architecture.md: Architectural layers, concurrency model, and data flow.docs/database.md: SQLite schema, relational indexing, and Tantivy document schemas.docs/pdf-import.md: PDF processing pipeline, paragraph reconstruction heuristics.docs/decisions/: Architecture Decision Records (ADRs).
Contributions, bug reports, and feature requests are welcome!
- Fork the repository.
- Create your feature branch (
git checkout -b feature/amazing-feature). - Ensure formatting and clippy pass (
cargo fmt --all && cargo clippy --workspace --all-targets -- -D warnings). - Ensure tests pass (
cargo test --workspace). - Commit your changes (
git commit -m 'Add amazing feature'). - Push to the branch (
git push origin feature/amazing-feature). - Open a Pull Request.
Nodera is free and open-source software licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
See the LICENSE file for the full license text.
