open source works with any agent that can run a shell

Safe email for any coding agent.

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.

Zero dependencies Node 22.18+, no build step Your PostShiba or Cloudflare account Nothing hosted

how it works

Your agent gets to a decision it shouldn't make alone, so it emails you and waits. You reply from your phone.

01 agent asks, then waits
agent
$ clankerinbox ask \
    "Ship the release?" \
    --option "Ship it" \
    --option Wait --wait
✓ Asked you@example.org
⠋ The tool waits for a reply 
02 you hit reply
9:41your inbox
Ship the release?
to agent+q4c7c52dbdd@mail.example.com
1
Ship the release?

Reply with a number or your own answer:

1. Ship it
2. Wait
03 agent gets back to work
agent
✓ Reply from you@example.org
Ship it

# piped, it is JSON:
{"status":"answered",
 "option":"Ship it",
 "from":"you@example.org"}

one command per job

Pipe any of them and you get JSON, so your agent can read the output.

ask

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
code

Sign up, skip the mail

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
send

Tell you it's done

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
create

An address per agent

Give every agent its own address on your domain.

$ clankerinbox create billing
✓ Made billing@mail.example.com (inbox billing, mode answers)
poll

Email your agent a task

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
log

Check what it sent

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?

safe by default

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.

agent@mail.example.com4 mails, 1 gets in
✗stranger@evil.examplesender not on allowlist
✗you@example.orgDMARC did not pass aligned
✗noreply@newsletter.exampleautomated mail
✓you@example.organswer: Ship it
in

You pick who gets a say

Add yourself, a teammate, anyone. Everyone else is ignored, and so is spoofed mail.

out

It mails who you allow

It can't email strangers, and an hourly cap stops it from flooding you.

codes

It only gets the code

A sign-up mail can't give your agent instructions.

rules

A mail never approves anything

Only a reply to an open question counts as an answer.

bring your own provider

Mail runs on your account and your domain, with your keys. Setup connects it all for you.

api

PostShiba

An email API on your own domain. Setup creates the inboxes and checks your DNS.

free

Cloudflare

For a domain on Cloudflare. Setup deploys a Worker on your account.

Three commands and your agent has an inbox.

Setup ends with a test mail to you, so you know it works.

install
$ npm install -g clankerinbox
$ clankerinbox setup