ask-a-human

A private pager for your agent loops.

Run your agents full-auto in loops. When one actually needs a human, it pings your phone and waits.

End-to-end encrypted No accounts No database No tracking Open-source

Paste this. That's the whole setup.

No account, no API key, nothing to install or build. Drop this into your mcp.json and your phone is now a tool your agent can call.

mcp.json
{
  "mcpServers": {
    "ask-a-human": {
      "command": "npx",
      "args": ["-y", "@askahuman/mcp", "serve"]
    }
  }
}

Works with your agents

Claude Code Codex Cursor Copilot Gemini Any MCP client

If it speaks MCP, it can reach you. Same one-line config, zero extra setup.

This is what lands on your phone.

Pair once. After that, when an agent can't decide on its own, it rings your phone and waits: a yes or no, a choice, or a quick reply.

New agent

wants to pair

Open ask-a-human.ai/app on your phone and type the 10-character code it printed to connect.

ABCDE-23456 type it in the app

Claude Code

stuck on a risky deploy

All tests pass, but this release also runs a migration that drops `orders.coupon_code` on prod. Ship it?

Approve Decline

Codex

blocked, needs your call

`main` has been red for 20 min and 3 deploys are stuck behind it. How do I unblock it?

Revert it Hotfix forward Hold, I'll look

Cursor

needs your words

A customer is escalating in the support thread and demanding a refund I'm not allowed to approve. How should I reply?

Type your reply… Send

Wall to phone to “keep going,” in seconds.

1 Agent hits a wall it shouldn't pass alone
2 Sealed in a wormhole
3 Buzzes your phone
4 You tap: approve, decline, or reply
5 Agent unblocks and rolls on

Why we built this

We run a lot of agents. Like a hundred of them, in loops, full-auto, full permissions, mostly while we're asleep or away from the keyboard. That's the whole point: they're not supposed to need us. Until, every so often, one of them does.

And when an agent on full-auto hits the one step it shouldn't take alone, it has no way to reach us. It can't pause a hundred loops and wait by the door. So the choices were both bad: babysit every step and kill the automation, or let it rip and hope nothing touches prod while we sleep. We wanted a third option. Let them all run wide open, and give the rare one that's stuck a way to tap us on the shoulder.

So we built a pager. Copy-paste one MCP server into your agent, pin this site to your iPhone home screen, and that's it. Nothing to install, no account, no API key. When any of your agents needs a yes or no, a choice, or a quick reply, it pings your phone and waits. A hundred agents, one place, one buzz at a time.

And it's private by design. The messages travel through a magic wormhole, end-to-end encrypted, so the relay in the middle is blind. We don't track anything, there's no database, and we pay for the hosting ourselves, all of it. No data to sell, no funnel, no catch. We built it because we needed it, and our only goal is for it to spread.

For the curious

The crypto bit.

Pairing is a Magic-Wormhole-style SPAKE2 handshake: that short code turns into a strong shared key, and even if someone shoulder-surfs it they get exactly one online guess before it's useless. After that, every message is sealed with NaCl secretbox (XSalsa20-Poly1305). The relay only ever sees base64(nonce‖ciphertext) and which room is talking to which, never the contents.

How ask-a-human pairs and seals approvals Your agent and your phone derive a shared key from a short code via SPAKE2; the relay in the middle only ever forwards ciphertext. The relay only forwards ciphertext. base64(nonce‖ciphertext) + which room talks to which, never the data sealed sealed Your agent MCP · holds the key Relay content-blind Your phone holds the key SPAKE2: short code → a key the relay never learns

Built so it can't betray you.

Not a privacy policy you have to trust. A design that can't betray you. No accounts to breach, no database to leak, no logs to subpoena. The relay is RAM-only: restart it and you simply re-pair. And if you still don't trust us, the source is right there and you can host your own relay with --relay / --public-relay.

Content-blind relay

The server only ever sees base64(nonce‖ciphertext) and which room talks to which. It's a dumb pipe: never the data, never a decision.

SPAKE2 pairing

A short pairing code becomes a strong shared key via a Magic-Wormhole-style SPAKE2 handshake. No relay-in-the-middle can read or forge it.

End-to-end encrypted

Your agent and your phone hold the keys. Approvals are sealed on one side and opened on the other. Nowhere in between.

No DB, open-source

RAM-only, no accounts, no database. Restart means re-pair. Self-host the relay and web with a flag, or read every line on GitHub.