PlaudBlender
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Local-first Plaud recording pipeline and personal knowledge timeline with Python, SQLite, Qdrant, RAG, 3D graphs, MCP tools, and a SwiftUI companion.
PlaudBlender — Chronos Knowledge Timeline & 3D Graph
Public-safe defaults: this repository ships with placeholder configuration only.
Bring your own API keys, OAuth credentials, and endpoints via .env and local
overrides.
Status: Developer/power-user project. PlaudBlender is not a polished consumer app yet. It is an open local-first system for experimenting with Plaud recordings, semantic search, knowledge graphs, MCP tools, and personal AI memory workflows.
Current vector store: Qdrant is the primary vector database. Older Pinecone references in historical docs are legacy migration history only.
Notion support: Optional. Notion exists because early PlaudBlender workflows stored Plaud transcripts in Notion before Chronos became the local source-of-truth system. The Notion bridge can import, dedupe, match, and optionally sync enriched metadata back to Notion.
Transform Plaud Note voice recordings into a structured, searchable, local-first knowledge base. PlaudBlender includes an AI-powered processing pipeline, daily timeline UI, Qdrant vector search, graph visualization, MCP integrations, optional Notion import/sync, and a sibling iOS companion client.
✨ Key Capabilities (What you get)
- Ask Your Memory (AI RAG): Ask natural language questions like "What did I do in my meeting last Thursday?" or "What was that idea I brainstormed during my commute?" and get synthesized answers with precise timeline citations.
- 3D Knowledge Graph: Browse your voice logs as an interactive 3D connection map (arrange by lanes, concentrics, spiral timelines, or physics forces).
- Observe Under the Hood: Real-time token expense calculators, session cost stats, and a live WebSocket telemetry monitor (X-Ray).
- MCP Server Included: Plug your local timeline database directly into AI tools like Cursor or Claude Desktop to let them query your memories.
- Headless Pi Server: Optimized to run on low-resource hardware like a Raspberry Pi and connect securely from your phone via Tailscale VPN.
📐 Unified Architecture Overview
┌─────────────────────────┐
│ Plaud Note / Cloud │
└────────────┬────────────┘
│ (Plaud API / OAuth)
▼
┌─────────────────────────┐
│ PlaudBlender │
│ (Ingest & Pipeline) │
└──────┬────────────┬─────┘
│ │
(SQLite: local metadata) ▼ ▼ (Qdrant: semantic vectors)
┌──────────────┐ ┌──────────────┐
│ brain.db │ │chronos_events│
└──────────────┘ └──────────────┘
│ │
├────────────┤
▼ ▼
┌──────────────────────────────┐
│ Chronos UI (Dash port) │◀───┐
└──────────────────────────────┘ │
▲ │ (REST API)
(MCP Stdio) │ │
┌──────────────┴───────┐ ┌────────┴─────────────┐
│ Chronos MCP Server │ │ PlaudBlenderiOS │
│ (11 Tools for LLMs) │ │ (Swift UI iOS Client)│
└──────────────────────┘ └──────────────────────┘
📡 Real-Time Telemetry & Hybrid AI Engine
PlaudBlender includes advanced instrumentation for tracking pipeline execution and model performance:
- Real-Time Cost Telemetry: Calculates exact USD costs for active model calls based on paid-tier token usage, mapping runs to specific
CHRONOS_TRACE_RUN_IDtracking tokens. - Hybrid AI Engine: Run Google Gemini and OpenAI models in tandem. The system dynamically dispatches calls based on prefix signatures (e.g.,
gemini-*dispatches via Google GenAI,gpt-*dispatches via OpenAI). - GPT-5.6 Family Integration: Full pricing estimation and endpoint mappings for flagship variants:
gpt-5.6-sol(Flagship),gpt-5.6-terra(Balanced / default analyst), andgpt-5.6-luna(Lightweight). - Zero-Configuration Key Fallbacks: Automatically enables the OpenAI integration when an
OPENAI_API_KEYis present in the.envfile. - Security & Network Bypasses: Local Tailscale LAN nodes and Ngrok WAN connections bypass JWT validation automatically when running without an API key on domestic networks.
- Unblocked Startup Lifespan: API handshakes and database sweeps execute asynchronously in background threads on startup, ensuring uvicorn boots instantly without blocking client requests.
🧠 Core Ecosystem Components
PlaudBlender (Backend Pipeline & Dash Web UI):
- Ingestion: Fetches voice recordings and transcripts directly from the Plaud Note API using secure OAuth authentication.
- Processing: Leverages Gemini AI to filter conversational noise, extract structured categories (clinical, personal, work, technical), track sentiment, and identify discrete event nodes.
- Storage: Persists metadata in SQLite (
data/brain.db) and indexes dense vectors in Qdrant. - Dash UI (Port 8050): A dark-mode dashboard with search panels, chronological views, stats tickers, and an interactive 3D Knowledge Graph.
PlaudBlenderiOS (Swift Companion App):
- A native SwiftUI client displaying your daily timeline, category breakdowns, and a full-screen interactive 3D Knowledge Graph optimized for native touch gestures (rotate, pinch-to-zoom, tap-to-select).
Chronos MCP Server (FastMCP):
- Exposes your memory timeline as tools to Model Context Protocol (MCP) clients. Connect your Plaud logs directly into Claude Desktop or Cursor so your LLMs can query your memory database (e.g., "What did I do in my clinical rounds last Tuesday?").
Optional Notion Bridge (Import/Sync Layer):
- Provides migration pathways and ongoing sync capabilities for Notion-based Plaud workflows, enabling import, de-duplication, and metadata synchronization back to your databases.
⚡ Quick Start: Running PlaudBlender Locally (Mac Setup)
PlaudBlender uses a Python virtual environment to manage dependencies. The launcher scripts automatically detect whether you have a .venv (created via uv) or venv (standard virtualenv) folder.
# 1. Clone & enter repository
git clone <your-fork-or-clone-url>
cd PlaudBlender
# 2. Initialize virtual environment and install dependencies
uv venv
source .venv/bin/activate
uv pip install -r requirements.txt
# 3. Setup environment overrides
cp .env.example .env
# 4. Start Qdrant first (required for pipeline vector storage)
docker compose up -d
# 5. Perform Plaud OAuth setup
python plaud_setup.py
# 6. Initialize the database and run the pipeline
python scripts/chronos_pipeline.py --full
# 7. Start the Web UI & API Stack
./chronos start
# Or start UI directly: ./start_chronos.sh --ui-only
# Or start API directly: ./serve.sh
- Dash Web UI:
http://localhost:8050 - FastAPI Backend:
http://localhost:8000/docs
🧹 Database & Vector Store Cleanup
To keep your workspace clean and fast, use the unified cleanup utility. This removes things that don't matter, including legacy tables and failed/unusable records:
# Run the database cleanup script
.venv/bin/python scripts/db_cleanup.py
What this script does:
- Purges Legacy Tables: Drops and clears old legacy
recordingsandsegmentstables, keeping only the newchronos_*tables. - Purges Failed Runs: Deletes any recordings with a
failedprocessing status (cascading automatically to remove orphaned events). - Vacuums SQLite: Executes
VACUUMon SQLite to reclaim unused disk storage space and rebuild the database file. - Purges Vector Orphans: Queries Qdrant and deletes orphaned points that no longer have corresponding entries in SQLite.
- Prunes Foreign Key Orphans: Deletes orphaned execution spans and events to guarantee 100% database foreign key integrity.
🕹️ Next-Gen 3D Graph Visualization Modes
PlaudBlender structures your complex memory network into legible 3D arrangements instead of traditional overlapping "hairballs":
- Lanes (Category Columns): Stacks related topic nodes in vertical pillars arranged in a ring on the X-Z plane by category. Ideal for categorizing different parts of your day.
- Levels (Hierarchical Layers): Organizes nodes into flat horizontal layers based on abstraction (Category Hubs top, Topics middle, Entities bottom).
- Orbit (Concentric Shells): Places category hubs in a central cluster, with topics orbiting them in concentric outer shells based on how recently they were captured.
- Timeline (Chronological Helix): Arranges all topics and categories in a 3D spiral climbing up the Y-axis. Vertical height maps directly to chronological time progression.
- Force (Standard Physics): A classic free-form dynamic force-directed simulation.
Note: In all structured layouts, physics simulation forces are automatically paused (cooldownTicks(0)) to lock positions instantly, saving battery on mobile devices.
⚙️ Commands Reference
Start All Services:
./chronos start(Starts Qdrant, API, Web UI, auto-sync webhook, and ngrok)Stop All Services:
./chronos stopCheck Service Status:
./chronos statusRun Pipeline:
./chronos pipelineorpython scripts/chronos_pipeline.py --fullSync Recordings Only:
./chronos syncRun Chronos MCP Server:
python -m scripts.mcp_server(exposes your local timeline as tools to AI agents)Verify Official Plaud MCP:
python scripts/plaud_mcp_doctor.py --status(inspects/drives the official Plaud Node MCP server)Clean Database & Vectors:
python scripts/db_cleanup.pyDiagnostics:
python scripts/diagnose_failures.pyAudit iOS Backup Drift:
python scripts/ios_discrepancy_audit.py --backup-ios-root ../backups/<your-ios-backup-folder>/PlaudBlenderiOS
🍓 Raspberry Pi Headless Deployment
PlaudBlender is fully optimized and pre-configured to run on low-resource hardware like a Raspberry Pi:
- Bootstrap Script: Run
deploy/bootstrap-pi.shto install packages, setup venv, pull Qdrant, and register systemd services. - Tailscale & Remote Access: Run
deploy/pi-remote-access.shto install/configure Tailscale (mesh VPN) and VNC for secure, remote set-and-forget home server access. - WAL Mode & Pragmas: Configured
synchronous=NORMALand WAL mode insrc/database/engine.pyto prevent database locks between UI readers and background pipeline writers. - Auto-Refresh Short-Circuiting: Background Dash UI auto-refreshes bypass heavy DOM calculations and return
no_updateto prevent CPU thrashing. - Auto-Update Service: A systemd timer (
chronos-auto-update.timer) pulls from GitHub and runsdeploy/update-pi.shto update when you push commits.
🦙 Local-First (Free & Offline) Mode via Ollama
PlaudBlender includes native support for running completely offline and free of cloud quotas by routing AI tasks to a local Ollama or llama.cpp instance:
- Fully Local Processing: Set
CHRONOS_PROCESSING_PROVIDER=localandCHRONOS_EMBEDDING_MODEL=nomic-embed-textin your.env. - Configurable Sidecar: Enable local models for specific tasks (like classification, JSON repair, and Ask Chronos) by setting
CHRONOS_LOCAL_LLM_ENABLED=1. - Recommended Models: We recommend
nomic-embed-textfor embeddings and a fast, lightweight model (e.g.,qwen2.5:0.5b,llama3.2) for local reasoning tasks. - Extensible & Customizable: Because local routing uses standard Ollama endpoints, you can easily swap in and experiment with any other models (like larger Qwen, Llama, or Mistral weights if running on a Raspberry Pi 5 or local machine) simply by updating your
.env.
🔌 Chronos MCP Server (Model Context Protocol)
Expose your Plaud recordings and timeline memory as tools to any AI client or agent. PlaudBlender includes a standard-compliant stdio MCP server (built with FastMCP) that can be integrated into any MCP host (including custom agent scripts, command-line tools, other IDEs, or desktop clients).
Running the Server Standalone
You can start the MCP server locally over stdio transport:
python -m scripts.mcp_server
Integration Examples
1. Claude Desktop Setup
Open your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the following to the mcpServers object (adjust the command path to your virtualenv's Python, and cwd to your absolute repo path):
{
"mcpServers": {
"chronos-mcp": {
"command": "/Users/your-username/Documents/GitHub/PlaudBlender/.venv/bin/python",
"args": ["-m", "scripts.mcp_server"],
"cwd": "/Users/your-username/Documents/GitHub/PlaudBlender",
"env": {
"CHRONOS_GEMINI_API_KEY": "your_gemini_api_key_here"
}
}
}
}
2. Cursor Setup
- Go to Settings > Features > MCP.
- Click + Add New MCP Server.
- Configure:
- Name:
chronos - Type:
command - Command:
/path/to/PlaudBlender/.venv/bin/python -m scripts.mcp_server
- Name:
Now any connected LLM can call tools like search_events, get_timeline, and ask_chronos to query your voice logs!
🔑 Key Configuration Variables
PlaudBlender parses environment configuration from .env in the root directory. The following settings customize API keys, default models, and authentication:
| Variable | Description | Default / Fallback |
|---|---|---|
CHRONOS_GEMINI_API_KEY |
Dedicated Gemini API Key. | None (Required for Gemini features) |
CHRONOS_ALLOW_SHARED_GEMINI_KEY |
Set to 1 to share global GEMINI_API_KEY across projects. |
0 |
OPENAI_API_KEY |
OpenAI API Key. Presence auto-activates OpenAI model integrations. | None |
CHRONOS_API_KEY |
Secret token for client JWT auth. Omit to run key-less on trusted networks. | None |
CHRONOS_PROCESSING_PROVIDER |
Selection of AI reasoning engine (gemini or local). |
gemini |
CHRONOS_CLEANING_MODEL |
Model used for transcribing and structural timeline cleaning. | gemini-3.5-flash |
CHRONOS_ANALYST_MODEL |
Model used for building graph RAG entities and timeline analysis. | gpt-5.6-terra |
CHRONOS_LOCAL_LLM_ENABLED |
Set to 1 to route supported tasks locally via Ollama. |
0 |
Current Status
PlaudBlender is active and experimental.
It is suitable for:
- builders
- power users
- Plaud users comfortable with local tooling
- people experimenting with personal AI memory, semantic search, graphs, or MCP
It is not yet:
- a polished consumer app
- a hosted service
- a one-click installer
- guaranteed to work with every Plaud account/workflow without configuration
📄 License
MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found