diff --git a/README.md b/README.md index 6478fbe..35cf733 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Magnotia +# Lumotia *Think out loud. Keep working.* -Magnotia is a local-first, cognitive-load-aware dictation and task-capture desktop app. Every transcription, LLM cleanup, and task extraction runs on the user's machine. No telemetry, no analytics, no cloud dependency. The app is designed around a single observation: people who think in bursts lose ideas faster than they can type, and the tool's job is to get out of the way. +Lumotia is a local-first, cognitive-load-aware dictation and task-capture desktop app. Every transcription, LLM cleanup, and task extraction runs on the user's machine. No telemetry, no analytics, no cloud dependency. The app is designed around a single observation: people who think in bursts lose ideas faster than they can type, and the tool's job is to get out of the way. --- @@ -21,15 +21,15 @@ Magnotia is a local-first, cognitive-load-aware dictation and task-capture deskt 1. **Local-first is the floor, not a feature.** No voice, transcript, or task ever leaves the user's machine unless they explicitly send it. No telemetry. 2. **Cognitive load is the limiting resource.** Every new setting must earn its mental real estate. Every interaction should reduce, not add, decisions. -3. **Composable, not monolithic.** Magnotia is a dictation primitive: via MCP, CLI, and filesystem export, it slots into whatever workflow the user already has (Obsidian, Claude Desktop, Cline, any text field). +3. **Composable, not monolithic.** Lumotia is a dictation primitive: via MCP, CLI, and filesystem export, it slots into whatever workflow the user already has (Obsidian, Claude Desktop, Cline, any text field). 4. **LLM scope is narrow.** The in-app LLM does transcription cleanup and task extraction. It is not a wake-word agent, not a chat UI, not a multi-provider cloud fan-out. 5. **Raw transcript is always recoverable.** Cleanup is additive, never destructive. The user can always see and revert to what Whisper heard. -These are enforced in the codebase (where practical) and in the docs under [`docs/whisper-ecosystem/magnotia-context.md`](docs/whisper-ecosystem/magnotia-context.md). +These are enforced in the codebase (where practical) and in the docs under [`docs/whisper-ecosystem/Lumotia-context.md`](docs/whisper-ecosystem/Lumotia-context.md). --- -## What Magnotia does today +## What Lumotia does today ### Speech-to-text - Vulkan-accelerated local **Whisper** inference via [whisper-rs](https://github.com/tazz4843/whisper-rs) 0.16 + whisper.cpp. Works on NVIDIA, AMD, Intel Arc, Apple (via MoltenVK), and integrated graphics. @@ -65,7 +65,7 @@ These are enforced in the codebase (where practical) and in the docs under [`doc - Transcript editor window (`/viewer`) with debounced autosave. ### External integration -- **MCP stdio server** (`magnotia-mcp`) exposing read-only transcripts and tasks to any Model Context Protocol client (Claude Desktop, Cline, Cursor, etc.). No authentication, read-only, local-only. +- **MCP stdio server** (`Lumotia-mcp`) exposing read-only transcripts and tasks to any Model Context Protocol client (Claude Desktop, Cline, Cursor, etc.). No authentication, read-only, local-only. ### Accessibility - Dyslexia-friendly fonts bundled: Lexend, Atkinson Hyperlegible Next, OpenDyslexic. @@ -84,7 +84,7 @@ These are enforced in the codebase (where practical) and in the docs under [`doc ## Architecture -Magnotia is a Tauri 2 desktop app with three layers: +Lumotia is a Tauri 2 desktop app with three layers: ``` ┌─────────────────────────────────────────────────────────────────┐ @@ -102,18 +102,18 @@ Magnotia is a Tauri 2 desktop app with three layers: │ window-state │ ├─────────────────────────────────────────────────────────────────┤ │ Rust workspace (crates/) │ -│ magnotia-core, magnotia-audio, magnotia-transcription, magnotia-llm, │ -│ magnotia-ai-formatting, magnotia-storage, magnotia-hotkey, │ -│ magnotia-cloud-providers, magnotia-mcp │ +│ Lumotia-core, Lumotia-audio, Lumotia-transcription, Lumotia-llm, │ +│ Lumotia-ai-formatting, Lumotia-storage, Lumotia-hotkey, │ +│ Lumotia-cloud-providers, Lumotia-mcp │ └─────────────────────────────────────────────────────────────────┘ ``` -The Rust workspace is the brain; Tauri is the OS integration surface; Svelte is the UI. The MCP server (`magnotia-mcp`) is a separate binary that opens Magnotia's SQLite store read-only — it's Magnotia-as-primitive for external agents. +The Rust workspace is the brain; Tauri is the OS integration surface; Svelte is the UI. The MCP server (`Lumotia-mcp`) is a separate binary that opens Lumotia's SQLite store read-only — it's Lumotia-as-primitive for external agents. ### Repository layout ``` -magnotia/ +Lumotia/ ├── Cargo.toml # workspace root ├── src-tauri/ # Tauri app (main binary + commands) │ ├── src/ @@ -165,15 +165,15 @@ magnotia/ | Crate | Responsibility | |---|---| -| **`magnotia-core`** | Shared types (`Segment`, `Transcript`, `Megabytes`, `ModelId`), constants, the `Engine` / `SpeedTier` / `AccuracyTier` enums, hardware probe (`sysinfo`-based), model registry (Whisper + Parakeet entries), hardware-aware recommendation scoring, `process_watch` for meeting detection. | -| **`magnotia-audio`** | `cpal`-based microphone capture with device hotplug + error forwarding, VAD, `rubato` streaming resampler to 16 kHz mono, `symphonia` file decoding, `hound` WAV I/O. | -| **`magnotia-transcription`** | `whisper-rs` backend (`WhisperRsBackend`) that owns a `WhisperContext` and supports `set_initial_prompt`. `LocalEngine` wraps both Whisper and Parakeet (via `transcribe-rs` ONNX) behind a common `Transcriber` trait. Streaming primitives (`VadChunker`, `LocalAgreement`, buffer trim) live in the `streaming/` module. Model manager handles downloads, paths, and disk checks. | -| **`magnotia-llm`** | `llama-cpp-2` engine with a four-tier Qwen3.5 / Qwen3.6 model manager. Three high-level surfaces: `cleanup_text` (formatting), `decompose_task` (3–7 micro-steps, GBNF-constrained JSON array), `extract_tasks` (optional-array, GBNF-constrained). Resumable HTTP downloads with SHA-256 verify. | -| **`magnotia-ai-formatting`** | Post-processing pipeline: filler removal, British English conversion, anti-hallucination filter, smart paragraph breaks on long pauses, optional LLM cleanup. Also hosts the `llm_client::CLEANUP_PROMPT` constant (prompt-injection-hardened). | -| **`magnotia-storage`** | SQLite via `sqlx` 0.8. Migrations, CRUD for transcripts / tasks / subtasks / profiles / profile terms / settings / error log, FTS5 search, file-storage paths. | -| **`magnotia-hotkey`** | Linux `evdev` hotkey listener with device hotplug. Parses Tauri-style hotkey strings (`Ctrl+Shift+R`), emits Pressed / Released events. Works natively on Wayland (no X11 dependency). Checks `/dev/input/event*` access on startup; surfaces a clear "add yourself to the `input` group" error when missing. | -| **`magnotia-cloud-providers`** | BYOK cloud-STT provider stubs. Currently empty scaffolding. When populated: OpenAI-compatible endpoint + Anthropic (ceiling for scope). | -| **`magnotia-mcp`** | Standalone `magnotia-mcp` binary implementing the MCP stdio protocol (2024-11-05). Read-only tools: `list_transcripts`, `get_transcript`, `search_transcripts`, `list_tasks`. Opens Magnotia's SQLite store. | +| **`Lumotia-core`** | Shared types (`Segment`, `Transcript`, `Megabytes`, `ModelId`), constants, the `Engine` / `SpeedTier` / `AccuracyTier` enums, hardware probe (`sysinfo`-based), model registry (Whisper + Parakeet entries), hardware-aware recommendation scoring, `process_watch` for meeting detection. | +| **`Lumotia-audio`** | `cpal`-based microphone capture with device hotplug + error forwarding, VAD, `rubato` streaming resampler to 16 kHz mono, `symphonia` file decoding, `hound` WAV I/O. | +| **`Lumotia-transcription`** | `whisper-rs` backend (`WhisperRsBackend`) that owns a `WhisperContext` and supports `set_initial_prompt`. `LocalEngine` wraps both Whisper and Parakeet (via `transcribe-rs` ONNX) behind a common `Transcriber` trait. Streaming primitives (`VadChunker`, `LocalAgreement`, buffer trim) live in the `streaming/` module. Model manager handles downloads, paths, and disk checks. | +| **`Lumotia-llm`** | `llama-cpp-2` engine with a four-tier Qwen3.5 / Qwen3.6 model manager. Three high-level surfaces: `cleanup_text` (formatting), `decompose_task` (3–7 micro-steps, GBNF-constrained JSON array), `extract_tasks` (optional-array, GBNF-constrained). Resumable HTTP downloads with SHA-256 verify. | +| **`Lumotia-ai-formatting`** | Post-processing pipeline: filler removal, British English conversion, anti-hallucination filter, smart paragraph breaks on long pauses, optional LLM cleanup. Also hosts the `llm_client::CLEANUP_PROMPT` constant (prompt-injection-hardened). | +| **`Lumotia-storage`** | SQLite via `sqlx` 0.8. Migrations, CRUD for transcripts / tasks / subtasks / profiles / profile terms / settings / error log, FTS5 search, file-storage paths. | +| **`Lumotia-hotkey`** | Linux `evdev` hotkey listener with device hotplug. Parses Tauri-style hotkey strings (`Ctrl+Shift+R`), emits Pressed / Released events. Works natively on Wayland (no X11 dependency). Checks `/dev/input/event*` access on startup; surfaces a clear "add yourself to the `input` group" error when missing. | +| **`Lumotia-cloud-providers`** | BYOK cloud-STT provider stubs. Currently empty scaffolding. When populated: OpenAI-compatible endpoint + Anthropic (ceiling for scope). | +| **`Lumotia-mcp`** | Standalone `Lumotia-mcp` binary implementing the MCP stdio protocol (2024-11-05). Read-only tools: `list_transcripts`, `get_transcript`, `search_transcripts`, `list_tasks`. Opens Lumotia's SQLite store. | ### Tauri commands (src-tauri/src/commands/) @@ -313,24 +313,24 @@ Beyond this README, the repo ships extensive internal documentation: ### Product + strategy — `docs/brief/` Research briefs, competitive analysis, and strategic framing. Start with: -- [`what-magnotia-is.md`](docs/brief/what-magnotia-is.md) — product thesis +- [`what-Lumotia-is.md`](docs/brief/what-Lumotia-is.md) — product thesis - [`why-current-tools-fail.md`](docs/brief/why-current-tools-fail.md) — market gap - [`design-principles.md`](docs/brief/design-principles.md) — full principle list - [`target-audience.md`](docs/brief/target-audience.md), [`market-size-demographics.md`](docs/brief/market-size-demographics.md) - Appendices on cognitive ergonomics, AI body doubling, evolutionary psychology, implementation intentions, HITL scaffolding, voice interfaces ### Brand — `docs/brand/` -- [`magnotia-brand-guidelines.md`](docs/brand/magnotia-brand-guidelines.md) -- [`magnotia-brand-platform.md`](docs/brand/magnotia-brand-platform.md) +- [`Lumotia-brand-guidelines.md`](docs/brand/Lumotia-brand-guidelines.md) +- [`Lumotia-brand-platform.md`](docs/brand/Lumotia-brand-platform.md) ### Technical research — `docs/whisper-ecosystem/` -Cross-repo survey of 10 OSS Whisper projects, the Magnotia-specific atomic task backlog, and the two Cursor workstream plans. +Cross-repo survey of 10 OSS Whisper projects, the Lumotia-specific atomic task backlog, and the two Cursor workstream plans. - [`brief.md`](docs/whisper-ecosystem/brief.md) — 31-item task backlog (the canonical research spec) -- [`magnotia-context.md`](docs/whisper-ecosystem/magnotia-context.md) — ideology, shipped state, file-ownership fence for cloud AI agents +- [`Lumotia-context.md`](docs/whisper-ecosystem/Lumotia-context.md) — ideology, shipped state, file-ownership fence for cloud AI agents - [`workstream-A.md`](docs/whisper-ecosystem/workstream-A.md), [`workstream-B.md`](docs/whisper-ecosystem/workstream-B.md) — executed workstream plans ### GPU tuning — `docs/gpu-tuning/` -- [`plan.md`](docs/gpu-tuning/plan.md) — MVP plan for GGML env-var panel + `magnotia-bench` auto-tuner + `magnotia-configs` community repo +- [`plan.md`](docs/gpu-tuning/plan.md) — MVP plan for GGML env-var panel + `Lumotia-bench` auto-tuner + `Lumotia-configs` community repo ### Session handovers - [`HANDOVER.md`](HANDOVER.md) — latest session summary @@ -352,7 +352,7 @@ Pinned roadmap items (scoped in docs and session memory): - **Phase 4** — remaining items from [`workstream-A.md`](docs/whisper-ecosystem/workstream-A.md) + [`workstream-B.md`](docs/whisper-ecosystem/workstream-B.md) - **Voice calibration** — three-tier plan replacing the hardcoded speech-gate with per-user baselines - **GPU community tuning** — see [`docs/gpu-tuning/plan.md`](docs/gpu-tuning/plan.md); five-phase roadmap from settings panel to agentic auto-tuner + community config repo -- **Cloud endpoint contract test** — when `magnotia-cloud-providers` grows a real provider +- **Cloud endpoint contract test** — when `Lumotia-cloud-providers` grows a real provider - **`ggml` dedup** — replace the interim `-Wl,--allow-multiple-definition` link flag with a proper shared-lib setup; unblocks custom shader / backend work - **Mobile (iOS / Android)** — long-horizon, gated on the single-binary Rust stack scaling @@ -360,7 +360,7 @@ Explicitly shelved (not coming without specific community signal): - Wake-word / always-listening agent - Chat-style LLM UI - Multi-provider cloud fan-out beyond OpenAI-compatible + Anthropic -- Second notes-editing surface (transcripts leave Magnotia via frontmatter to Obsidian) +- Second notes-editing surface (transcripts leave Lumotia via frontmatter to Obsidian) - Speaker diarization - Dragon-style passage-based speaker fine-tuning (Whisper has no speaker adaptation) @@ -387,4 +387,4 @@ To be finalised before public beta. Current intent: MIT or similar permissive li ## Contact **Jake Sames** — [jakeadriansames@gmail.com](mailto:jakeadriansames@gmail.com) -Repo: [github.com/jakejars/magnotia](https://github.com/jakejars/magnotia) · [git.corbel.consulting/jake/magnotia](https://git.corbel.consulting/jake/magnotia) +Repo: [github.com/jakejars/Lumotia](https://github.com/jakejars/Lumotia) · [git.corbel.consulting/jake/Lumotia](https://git.corbel.consulting/jake/Lumotia)