locaal-ai / note-taker

A lo-fi AI-first note taker running locally on-device
https://locaal.ai/note-taker/
MIT License
35 stars 3 forks source link
ai llm local-llm note-taking notes-app notes-tool summarization transcription

Note Taker - Privacy focused AI note taking app, that runs on-device

[![Build Status](https://github.com/locaal-ai/note-taker/actions/workflows/build.yaml/badge.svg)](https://github.com/locaal-ai/note-taker/actions)

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. 

Features

How It Works

Prerequisites

Installation

  1. Install a pre-built version from the Releases page, including an installer for windows or a simple standalone app for Mac.

  2. Clone the repository:

    git clone https://github.com/locaal-ai/note-taker.git
    cd note-taker
  3. Install the dependencies:

    pip install -r requirements.txt

Usage

  1. Navigate to the src directory:

    cd src
  2. Run the main script:

    python main.py
  3. Follow the on-screen prompts to:

    • Transcribe audio from your microphone or desktop
    • Create, read, update, and delete notes
    • Use AI-powered features for text analysis and summarization

Privacy and Security

Building from Source

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.

Prerequisites

Windows

  1. 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
  2. Install other dependencies:

    pip install -r requirements.txt
  3. 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
  4. For CPU version:

    pyinstaller --clean --noconfirm note-taker.spec -- --win

    For CUDA version:

    pyinstaller --clean --noconfirm note-taker.spec -- --win --cuda
  5. The executable will be in the dist folder.

  6. To create an installer:

    • Ensure Inno Setup is installed
    • Run: iscc note-taker.iss

macOS

  1. Install dependencies:

    pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/metal
    pip install -r requirements.txt
  2. 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
  3. Build the app:

    pyinstaller --clean --noconfirm note-taker.spec -- --mac_osx
  4. The app bundle will be in the dist folder.

  5. To create a DMG:

    hdiutil create -volname "note-taker" -srcfolder dist/note-taker.app -ov -format UDRO note-taker-macos.dmg

Linux

  1. Install dependencies:

    pip install -r requirements.txt
  2. 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
  3. Build the app:

    pyinstaller --clean --noconfirm note-taker.spec
  4. The executable will be in the dist folder.

  5. To create a tarball:

    tar -cvf note-taker.tar -C dist note-taker

CI/CD Builds

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.

Running the Built Application

Windows

Run the note-taker.exe file in the dist folder, or use the installer created by Inno Setup.

macOS

Open the note-taker.app bundle in the dist folder, or mount the created DMG and drag the app to your Applications folder.

Linux

Run the note-taker executable in the dist folder.

CI/CD

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.

Project Structure

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

Key Dependencies

For a complete list, see requirements.txt.

Contributing

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.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Disclaimer

While this app processes all data locally, users are responsible for ensuring compliance with local laws and regulations regarding data privacy and AI usage.