Ask the human, then wait
It stops at decisions that are yours to make, and waits for your answer.
$ clankerinbox ask "Use Postgres or SQLite?" \ --option Postgres --option SQLite --wait ✓ Reply from you@example.org SQLite
Give your agent its own inbox. It emails you when it's stuck, waits for your answer, and signs up for tools by itself. Only people you allow can talk to it.
Demo: the agent emails a question, waits, and gets the reply; it sends a mail; it receives a verification code.
Your agent gets to a decision it shouldn't make alone, so it emails you and waits. You reply from your phone.
$ clankerinbox ask \ "Ship the release?" \ --option "Ship it" \ --option Wait --wait ✓ Asked you@example.org ⠋ The tool waits for a reply
✓ Reply from you@example.org Ship it # piped, it is JSON: {"status":"answered", "option":"Ship it", "from":"you@example.org"}
Pipe any of them and you get JSON, so your agent can read the output.
It stops at decisions that are yours to make, and waits for your answer.
$ clankerinbox ask "Use Postgres or SQLite?" \ --option Postgres --option SQLite --wait ✓ Reply from you@example.org SQLite
It signs up for tools by itself, with a fresh address every time.
$ clankerinbox address signup+s1a2b3c4d5@mail.example.com $ clankerinbox code --tag s1a2b3c4d5 \ --from github.com --wait ✓ Found the code 482913
You get a mail when the work is done. Reply to keep it going.
$ clankerinbox send --subject "Goal finished" \ --text "All 12 items done. PR is up." ✓ Sent to you@example.org · thread q1a2b3c4d5
Give every agent its own address on your domain.
$ clankerinbox create billing ✓ Made billing@mail.example.com (inbox billing, mode answers)
Send it new work from your phone. Follow-ups stay in one thread.
$ clankerinbox poll → Request r7f2a91c3e from you@example.org: Fix the login bug ✓ Reply to q4c7c52dbdd from you@example.org: Ship it
A full history of every mail, kept on your machine.
$ clankerinbox log --thread q4c7c52dbdd Thread q4c7c52dbdd 14:02 → you@example.org: Ship the release? 14:09 ← you@example.org: Re: Ship the release?
An inbox lets strangers talk to your agent. That's why the rules run in the CLI on your machine, the same on both providers.
Add yourself, a teammate, anyone. Everyone else is ignored, and so is spoofed mail.
It can't email strangers, and an hourly cap stops it from flooding you.
A sign-up mail can't give your agent instructions.
Only a reply to an open question counts as an answer.
Mail runs on your account and your domain, with your keys. Setup connects it all for you.
An email API on your own domain. Setup creates the inboxes and checks your DNS.
For a domain on Cloudflare. Setup deploys a Worker on your account.
Setup ends with a test mail to you, so you know it works.
$ npm install -g clankerinbox $ clankerinbox setup