{"id":50820074,"url":"https://github.com/lappom/calliop","last_synced_at":"2026-06-13T13:01:15.843Z","repository":{"id":363920366,"uuid":"1265543900","full_name":"Lappom/Calliop","owner":"Lappom","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-11T00:04:28.000Z","size":473,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T00:11:39.657Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lappom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-10T21:45:40.000Z","updated_at":"2026-06-10T23:14:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Lappom/Calliop","commit_stats":null,"previous_names":["lappom/calliop"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Lappom/Calliop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lappom%2FCalliop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lappom%2FCalliop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lappom%2FCalliop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lappom%2FCalliop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lappom","download_url":"https://codeload.github.com/Lappom/Calliop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lappom%2FCalliop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34285191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-13T13:00:50.235Z","updated_at":"2026-06-13T13:01:15.837Z","avatar_url":"https://github.com/Lappom.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"public/app-icon.png\" alt=\"Calliop\" width=\"96\" height=\"96\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eCalliop\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eUniversal voice dictation, 100% local.\u003c/strong\u003e\u003cbr /\u003e\n  Speak into any application — transcription and AI post-processing run on your machine, with no cloud.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Lappom/Calliop/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/Lappom/Calliop?label=version\u0026color=000000\" alt=\"Version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-AGPL--3.0-blue\" alt=\"AGPL-3.0 License\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Lappom/Calliop/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/Lappom/Calliop/actions/workflows/ci.yml/badge.svg\" alt=\"CI\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-Windows%2010%2F11-0078D4?logo=windows\u0026logoColor=white\" alt=\"Windows platform\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/offline--first-yes-11ff99\" alt=\"Offline-first\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Lappom/Calliop/releases\"\u003eDownload\u003c/a\u003e ·\n  \u003ca href=\"docs/user-guide.md\"\u003eUser guide\u003c/a\u003e ·\n  \u003ca href=\"docs/installation.md\"\u003eInstallation\u003c/a\u003e ·\n  \u003ca href=\"CONTRIBUTING.md\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Why Calliop?\n\nCalliop is an **open-source** alternative to [Wispr Flow](https://wisprflow.ai/): global dictation, Whisper transcription, and optional AI cleanup — **without sending your voice or text to a remote service**.\n\n| | Calliop |\n|---|---|\n| **Privacy** | Audio and ML inference run locally |\n| **Integration** | Text injection into any Windows application |\n| **Quality** | Whisper (`small`, `distil-fr-dec16`) + local Qwen3 for auto-edits |\n| **Customization** | Personal dictionary, snippets, per-app tone, FTS history |\n| **Transparency** | Source code under AGPL-3.0, no account required |\n\n\u003e **Network usage:** only the initial model download (~466 MB) and optional auto-updates use the Internet. Dictation itself works fully offline.\n\n---\n\n## Features\n\n- **Global dictation** — `Alt + Space` shortcut (toggle or push-to-talk) in any app\n- **Local transcription** — Whisper via [whisper.cpp](https://github.com/ggerganov/whisper.cpp), optional Vulkan GPU acceleration\n- **AI auto-edits** — filler removal, punctuation, and light rephrasing via Qwen3 (llama.cpp sidecar)\n- **Overlay \u0026 tray** — visual state indicator, system tray icon, auto-start\n- **Dictionary \u0026 snippets** — learned corrections, custom voice shortcuts\n- **Per-app context** — tone adapted to the active app (Slack, email, IDE…)\n- **History \u0026 insights** — full-text search, latency, words/min, usage by app\n- **Bilingual UI** — French and English\n\n---\n\n## Installation\n\n**Windows 10/11** (supported platform in v1)\n\n1. Download the installer from [GitHub Releases](https://github.com/Lappom/Calliop/releases):\n   - `Calliop_*_x64-setup.exe` (NSIS, recommended) or `.msi`\n2. Install [WebView2 Runtime](https://developer.microsoft.com/microsoft-edge/webview2/) if needed.\n3. Accept the SmartScreen warning (unsigned binaries in v1).\n4. On first launch, the Whisper model downloads automatically (~466 MB).\n\nFull guide: [docs/installation.md](docs/installation.md)\n\n\u003e **macOS / Linux:** experimental artifacts (DMG, AppImage, deb) are provided unsigned and untested for v1 — use at your own risk.\n\n---\n\n## Quick start\n\n1. Launch Calliop — an icon appears in the system tray.\n2. Press **`Alt + Space`** to start dictation (release after 400 ms for push-to-talk mode).\n3. Speak — the overlay shows listening, processing, and injection states.\n4. Text is inserted into the active application.\n\nFull guide: [docs/user-guide.md](docs/user-guide.md) · Troubleshooting: [docs/troubleshooting.md](docs/troubleshooting.md)\n\n---\n\n## Architecture\n\n```mermaid\nflowchart LR\n  subgraph input [Input]\n    Mic[Microphone]\n    HK[Global shortcut]\n  end\n\n  subgraph core [Local pipeline]\n    Audio[Capture + VAD]\n    STT[Whisper STT]\n    LLM[Qwen3 auto-edits]\n    Inject[Text injection]\n  end\n\n  subgraph storage [Local storage]\n    SQLite[(SQLite)]\n  end\n\n  Mic --\u003e Audio\n  HK --\u003e Audio\n  Audio --\u003e STT\n  STT --\u003e LLM\n  LLM --\u003e Inject\n  STT --\u003e SQLite\n  LLM --\u003e SQLite\n```\n\n| Layer | Technology |\n|-------|------------|\n| Desktop shell | [Tauri 2](https://v2.tauri.app/) |\n| UI | React 19, TypeScript, Tailwind CSS 4 |\n| Audio | [cpal](https://github.com/RustAudio/cpal), VAD |\n| STT | [whisper-rs](https://github.com/tazz4843/whisper-rs) (whisper.cpp) |\n| LLM | Qwen3 via `calliop-llm-worker` sidecar (llama.cpp) |\n| Injection | Clipboard + keyboard simulation ([enigo](https://github.com/enigo-rs/enigo)) |\n| Persistence | SQLite (settings, history, dictionary) |\n\n---\n\n## Development\n\n### Prerequisites (Windows)\n\n- [Rust](https://rustup.rs/) (stable)\n- [Node.js](https://nodejs.org/) 20+\n- [pnpm](https://pnpm.io/installation) 10+\n- [WebView2 Runtime](https://developer.microsoft.com/microsoft-edge/webview2/)\n- [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) — \"Desktop development with C++\" workload\n- [CMake](https://cmake.org/download/) 4.x (`winget install Kitware.CMake`)\n\n### Run in dev\n\n```powershell\npnpm install\npnpm tauri:dev\n```\n\n\u003e Use `pnpm tauri:dev` (not `pnpm tauri dev`) — the script ensures CMake 4.x is available and builds the LLM sidecar.\n\n### CLI tests (isolated modules)\n\nFrom `src-tauri/`:\n\n```powershell\ncargo run --bin test-audio -- record 3s output.wav\ncargo run --bin test-stt -- output.wav\ncargo run --bin test-inject -- \"Hello, this is a test\"\ncargo run --bin test-llm -- \"uh hello so yeah\"\n```\n\n### Pre-PR checks\n\n```powershell\npnpm typecheck \u0026\u0026 pnpm lint\ncd src-tauri\ncargo fmt --check\ncargo clippy --all-targets --all-features -- -D warnings\ncargo test\n```\n\n### Build installer\n\n```powershell\npnpm tauri build --features gpu\n```\n\nArtifacts land in `src-tauri/target/release/bundle/`.\n\n---\n\n## Project structure\n\n```\nsrc-tauri/src/\n  audio/       # Microphone capture, VAD\n  stt/         # Whisper bindings\n  llm/         # Local post-processing (sidecar)\n  inject/      # Text injection\n  hotkey/      # Global shortcuts\n  store/       # SQLite (config, history)\n  pipeline/    # Dictation orchestration\nsrc/\n  components/  # Overlay, settings, onboarding\n  hooks/\n  lib/\ncrates/\n  calliop-llm-worker/   # llama.cpp sidecar\n  calliop-prompt/       # LLM prompts\n```\n\nFull roadmap: [PLAN.md](PLAN.md)\n\n---\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [User guide](docs/user-guide.md) | Shortcuts, settings, features |\n| [Installation](docs/installation.md) | Installers, first launch, uninstall |\n| [Troubleshooting](docs/troubleshooting.md) | Microphone, injection, models, logs |\n| [STT benchmarks](docs/benchmarks.md) | Whisper accuracy and latency |\n| [Release v0.1.0](releases/v0.1.0.md) | Release notes |\n| [Contributing](CONTRIBUTING.md) | Workflow, conventions, releases |\n\n---\n\n## Contributing\n\nContributions are welcome — please respect the **offline-first** constraint for the core (no cloud calls for STT, LLM, or injection).\n\n1. Fork → branch `feature/short-name`\n2. Implement with the checks above\n3. Open a PR with a clear description and test plan\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n---\n\n## Known limitations (v0.1.0)\n\n- Windows binaries are **unsigned** (SmartScreen warning)\n- ML models download separately on first use\n- Auto-updates are enabled by default (disable in Settings → Advanced)\n- Official support is **Windows only** in v1\n\n---\n\n## License\n\n[AGPL-3.0](LICENSE) — Copyright © Calliop Contributors\n\nIf you modify Calliop and distribute it (including as a SaaS), you must publish your changes under the same license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flappom%2Fcalliop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flappom%2Fcalliop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flappom%2Fcalliop/lists"}