Your AI agent's communications hub,
deployed into your own AWS.

One API call gets an agent an email address, phone number, Slack bot, and Telegram bot — all routing into one unified inbox. Your coding agent installs and deploys the whole thing into your own AWS account in about twenty minutes. Source-available under FSL.

# one-time setup (by a human OR a coding agent) $ npm i -g @agentcomms/cli $ agentcomms bootstrap \ --domain my-agent-domain.com \ --admin-email me@my-agent-domain.com \ --non-interactive --json # ~20 minutes later, your hub is live in your AWS account. # The final NDJSON line contains your admin API key.
Self-hosted on YOUR AWS Unified inbox across every channel No vendor lock-in FSL-1.1-Apache-2.0

Every channel an agent could need

Email, SMS, Slack, Telegram, and mobile push today. Discord, WhatsApp, postal mail, and fax on the roadmap. Each channel is a plugin in adapters/ — add one by copying an existing adapter.

Email

AWS SES with DKIM, SPF, and DMARC. Custom domains in seconds. MIME parsing with quoted-reply stripping. Real threading via In-Reply-To and References headers.

SMS

AWS End User Messaging v2 with 10DLC. Inbound OTP extraction, outbound delivery receipts, per-number routing.

#

Slack

OAuth bridge into your workspace. DMs and @mentions route to the unified inbox; channel noise accessible via a native surface. Real signing verification.

Telegram

BotFather-provisioned bot in seconds. Webhook-based ingest with per-channel token validation. DM and group @mention detection.

Mobile Push

SNS Mobile Push to APNs and FCM. Per-agent device registration. Delivery receipts update message status automatically.

Discord (scaffold)

Adapter scaffold in the repo. Bounty open for the first working implementation. Follow the Telegram adapter as the template.

Your coding agent deploys it for you

Point Claude Code, Cursor, Aider, or any coding agent at this repo and your AWS credentials. Twenty minutes later the hub is live in YOUR cloud, under YOUR control. No data ever touches a third party.

What other services can't do

Alternative email-for-agents services run in their cloud. Your agent's messages sit in their database. That might be fine for a weekend project. It's not fine when you're running production agents for a regulated industry, a competitive startup, or a customer who asked where their data lives.

AgentComms runs in YOUR AWS account. Same code as what we run on agentcomms.dev; same CDK app; same operational defaults. The only things our hosted service has that you don't are our warmed SES reputation, our domain pool, and our 10DLC brand registration — all operational, not code.

  • Your data stays in your account
  • You pay AWS directly at AWS rates
  • Your agents use your compliance posture
  • The code is readable, auditable, modifiable
# AGENT.md — written for coding agents 1. Install: npm i -g @agentcomms/cli 2. Set: AWS creds, DOMAIN, ADMIN_EMAIL 3. Run: agentcomms bootstrap ... 4. Wait ≤ 25 min 5. Parse final NDJSON line → api_key # Exit code contract for agents: # 0 success — parse done event # 1 preflight fail — fix and retry # 2 AWS deploy fail — check CFN # 3 DKIM timeout — wait, resume # 4 smoke fail — needs human

The unified inbox

Every direct message to your agent — email, SMS, Slack DM, Slack @mention, Telegram DM, push receipt — interleaved into one timeline, queryable with one API call. Channel-native surfaces (Slack workspace chatter, Telegram groups) stay accessible separately so your agent isn't drowning in noise.

from agentcomms import Client client = Client(api_key="ak_live_...") # one-shot provision: agent gets email + SMS + Telegram + Slack result = client.agents.create( name="InvoiceBot", provision={ "email": {"local_part": "invoice"}, "sms": {"country": "US"}, "telegram": {"bot_token": "..."}, }, bridge={"slack": {"return_url": "https://..."}}, ) agent = client.agents(result["agent_id"]) # read the unified inbox — every channel, interleaved by time for msg in agent.messages.list(): print(f"[{msg.channel}] {msg.from_.address}: {msg.body_text}") # reply via auto-detected channel (email → email, E.164 → SMS, slack: → Slack) agent.messages.send(to="alice@example.com", body="Got it — processing.")

Source-available under FSL

Functional Source License 1.1, transitions to Apache 2.0 two years after each commit. You can self-host, modify, and build commercial products on top of your own deployment. You cannot re-sell AgentComms itself as a hosted service without a commercial license.

What you can do

  • Self-host on your own AWS account
  • Run for your own agents and users
  • Modify the source and run modifications
  • Redistribute modifications under FSL
  • Build commercial products that use your deployment
  • Use it internally at your company at any scale
  • Inspect every line of the codebase

What you can't do (without a commercial license)

  • Offer AgentComms as a paid hosted service to third parties
  • Compete with the hosted service at agentcomms.dev

After two years

  • Each file automatically relicenses to Apache 2.0.

Need a commercial license? → commercial@agentcomms.dev

Status

Living project, shipped iteratively, tested in production before each phase tag.

Phase 1 — Foundation (data model + adapter SDK + email)✓ Live
Phase 2 — SMS + Push + Vault + Personas + Domains + AI✓ Live
Phase 3 — Slack + Telegram✓ Live
Phase 4 — OSS packaging (CLI, SDKs, license, docs)◐ Shipping
Phase 5 — Migration cutover + public GitHub launchUpcoming
Phase 6 — Public announcement + demoUpcoming

Start with the AGENT.md guide

Fifteen-minute read for a human, five-minute read for a coding agent. Then twenty minutes to deploy.

Read AGENT.md Browse the source