Website - Docs - Community - Bug reports
- โฌ๏ธ Download
- ๐ฎ Overview
- โจ Features
- ๐ฐ Tech Stack
- Local Development
- ๐ค Contributing
- ๐ License
brew install --cask amicalLocal-first AI Dictation app.
Amical is an open source AI-powered dictation and note-taking app that runs entirely on your machine. Powered by Whisper for speech-to-text and open source LLMs for intelligent processing, Amical gives you the power of AI dictation with complete privacy.
Context-aware dictation that adapts to what you're doing: drafting an email, chatting on Discord, writing prompts in your IDE, or messaging friends. Amical detects the active app and formats your speech accordingly.
โ๏ธ - Done, โ - In Progress, โฏ - Planned
๐ Super-fast dictation with AI-enhanced accuracy โ๏ธ
๐ง Context-aware speech-to-text based on the active app โ๏ธ
๐ Smart voice notes โ summaries, tasks, structured notes โ
๐ MCP integration โ voice commands that control your apps โฏ
๐๏ธ Real-time meeting transcription (mic + system audio) โฏ
๐ง Extensible via hotkeys, voice macros, custom workflows โ๏ธ
๐ Privacy-first: works offline, one click setup of local models in-app โ๏ธ
๐ช Floating widget for frictionless start/stop with custom hotkeys โ๏ธ
- ๐ค Whisper
- ๐ฆ Ollama
- ๐งโ๐ป Typescript
- ๐ฅ๏ธ Electron
- ๐จ TailwindCSS
- ๐ง๐ผโ๐จ Shadcn
- ๐ Better-Auth
- ๐งโโ๏ธ Zod
- ๐ Vitest
- ๐ Turborepo
These steps run the desktop app, which currently supports macOS and Windows. Linux is not supported because the app does not yet have a Linux native helper.
- Node.js 24.x
- pnpm 10.15.0 (the version pinned in
package.json) - CMake 3.20 or later
- macOS: Xcode or the Xcode Command Line Tools with Swift 5.9 or later
(
xcode-select --install). Local Whisper transcription requires macOS 15 or later. - Windows: Visual Studio 2022 Build Tools with the Desktop development with C++ workload, plus the .NET 8 SDK. Git Bash is recommended because some development scripts use POSIX utilities.
Clone with submodules so the Whisper sources are available:
git clone --recurse-submodules https://github.com/amicalhq/amical.git
cd amicalIf you already cloned without --recurse-submodules, initialize them now:
git submodule update --init --recursiveEnable Corepack so it uses the pinned pnpm version, install dependencies, and download the Node.js binary used by the local Whisper worker:
corepack enable
pnpm install --frozen-lockfile
pnpm --filter @amical/desktop download-nodepnpm install compiles the native Whisper addon, so it can take a few minutes.
It also applies the repository's patches inside the whisper.cpp submodule.
Seeing that submodule marked as modified in git status afterward is expected.
Quit any installed copy of Amical first; Electron allows only one Amical instance at a time. Then run:
pnpm turbo run dev --filter=@amical/desktopWhen finished, quit the development app from its tray menu and then press Ctrl+C. Stopping the terminal command alone may leave the Electron app running.
No .env file is required for local transcription. The first-run onboarding
downloads a local model and requests the required microphone and OS
permissions. Only configure apps/desktop/.env from
apps/desktop/.env.example when working on optional cloud, authentication, or
telemetry integrations, and replace its placeholder values before use.
Before opening a pull request, run:
pnpm type:check
pnpm testContributions are welcome! Reach out to the team in our Discord server to learn more.
- ๐ Report an Issue: Found a bug? Let us know!
- ๐ฌ Start a Discussion: Have ideas or suggestions? We'd love to hear from you.
Released under MIT.
