Harsh Gupta
Local-first · Self-hosted · Personal AI

An AI Chief of Staff that turns a sentence into action.

Tell it something in plain English, like “add a birthday to my calendar on the 22nd,” and it actually does it. Calendar events, reminders, email, web lookups. It runs entirely on my own hardware, so my private data never leaves the machine.

DemoMessage in · action out
01What it is

A personal Chief of Staff that lives on my own machine, and does the small, real work of running a life.

Most assistants ask you to ship your calendar and inbox to someone else's servers. This one doesn't. It's self-hosted and local-first precisely because it touches the most private data I have. That constraint is the whole point, and it's a feature, not a caveat.

Runs on my hardware

The model lives on Ollama on a machine I own. No cloud inference, no API round-trips with my life in the payload.

Data never leaves

It reads my calendar and writes my email, so it stays local by design. Privacy isn't a setting here, it's the architecture.

I own the whole stack

Every agent, tool, and container is mine to inspect and change. Nothing is rented, nothing phones home.

02What it does

One casual message in. A real outcome out.

No commands to memorize, no syntax. It creates events, sets reminders, sends mail, and searches the web to fill in what it can't know, then tells you exactly what it did.

CALENDAR

“Block 90 minutes for deep work on Thursday afternoon”

Event created · Thu, 2:00–3:30 PM · “Deep work”

REMINDER

“Remind me to renew my passport two weeks before it expires”

Reminder set · 14 days ahead · linked to expiry date

EMAIL

“Email Sarah that I'll be 10 minutes late to our 3pm”

Draft composed & sent via Gmail · subject auto-written

WEB LOOKUP

“Put the next SpaceX launch on my calendar”

Tavily found date & window → event added with details

03How it works

Two agents, a handful of tools, one clean pipeline.

This is the actual graph, orchestrated in n8n. Click any node to read what it does, then run a sample message and watch a request travel the pipeline. (Simulated, with canned data. The real system stays private.)

Run a sample
POST /webhook

Add Aanya's birthday to my calendar on 22nd July

Webhook
Entry point
entry
Intake Agent
Local LLM · normalize
llm
Master Agent
Local LLM · decide
llm
Google Calendar
Tool
tool
Gmail
Tool
tool
Tavily Search
Tool
tool
Parse Output
Format result
exit
Node detail

Intake Agent

llm · Local LLM · normalize

A local model that cleans the request before any action is taken. It resolves the date to an exact value, strips the title down to a clean subject, and extracts intent across six dimensions: what, why, who for, where, when, and tone.

2 / 7 · click nodes to explore the pipeline

  1. Webhook: Receives the natural-language message via a POST request. One plain sentence in, no forms, no fields, no schema.
  2. Intake Agent: A local model that cleans the request before any action is taken. It resolves the date to an exact value, strips the title down to a clean subject, and extracts intent across six dimensions: what, why, who for, where, when, and tone.
  3. Master Agent: Reads the clean brief and decides which tools to call. It only reaches for the web when a detail is genuinely unknown; everything else is acted on directly.
  4. Google Calendar: Creates the event or reminder on the real calendar, with title, date, and time exactly as resolved by the agents.
  5. Gmail: Composes and sends messages and confirmations through Gmail on my behalf.
  6. Tavily Search: Looks up details the agent can't know on its own, like a public event's date, a venue, or a start time, then hands the fact back to the Master Agent.
  7. Parse Output: Parses the tool results and formats them into a single, human-readable confirmation of what was done.
04Under the hood

Presented as a technical artifact, because that's what it is.

A local brain, a containerized orchestrator, and a two-agent design that separates understanding from action. Nothing exotic, just composed deliberately so the privacy guarantee holds.

01
Ollama
Local LLM runtime

The brain. Models run on my own hardware, so no tokens leave the machine.

02
n8n
Orchestration

Wires the webhook, the two agents, and every tool call into one pipeline.

03
Docker
Isolation

The whole stack ships as containers: reproducible and self-contained.

04
Two-agent design
Intake → Master

One agent normalizes intent, the other acts. Clean brief in, real action out.

05
Google APIs
Calendar + Gmail

The hands. Authenticated tools that turn decisions into real events and mail.

06
Tavily
Web search

The eyes. Pulled in only when a fact is genuinely unknown.

05Why I built this

I wanted to know if I could have the convenience of an AI assistant without handing my calendar and inbox to someone else's servers. It turns out you can. You just have to own the whole thing.

So I built it for myself: a small, honest system that does the boring logistics of a day and keeps the data where it belongs. It's not a product and there's nothing to sign up for. This page is just a look at how it works.