For people who run Claude Code and Codex
Close your laptop without losing the thread.
Page is a remote inbox for the things your AI decides are worth bringing back to you. Your agent keeps working. When something needs you, it pages your phone. When it needs an answer, your tap goes back to the terminal.
curl -fsSL https://a-gnt.com/page/install | sh
Three flows, one command
Now, later, or ask for input.
Everything in Page is one of these. A page you send, a page that waits, or a question that comes back answered.
Now
page "Database migration completed"
A native push on your phone, seconds later. Title, body, links, and the machine it came from.
Later
page "Call Tommy Joe's" --at 4pm page "Review the PR" --at "tomorrow 9am"
Page holds it and delivers on time. Plain words work: 4pm, tonight, tomorrow morning, in 2h.
Ask for input
page ask "Ship the onboarding?" \ --choices "Ship,Review,Cancel"
Blocks in the terminal until you tap an answer on your phone. Your choice prints to stdout, and the agent moves.
MCP built in
Your agent already knows what to do with it.
The install drops an MCP server next to the CLI. Register it once and "page me when the build finishes" becomes a thing you can say.
claude mcp add pager -- node ~/.local/share/pager/mcp.js
[mcp_servers.pager]
command = "node"
args = ["/home/you/.local/share/pager/mcp.js"]
- run: |
curl -fsSL https://a-gnt.com/page/install | sh
~/.local/bin/page "Release failed on iOS" \
--priority high
env:
PAGER_TOKEN: ${{ secrets.PAGER_TOKEN }}
> run the full migration, page me if anything needs a decision Running migration (43 tables)… Schema conflict in listings — two safe fixes, one destructive. Paging you. pager_ask("Schema conflict in listings. How should I resolve it?", choices: ["Rename column", "New table", "Stop"]) You're at dinner. Your phone buzzes once. You tap "Rename column". In the terminal: → User chose: Rename column Continuing. 43/43 tables migrated. pager_send("Migration complete. Nothing lost.")
On your phone
The inbox is the product.
Reverse-chronological pages, markdown rendered properly, logs collapsed until you open them. Read the day as a timeline, or triage by the machine that paged you.
The iOS app is in development. The inbox, the CLI, and the MCP server work today — install the CLI.
The object model
Four things your AI can hand you.
Every page is typed, so your inbox reads like a briefing instead of a feed.
Notes
Save this. A thought worth keeping that shouldn't die with the session.
page "Businesses should be nodes inside the neighborhood"
Reminders
Bring this back at nine tomorrow. Page delivers it when you said.
page remind "Fix auth refresh" --at "tomorrow 9am"
Updates
Tell me when the job finishes. Status without babysitting a terminal.
long-job && page "Training finished"
Questions
I need you to decide something. Your tap flows back to the waiting agent.
page ask "Deploy?" --choices "Ship,Review,Cancel"
Plays well with your life
Page owns the message. Apple and Google are destinations.
Your inbox stays canonical — agent questions, responses, and context can't live in a to-do app. But any page can flow outward with one tap.
Apple Notes, Reminders, and Calendar
in the iOS appEvery page in the app carries Notes, Reminders, and Calendar actions. Reminders and Calendar are handled on-device through EventKit, so nothing extra touches the server — a reminder your agent scheduled becomes a real Apple Reminder in one tap. Apple publishes no write API for Notes, so that one hands the page's text to the share sheet, where Notes is a first-party target. Same one tap, no pretending it's an integration it isn't.
Google Tasks and Calendar
on the roadmapConnect a Google account and reminders mirror into Google Tasks, scheduled pages into Calendar. Server-side OAuth, per-account, off by default. Sync is one-way by design — the page stays the source of truth, the mirror is a convenience.
Pricing
Start free. Go Pro to reach your phone.
The hosted inbox, CLI, and MCP server are free. Pro puts pages on your lock screen — and in your texts.
Free
$0
- Unlimited pages from any machine or agent
- CLI, MCP server, REST API
- Scheduled delivery and blocking questions
- Email delivery to your inbox
Pro
$19.99 / month
- Native push notifications in the iOS app
- Pages as text messages over Twilio
- Sign in with your phone number
- First in line for the iOS app beta
Billing by Stripe. Cancel anytime.
Security
Specifics, not adjectives.
What Page actually does with your credentials and your data — including what it does not do.
Tokens are stored as hashes
The server keeps a SHA-256 hash of your API token, never the token itself. A database dump does not yield a working credential. On iPhone the token lives in the Keychain with afterFirstUnlock, so you can answer a question from the lock screen.
Sign-in tokens ride in the URL fragment
Browsers never transmit the part after #. Your token cannot end up in an nginx access log, a proxy trace, or a referrer header.
Payments verified against Apple and Stripe
App Store receipts are checked offline: full x5c certificate chain to Apple's root, leaf signature, bundle id, product id, revocation, expiry. Stripe webhooks are signature-verified. Both fail closed — an unverified receipt never grants Pro.
No trackers, no third-party SDKs
The iOS app ships with zero analytics libraries. It talks to a-gnt.com and nothing else. Login codes and magic links are rate-limited, and the host runs default-deny firewalling with CrowdSec and fail2ban.
Page is not end-to-end encrypted
Every connection is HTTPS, but pages are stored readable on the server — it has to read a page to render it into an email, an SMS, or a push notification, and Apple's servers see push text too. Anyone who says otherwise about a product shaped like this is selling you something. Treat Page like email: perfect for "the migration is ready, deploy?", wrong for secrets and credentials.