Anarlog (formerly Hyprnote/Char) is an open-source, local-first AI meeting notetaker designed with a focus on privacy and user data sovereignty. It records, transcribes, and summarizes meetings using either on-device models or user-provided cloud LLM APIs README.md11-24
The project is managed as a monorepo containing a Tauri-based desktop application, an Axum-based backend API, and a marketing/SaaS web platform Cargo.toml12-18
The ecosystem consists of three primary entry points:
apps/desktop): A Tauri application using React for the frontend and Rust for high-performance systems logic such as audio capture, local STT, and database management apps/desktop/src-tauri/src/lib.rs38-180apps/web): A TanStack Start application for marketing, documentation, and user account/billing management apps/web/package.json12-47apps/api): A backend service that handles LLM/STT proxying, authentication, and third-party integrations Cargo.toml13-50This diagram illustrates how the major subsystems across the monorepo interact, specifically linking high-level concepts to their implementation crates and packages.
Sources: apps/desktop/src-tauri/src/lib.rs90-179 apps/desktop/package.json38-92 Cargo.toml12-18
The monorepo leverages a modern stack focused on performance and type safety:
| Layer | Technology |
|---|---|
| Language | Rust (Backend/Crates), TypeScript (Frontend/Packages) |
| Desktop Framework | Tauri v2 |
| Frontend UI | React, Tailwind CSS v4, Lucide Icons |
| State Management | Zustand, TinyBase (Reactive Data Store) |
| Database | SQLite (Local via db-app), Postgres (Cloud via Supabase) |
| AI/ML | Whisper (STT), Cactus (On-device engine), AI SDK (LLM integration) |
| Build System | pnpm workspaces, Cargo workspaces, Turbo |
Sources: package.json19-25 apps/desktop/package.json106-172 apps/desktop/src-tauri/Cargo.toml23-86 apps/desktop/src-tauri/tauri.conf.json1-12
The application uses a local-first data strategy. Primary application state is managed in a reactive store (TinyBase), which is synchronized across windows and persisted to the local file system as Markdown and JSON files apps/desktop/package.json112-119 Heavy relational data is stored in a local SQLite database managed by the hypr-db-app crate apps/desktop/src-tauri/src/lib.rs88-92
For details, see Data Layer & Persistence.
Anarlog features a hybrid STT pipeline. It captures audio via the hypr-audio-actual provider apps/desktop/src-tauri/src/lib.rs19-35 and processes it locally using tauri-plugin-local-stt (powered by the hypr-cactus engine) apps/desktop/src-tauri/src/lib.rs161-167 or routes it to cloud providers.
For details, see Speech-to-Text (STT) Pipeline.
The desktop app is highly modular, built on a custom Tauri plugin architecture. Almost every feature—from Full-Text Search (tauri-plugin-tantivy) to Calendar integration (tauri-plugin-calendar)—is implemented as a standalone plugin registered during app bootstrap apps/desktop/src-tauri/src/lib.rs108-179
For details, see Tauri Plugin Ecosystem.
The project uses a monorepo structure to share code between the desktop and web applications:
apps/: Contains the main deployable units (desktop, web, api) Cargo.toml12-14crates/: Shared Rust logic, including database schemas (db-app) and AI engines (cactus) Cargo.toml15packages/: Shared TypeScript packages, including the UI library (@hypr/ui) and store definitions (@hypr/store) pnpm-lock.yaml202-213plugins/: Custom Tauri plugins that bridge the frontend and Rust crates Cargo.toml17For setup instructions, see Getting Started & Development Setup. For a deep dive into the folder layout, see Monorepo Structure.
The following diagram bridges the functional areas to their specific locations in the codebase.
Sources: Cargo.toml26-125 apps/desktop/package.json38-92 apps/desktop/src-tauri/src/lib.rs1-6
Refresh this wiki
This wiki was recently refreshed. Please wait 5 days to refresh again.