Skip to content

yuchen-0321/Proactor-AI

Repository files navigation

Proactor-Local ⚡

CI

A local-first proactive meeting assistant — a from-scratch rebuild of Proactor AI's core: it listens to a meeting live, streams a running transcript, and acts during the conversation — surfacing an evolving summary, key takeaways, implicit action items, and context-aware advice — then produces a Meeting Wiki and remembers everything for cross-meeting Q&A.

Everything runs on your machine. Audio, transcript, and meeting content never leave localhost: STT is faster-whisper, the LLM is Ollama (qwen2.5:7b), storage is SQLite.

What it does

Proactor AI feature Here
Live transcription faster-whisper over a WebSocket audio stream
Insight Stream (evolving) cadence-based analysis every N words
AI Advice + Multi-Round Detection advice refined across rounds, capped at 3
Task extraction implicit action items pulled from the transcript
Meeting Wiki Overview / Conclusion / Key Takeaways / To-Dos
Cross-meeting memory (Potor) SQLite + embeddings semantic search, then LLM answer

Requirements

  • macOS / Linux, Python ≥ 3.12, uv
  • Ollama running with a model: ollama pull qwen2.5:7b-instruct-q4_K_M
  • (faster-whisper downloads its base model automatically on first run)

Run

uv sync
uv run proactor            # serves http://localhost:8000

Open http://localhost:8000, click Start Insight, allow the microphone, and talk. Insights appear live on the right; End Meeting generates the wiki and saves it. Ask Potor questions about past meetings from the bottom bar.

Configuration (env vars)

Var Default Meaning
PROACTOR_STT whisper whisper | mock
PROACTOR_LLM ollama ollama | mock
PROACTOR_EMBED hash hash (lexical, zero-dep) | ollama (semantic, needs nomic-embed-text)
PROACTOR_CADENCE 40 words between insight refreshes
PROACTOR_OLLAMA_MODEL qwen2.5:7b-instruct-q4_K_M any local Ollama chat model
PROACTOR_DB ~/.proactor/proactor.db SQLite path

Set PROACTOR_STT=mock PROACTOR_LLM=mock to run fully offline with deterministic stub engines (used by the test suite).

Architecture

browser mic ─AudioWorklet→ Int16 16k PCM ─WebSocket→ FastAPI (app.py)
                                                        │
                              ┌─────── MeetingSession (session.py) ───────┐
                              │  Transcript → Cadence → Analyzer (LLM)     │
                              │        → Insight Stream (live)             │
                              │  end → WikiGenerator → MemoryStore (Potor) │
                              └────────────────────────────────────────────┘
engines/ : whisper.py · ollama.py   (real)   |   mock.py (deterministic)

STT, LLM, and Embedder are abstract interfaces (interfaces.py) with mock and real implementations, so the entire pipeline is tested deterministically before the heavy models are plugged into the same seams.

Tests

uv run pytest -q                           # full suite (real engine tests skip if unavailable)
uv run pytest tests/test_pipeline_e2e.py   # deterministic core, no models
uv run pytest tests/test_ws_e2e.py         # full WebSocket path, mock engines
uv run pytest tests/test_engines_real.py   # real faster-whisper + Ollama
uv run python scripts/live_smoke.py        # boots real server, streams a WAV over a real WS

live_smoke.py is the true end-to-end check: it starts the actual uvicorn server with real engines and drives it exactly as the browser does.

Scope

Built the core operating loop, not the surrounding SaaS. Deliberately out of scope: accounts / cloud sync / mobile apps / RBAC, speaker diarization, and Potor's live web search. See PLAN.md for the full rationale.

About

Local-first proactive meeting assistant — a from-scratch rebuild of Proactor AI's core: live faster-whisper transcription, cadence-triggered Ollama analysis (Insight Stream, action items, multi-round advice), Meeting Wiki, and cross-meeting semantic memory (Potor). Fully on-device.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors