Consolidate proto/DB changes for Sprints 1-6 into coordinated release: Proto Schema (Increment 0a): - Add SummarizationOptions message with tone/format/verbosity fields - Add EXPORT_FORMAT_PDF = 3 to ExportFormat enum - Add NER messages: ExtractEntitiesRequest/Response, ExtractedEntity - Add Calendar messages: CalendarEvent, ListCalendarEvents, CalendarProvider - Add RPCs: ExtractEntities, ListCalendarEvents, GetCalendarProviders, InitiateCalendarAuth, CompleteCalendarAuth - Regenerate Python proto stubs Database Schema (Increment 0b): - Add named_entities table for NER storage - Add webhook_configs and webhook_deliveries tables Migrations & ORM (Increment 0c): - Create migration h2c3d4e5f6g7 for named_entities - Create migration i3d4e5f6g7h8 for webhook tables - Add NamedEntityModel, WebhookConfigModel, WebhookDeliveryModel - Update MeetingModel and WorkspaceModel relationships Dependencies & Config (Increment 0d): - Add optional deps: pdf (weasyprint), ner (spacy), calendar (google-api) - Add FeatureFlags class with NOTEFLOW_FEATURE_ env prefix - Add models CLI for ML model downloads (spacy) - Update CLI dispatcher for retention/models subcommands - Create PROTO_CHANGELOG.md Quality Fixes: - Add ORM model names to ALLOWED_STRINGS in test_magic_values.py - Add assertion messages to fix assertion roulette tests Updates client submodule to c1783f8.
NoteFlow
NoteFlow is an intelligent meeting notetaker: local-first audio capture, navigable recall, and evidence-linked summaries. It uses a gRPC API for bidirectional audio streaming and transcription.
What's in this repo
- Python backend (gRPC server + domain services):
src/noteflow/ - Tauri + React desktop client (Vite):
client/(git submodule)
Pulling the client submodule on another device
If you clone the repo without submodules, initialize them after cloning:
git submodule update --init --recursive
If you already have the repo and want the latest submodule commit:
git submodule sync --recursive
git submodule update --init --recursive
You can also clone everything in one step:
git clone --recurse-submodules <YOUR_GIT_URL>
Prerequisites
- Python 3.12+
- Node.js 18+ (for the Tauri/React client)
- Rust toolchain (only if running the Tauri desktop app)
- Docker (optional, for containerized dev)
Local development
1) Backend server
python -m pip install -e ".[dev]"
python -m noteflow.grpc.server
Optional: run with autoreload (watches src/ and alembic.ini):
python scripts/dev_watch_server.py
By default the server listens on localhost:50051.
If you want PostgreSQL persistence, set NOTEFLOW_DATABASE_URL in your environment or .env (see example.env).
2) Tauri + React client
cd client
npm install
# Web (Vite dev server)
npm run dev
# Desktop (Tauri dev)
npm run tauri dev
The Tauri desktop app requires a working Rust toolchain.
Container-based development
The repository includes a compose.yaml with a server container (and a commented-out Postgres service).
Option A: Run the server in Docker, clients locally
- Create a
.envfile fromexample.envand set any needed settings. - Start the server container:
docker compose up -d server
The server will expose 50051 on the host; point your client at localhost:50051.
Option B: Enable PostgreSQL in Docker
compose.yaml includes a commented db service using pgvector/pgvector:pg15. To use it:
- Uncomment the
dbservice anddepends_on/environmentlines incompose.yaml. - Set
NOTEFLOW_DATABASE_URLto the container URL (example):
postgresql+asyncpg://noteflow:noteflow@db:5432/noteflow
- Start services:
docker compose up -d
Common commands
# Backend
pytest
pytest -m "not integration"
ruff check .
mypy src/noteflow
# Client (from client/)
npm run lint
npm run format
npm run test
Configuration
Runtime settings are read from .env and NOTEFLOW_ environment variables. See src/noteflow/config/settings.py and example.env.