Privacy-focused, command-line note-taking app that uses Locaal's on-device AI SDK for transcription and summarization. Transcribe meetings and generate concise summaries, all locally. Free, open-source, and built for developers.
Install a pre-built version from the Releases page, including an installer for windows or a simple standalone app for Mac.
Clone the repository:
git clone https://github.com/locaal-ai/note-taker.git
cd note-taker
Install the dependencies:
pip install -r requirements.txt
Navigate to the src
directory:
cd src
Run the main script:
python main.py
Follow the on-screen prompts to:
This project uses PyInstaller to create standalone executables for Windows, macOS, and Linux. The build process is automated using GitHub Actions, but you can also build the app locally.
Install simpler-whisper
(https://github.com/locaal-ai/simpler-whisper) prebuilt wheel and llama-cpp-python
Invoke-WebRequest -Uri https://github.com/locaal-ai/simpler-whisper/releases/download/0.1.0/simpler_whisper-0.1.0-cp311-cp311-cuda-win64-win_amd64.whl -OutFile simpler_whisper-0.1.0-cp311-cp311-win_amd64.whl
pip install simpler_whisper-0.1.0-cp311-cp311-win_amd64.whl
rm simpler_whisper-0.1.0-cp311-cp311-win_amd64.whl
pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu125
Install other dependencies:
pip install -r requirements.txt
Download the whisper model:
mkdir data
Invoke-WebRequest -Uri https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.en-q5_1.bin?download=true -OutFile data/ggml-small.en-q5_1.bin
For CPU version:
pyinstaller --clean --noconfirm note-taker.spec -- --win
For CUDA version:
pyinstaller --clean --noconfirm note-taker.spec -- --win --cuda
The executable will be in the dist
folder.
To create an installer:
iscc note-taker.iss
Install dependencies:
pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/metal
pip install -r requirements.txt
Download the models:
mkdir -p data/
wget -P data/ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.en-q5_1.bin?download=true" -O data/ggml-small.en-q5_1.bin
curl -L https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.en-encoder.mlmodelc.zip?download=true -o data/ggml-small.en-encoder.mlmodelc.zip
unzip data/ggml-small.en-encoder.mlmodelc.zip -d data
rm data/ggml-small.en-encoder.mlmodelc.zip
Build the app:
pyinstaller --clean --noconfirm note-taker.spec -- --mac_osx
The app bundle will be in the dist
folder.
To create a DMG:
hdiutil create -volname "note-taker" -srcfolder dist/note-taker.app -ov -format UDRO note-taker-macos.dmg
Install dependencies:
pip install -r requirements.txt
Download the model:
wget -P data/ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.en-q5_1.bin?download=true" -O data/ggml-small.en-q5_1.bin
Build the app:
pyinstaller --clean --noconfirm note-taker.spec
The executable will be in the dist
folder.
To create a tarball:
tar -cvf note-taker.tar -C dist note-taker
Our GitHub Actions workflow (build.yaml
) automates builds for multiple platforms:
The workflow handles dependency installation, building, and packaging for each platform. For macOS, it also includes code signing and notarization steps.
Run the note-taker.exe
file in the dist
folder, or use the installer created by Inno Setup.
Open the note-taker.app
bundle in the dist
folder, or mount the created DMG and drag the app to your Applications folder.
Run the note-taker
executable in the dist
folder.
Our GitHub Actions workflow (build.yaml
) automates builds for multiple platforms, ensuring the app is always ready for distribution with the latest local AI capabilities.
src/
├── app.py
├── audio
│ ├── AudioCapture.py
│ ├── Transcriber.py
│ └── textual_transcription_textarea.py
├── llm
│ └── model.py
├── main.py
├── main.tcss
├── notes
│ └── manager.py
├── notes_editor_components.py
├── settings_screen.py
├── template_select_modal.py
└── utils
├── defaults.py
├── helpers.py
├── resource_path.py
└── storage.py
simpler-whisper
: Local implementation of Whisper for speech recognitionllama-cpp-python
: Python bindings for the llama.cpp librarysounddevice
: For audio capturetextual
: TUI (Text User Interface) frameworkFor a complete list, see requirements.txt
.
We welcome contributions that enhance the app's local AI capabilities, improve privacy features, or optimize performance. Please feel free to submit a Pull Request.
This project is licensed under the MIT License. See the LICENSE file for details.
While this app processes all data locally, users are responsible for ensuring compliance with local laws and regulations regarding data privacy and AI usage.