Izzie
MIT licensed · Rust · macOS

Your AI assistant that
actually knows you

Local-first. No cloud. Runs on your Mac. Chat via Telegram.

Open source · Rust · Your data never leaves your Mac

How it works

Learns from your email

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.

Chat anywhere

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.

Local-first

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.

What is Izzie?

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.

What it does

  • Syncs with Gmail (OAuth2, read-only) and indexes sent emails
  • Extracts people, companies, projects, and relationships using an LLM
  • Builds a personal knowledge graph stored in Kuzu (local graph DB)
  • Provides hybrid semantic + BM25 search across your memories
  • Runs a background daemon for continuous email ingestion
  • Exposes a REST API, CLI, and TUI for interaction
  • Supports multi-account Google Workspace setups
  • Includes a local MCP server for Claude Desktop and Cursor

Architecture

// 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

Key crates

trusty-modelsPure data types
trusty-embeddingsLocal embedding + BM25
trusty-storeLanceDB, Kuzu, SQLite
trusty-extractorLLM-based NER
trusty-chatConversation engine
trusty-daemonBackground sync

Quick Start

Prerequisites: Rust 1.75+, a Google Cloud project with Gmail/Calendar APIs enabled, and an OpenRouter API key.

bash

$ 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

What's New

Mar 2026

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.

Mar 2026

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.

Mar 2026

Multi-account support

Tasks and calendar events now work across all connected Google accounts in a single query.

Mar 2026

Local MCP server

Use Izzie as an MCP tool source from Claude Desktop or Cursor. Connects via stdio.

Mar 2026

Port conflict fix

Telegram webhook is now reliable on port 3456 — resolves intermittent startup failures.

Open source. Self-host your own Izzie.

MIT licensed. Fork it, modify it, run it on your own machine. No accounts, no SaaS, no data leaving your Mac.