Seneschal

The agent never gets the keys.

The agent drafts. You tap approve. Only then does it act. A self-hosted permission broker between AI agents and your Google account.

How it works

  1. 1

    The agent submits a request. It does not call Google.

  2. 2

    You open the approval URL and review the exact action.

  3. 3

    You tap approve. Only then does Seneschal act. Logged. Revocable.

Try it with a real Google account

The demo above is scripted, mock data only. The live dashboard is real: it talks to actual Gmail and Calendar, but access is whitelisted. I add people by hand, it's not a public multi-tenant product.

Go further

Clone the repo and bring your own Google OAuth client. MIT licensed, Docker Compose, mock mode included so you can try it without touching real Google APIs.

FAQ

What is this?

A permission broker you run yourself. Agents talk to Seneschal; Seneschal talks to Google after you approve. The agent never holds your OAuth tokens. The repo is the product. This page is the explainer.

What just happened in the demo?

The page staged a throwaway demo user and a pending send. You approved it. Seneschal “sent” a mock email as Thomas Masaryk. The agent never held Google credentials.

What do I need to run it?

Docker, a Google OAuth client (Calendar, Gmail, Drive APIs enabled), and a machine you control. Copy .env.example, fill in client ID/secret and a secret key, docker compose up. Or set TESTING=true for mock mode with no real Google calls.

Is there a hosted demo I can try?

The chat above runs a real staged request against the live dashboard, no login needed. For a real Google account behind it, access is whitelisted: request access, or self-host with your own OAuth client.

Is this real Gmail?

No. The demo uses mock data. For real Google, self-host with your own OAuth client.

Does this solve AI safety?

No. It puts a human click between the agent and the account. Safer than handing the agent a raw token. Not magic, not SOC2 theater, not a claim that the model can’t be wrong. Writes don’t land until you say so.

Who is this for?

People already wiring agents into email and calendar who don’t want those agents holding the keys. Solo operators, technical founders, anyone who’d rather see the exact draft before it sends. Not for teams looking for a managed multi-tenant platform.

Where’s the code?

github.com/TinMarkovic/seneschal . MIT, DIY, bring your own Google OAuth client.

Does it pair with telegram-cursor-agent?

Naturally: phone door on one side, Google gate on the other. The glue between them isn’t a public product yet. See the telegram-cursor-agent companion page, or follow the posts.

Book a discovery call