Case Study · Open Source · BYOK

Inbox to Action — Agentic Email Triage

One command, one agentic pass: your inbox classified, summarized, turned into tasks, and replies drafted — pip install inbox-to-action. It never sends an email, and with the Ollama provider your mail never leaves your machine.

PyPIBYOK · 6 providersMCP serverDocker / GHCRMITDrafts only — never sends
⎋ View on GitHub📦 PyPIDiscuss this project

01Why it exists

Most people process email with four separate tools: a client to read, a task manager to capture to-dos, a calendar to block time, and an AI summarizer for long threads. Every message gets handled four times. inbox-to-action collapses all four into one agentic pass — from the terminal, with hard safety guarantees.

02See it run

One command against the bundled mock inbox — uvx inbox-to-action run --mock — zero install, zero setup:

inbox-to-action demo — one command triages the inbox into a report, drafts, and tasks

03How it works

  1. FetchPulls unread Gmail (last 24h by default) using only the readonly + compose scopes — there is no send scope and no send API call anywhere in the codebase, enforced by a test.
  2. ClassifyEach message is triaged into action_needed · fyi · newsletter · noise by whichever LLM provider you bring.
  3. Summarize & extractLong threads become summaries; actionable messages become tasks (optional Todoist push); calendar-relevant mail gets flagged.
  4. Draft, never sendReplies are drafted and saved to Gmail drafts for human review. Worst case under prompt injection: a draft you choose not to send.
  5. Pick your provider — BYOKOllama (fully local, nothing leaves your machine), keyless Claude Code session, OpenRouter, OpenAI, NVIDIA NIM, or Anthropic. Privacy posture is a config choice, documented per provider.
  6. Run it anywherepip / pipx / uvx zero-install trial, Docker image on GHCR, MCP server for Claude Code + a packaged Claude skill. Registry manifests for the Official MCP Registry, Smithery, and Glama ship in the repo.

04Results

6LLM providers
4→1tools collapsed
0emails auto-sent
100%local option

05Stack

Python 3.11+Gmail API (readonly + compose)OllamaOpenRouterClaude Code (keyless)NVIDIA NIMMCPDocker / GHCRGitHub Actionspytest