This page introduces Hyprnote, an AI-powered meeting notes application focused on privacy, local-first operation, and real-time transcription and enhancement. It summarizes the system's purpose, high-level architecture, and core technical approach. For details on specific subsystems, see the Architecture and Core Features sections.
Hyprnote is a desktop application for capturing, transcribing, and enhancing meeting notes using on-device AI. Its primary goals are:
This page covers:
For details on:
Sources: Cargo.toml10-254 pnpm-lock.yaml1-700
Hyprnote is a desktop application for private, AI-powered meeting notes. It enables users to:
Key Properties:
| Aspect | Description |
|---|---|
| Architecture | Tauri 2.8 (Rust backend, plugin system) + React 19.2 (TypeScript frontend) |
| Privacy Model | Local-first: all ML models (STT, LLM) run on-device by default |
| Distribution | Native binaries, multi-channel (staging, nightly, stable) |
| Platforms | macOS 14.2+, Windows (WebView2), Linux (WebKitGTK 4.1) |
| Licensing | Keygen license validation, offline fallback supported |
Distribution channels are configured via tauri.conf.json, tauri.conf.nightly.json, and tauri.conf.stable.json.
Sources: Cargo.toml10-254 pnpm-lock.yaml1-700
Below is a mapping of user-facing features to backend plugin code entities. This diagram bridges the natural language feature space to the code entity space.
Diagram: "Feature-to-Plugin and Code Entity Mapping"
Core Features and Corresponding Code Entities:
| Feature | Code Entity / Plugin | Description |
|---|---|---|
| Real-time Transcription | tauri-plugin-listener, hypr-audio, tauri-plugin-local-stt, hypr-whisper | Captures audio, performs VAD, streams to STT, stores transcript |
| AI Enhancement | tauri-plugin-template, hypr-template, tauri-plugin-local-llm, hypr-llm | Renders Jinja templates, streams LLM output for note enhancement |
| AI Chat | tauri-plugin-local-llm, hypr-llm | Context-aware chat, OpenAI-compatible API |
| Data Persistence | tauri-plugin-db, hypr-db-user | Stores sessions, events, words, tags, etc. |
| Offline Operation | All above plugins/crates | All models and data local by default |
| Integrations | plugins/calendar-apple, plugins/calendar-google, crates/nango | Calendar and OAuth integrations |
Sources: Cargo.toml10-254 pnpm-lock.yaml1-700 plugins/db plugins/listener plugins/local-stt plugins/local-llm crates/audio crates/whisper crates/llm crates/template crates/db-user
The Hyprnote system is organized as a layered desktop application, with a React frontend, a Rust backend, and a modular plugin system. The following diagram shows the major systems and their relationships, using code entity names for traceability.
Diagram: "Overall System Architecture (Code Entity Mapping)"
Architectural Layers and Key Code Entities:
| Layer | Code Entity | Description |
|---|---|---|
| Presentation | apps/desktop2/src | React UI, state management, routing |
| IPC Bridge | Tauri IPC, @tauri-apps/api | Type-safe command bridge |
| Plugin Layer | plugins/* | Rust plugins for audio, STT, LLM, DB, etc. |
| Core Crates | crates/* | Audio I/O, LLM inference, DB core, etc. |
| Data Layer | SQLite via crates/db-user | Local data persistence |
Sources: Cargo.toml10-254 pnpm-lock.yaml1-700 apps/desktop2/src-tauri plugins/listener plugins/local-stt plugins/local-llm plugins/db crates/audio crates/whisper crates/llama crates/db-core crates/db-user
| Component | Technology / Crate | Code Reference |
|---|---|---|
| Application Framework | Tauri 2.8 | Cargo.toml90-110 |
| Language | Rust 1.90.0+ | Cargo.toml20-21 |
| Database | SQLite via libsql | crates/db-core crates/db-user |
| Audio Processing | cpal, cidre (macOS), wasapi (Windows) | crates/audio |
| STT Engine | Whisper.cpp via hypr-whisper | crates/whisper plugins/local-stt |
| LLM Engine | llama.cpp via hypr-llama | crates/llama plugins/local-llm |
| Templating | minijinja | crates/template |
| IPC Type Safety | specta, tauri-specta | Cargo.toml209-211 |
| Observability | tracing, Sentry | Cargo.toml201-203 |
| Component | Technology / Package | Code Reference |
|---|---|---|
| UI Framework | React 19.2 | pnpm-lock.yaml145-146 |
| Routing | TanStack Router | pnpm-lock.yaml81-83 |
| State Management | Zustand, Tinybase | pnpm-lock.yaml156-173 |
| Editor | Tiptap 3.x | packages/tiptap/package.json23-41 |
| UI Components | Radix UI | packages/ui/package.json19-37 |
| Styling | Tailwind CSS | packages/ui/package.json61 |
| Build Tool | Vite | pnpm-lock.yaml211-213 |
| Type Safety | TypeScript 5.8+ | pnpm-lock.yaml208-210 |
Feature flags in Cargo.toml enable GPU acceleration and platform-specific audio backends:
Sources: Cargo.toml10-254 pnpm-lock.yaml1-700 packages/ui/package.json1-65 packages/tiptap/package.json1-62
The Hyprnote repository is a monorepo with both Rust (Cargo) and JavaScript/TypeScript (pnpm) workspaces.
Diagram: "Monorepo Structure (Code Entity Mapping)"
Key Code Entities by Domain:
| Domain | Code Entity | Path |
|---|---|---|
| Audio | hypr-audio | crates/audio |
| LLM | hypr-llm | crates/llm |
| STT | hypr-whisper | crates/whisper |
| Database | hypr-db-user | crates/db-user |
| Templates | hypr-template | crates/template |
| UI Components | @hypr/ui | packages/ui |
| Editor | @hypr/tiptap | packages/tiptap |
| Utilities | @hypr/utils | packages/utils |
Sources: Cargo.toml10-254 pnpm-lock.yaml1-700 packages/ui/package.json1-65 packages/tiptap/package.json1-62 packages/utils/package.json1-30
| Channel | Config File | Identifier | Update Endpoint |
|---|---|---|---|
| Staging | tauri.conf.json | com.hyprnote.dev | Not updatable |
| Nightly | tauri.conf.nightly.json | com.hyprnote.nightly | Nightly CDN |
| Stable | tauri.conf.stable.json | com.hyprnote.stable | Stable CDN |
Each channel uses a different bundle identifier and update endpoint. LLM and STT models are bundled or downloaded as resources.
Diagram: "Build, Test, and Release Pipeline"
Build steps include:
pnpm build)tauri build)Sources: Cargo.toml10-254 pnpm-lock.yaml1-700
| Tool | Version | Purpose |
|---|---|---|
| Rust | 1.90.0+ | Backend compilation |
| Node.js | 18+ | Frontend tooling |
| pnpm | Latest | Package management |
| Python | 3.x | Build scripts |
| Poetry | Latest | Python dependencies |
| protoc | 25.7 | Protocol buffer compilation |
Platform-Specific:
libwebkit2gtk-4.1-dev, libasound2-dev, build essentialsDevelopment Commands:
Testing:
Type Safety Workflow:
#[specta::specta]collect_commands![] in lib.rs252-259cargo test -p desktop export_types to generate bindings@/types in TypeScript: import { commands } from "@/types"Sources: apps/desktop/package.json6-16 apps/desktop/src-tauri/src/lib.rs263-279 apps/desktop/src-tauri/tauri.conf.json7-11
Summary: Hyprnote is a sophisticated local-first desktop application that combines real-time audio processing, speech-to-text transcription, and AI-powered content enhancement. Built with Tauri and React, it leverages a plugin-based architecture for modularity and uses local ML models (Whisper, Llama.cpp) to ensure privacy. The system supports multiple platforms with GPU acceleration and provides optional cloud integrations while maintaining offline-first operation.
Refresh this wiki
This wiki was recently refreshed. Please wait 2 days to refresh again.