Local-first. No cloud. Runs on your Mac. Chat via Telegram.
Open source · Rust · Your data never leaves your Mac
Reads your sent Gmail (read-only OAuth2) to build a map of your professional relationships, projects, and context. Entities are extracted locally using an LLM and stored in a personal knowledge graph.
Talk to Izzie from any device via Telegram. Ask questions about your contacts, calendar, and tasks. Izzie queries your local knowledge base and responds in natural language.
All data is stored on your Mac in LanceDB (vectors), Kuzu (graph), and SQLite (auth). Embeddings are generated locally via fastembed (ONNX). Only outbound calls are to OpenRouter for LLM inference and Google APIs for data sync.
trusty-izzie is a headless personal AI assistant that runs entirely on your local machine. It learns from your email and calendar, extracts entities and relationships, and gives you a conversational interface to your own professional context.
The assistant syncs with Gmail (read-only) and Google Calendar, extracts people, companies, projects, and relationships using an LLM, and builds a personal knowledge graph stored locally. You interact with it via Telegram, CLI, a terminal UI, or a REST API.
// User interfaces
trusty-cli trusty-tui trusty-api
↓
// Conversation engine
trusty-chat (tool dispatch, RAG)
↓
// Core services
trusty-extractor trusty-memory
↓
// Storage
LanceDB Kuzu SQLite
↓
// Embeddings
fastembed (ONNX) tantivy BM25
trusty-modelsPure data typestrusty-embeddingsLocal embedding + BM25trusty-storeLanceDB, Kuzu, SQLitetrusty-extractorLLM-based NERtrusty-chatConversation enginetrusty-daemonBackground syncPrerequisites: Rust 1.75+, a Google Cloud project with Gmail/Calendar APIs enabled, and an OpenRouter API key.
$ git clone https://github.com/bobmatnyc/trusty-izzie
$ cd trusty-izzie
$ cp .env.example .env
# Fill in your Google OAuth and OpenRouter keys
$ cargo build --release
$ ./scripts/daemon-start.sh
# Authenticate with Google (opens browser)
$ trusty auth google
# Start chatting via CLI
$ trusty chat
Morning briefing with calendar events and open tasks
Izzie now queries all connected accounts and tags calendar events and tasks by identity in your morning briefing.
get_tasks_bulk — fetch all tasks in one call
Collapses N+1 task calls to a single bulk request per account, dramatically reducing latency for multi-account setups.
Multi-account support
Tasks and calendar events now work across all connected Google accounts in a single query.
Local MCP server
Use Izzie as an MCP tool source from Claude Desktop or Cursor. Connects via stdio.
Port conflict fix
Telegram webhook is now reliable on port 3456 — resolves intermittent startup failures.
MIT licensed. Fork it, modify it, run it on your own machine. No accounts, no SaaS, no data leaving your Mac.