# OpenPulse: One wire for people and agents.

Identity, realtime, payments, mail, and phone on a single @handle for people and agents, integrated with one SDK and run from one Console.

[Request access](https://openpulse.org/request-access) · [Claim a handle](https://openpulse.org/#claim) · [Docs](https://openpulse.org/docs) · [Pricing](https://openpulse.org/pricing) · [llms.txt](https://openpulse.org/llms.txt)

## Every surface runs on one identity.

Most teams stitch together an auth provider, a realtime service, a payments API, and an email sender, then keep four user lists in sync. On OpenPulse, Realtime, Pay, Mail, Rooms, and Phone share one @handle and one edge.

- **Realtime** (`connect()`): Chat, presence, live documents, and agent streams share one session per device. Messages are sealed on the device and held for anyone offline.
- **Pay** (`pulse.pay.send()`): USD and EUR balances, instant transfers between @handles, bank payouts, and USDC. Every transfer requires a fresh second factor.
- **Mail** (`@openpulse/mail`): Send, receive, and broadcast from your own domain. Templates, webhooks, and SMTP included.
- **Rooms** (`@openpulse/rooms`): Video rooms with invites and recording. Only signed-in identities can join.
- **Phone** (`@openpulse/phone`) · planned: A number people can text or call, owned by the same @handle.

Every surface stands on:

- **Identity** (`openpulse.org/auth`): One @handle and key pair for every person and agent. People sign in with a passkey, email link, or device code. Agents sign with their own key. Sensitive actions require a second factor.
- **Edge network** (`edge.openpulse.org`): One address for every client. Geo-DNS routes each connection to the nearest edge, which relays sealed traffic and holds it for offline recipients. The edge runs in Helsinki today.

## Agents are users too.

Every identity is a key pair with a name: a DID, a @handle, and the devices that hold the key. People unlock with a passkey. Agents sign with their own key. Both live in one directory with one audit log and one set of controls, so no agent needs a shared API key.

## Every live thing on one connection.

Chat, live documents, agent output, notifications, and files share one session per device. WebTransport comes first, with WebSocket and polling fallbacks for restrictive networks.

## We can move it. We cannot read it.

Private messages are sealed on the device and readable only by the people and agents in the conversation. The relay routes by room and size. Whoever runs the servers, including us, cannot read the words.

## One Console runs it.

Realms, people, agents, keys, traffic, billing, mail, and payments in one place. Every screen runs on the Management API, so anything the Console does, a script can do.

## Questions

### What is OpenPulse?

A developer platform for identity, realtime, payments, mail, rooms, and phone. Every surface shares one @handle, and people and agents are the same kind of identity. One SDK integrates it; one Console and Management API run it.

### How does Pay move money?

One ledger per realm with USD and EUR balances. Transfers between @handles are instant and free. Bank and USDC transfers run through Circle. Every movement requires a fresh second factor, for people and agents, and arrives on the session as an event. The ledger runs on testnet until launch.

### Can I send email with OpenPulse?

Yes, from your own domain: send, receive, and broadcast for people and agents, with templates, audiences, webhooks, and SMTP. Until our own mail host is live, production mail routes through our current provider.

### Can an agent have its own identity?

Yes. An agent gets a DID, a @handle in your realm, and its own keys. It authenticates with a signature, not a shared API key, sits in the same directory as your users, and can be suspended or rotated from the Console.

### Do I still need a separate auth provider?

No. OpenPulse covers passkeys, email links, device codes for command-line tools, step-up authentication, and sessions. Your backend verifies tokens against published keys and issues seats for the wire.

### Can OpenPulse read my users’ messages?

No. Private messages stay between the people and agents in them. The relay moves the packets. It cannot read the words.

### How do I get access?

Until launch, the SDK, Console, Lab, and Pay open by request. Tell us your use case; we review every request and reply by email. Claiming a personal @handle is open to everyone.

### What does it cost?

Hobby is free for personal and non-commercial projects: 100 million realtime messages, 50,000 users, plus email and rooms each month, no card required. A streamed AI answer counts as one message. Pro is €20 a month per team with larger allowances, then €1 per million messages and €6 per 1,000 users, with email and rooms billed by usage. Details at openpulse.org/pricing.

### Is claiming a handle free?

Yes. Anyone can claim @you and see the identity layer their users would get. A handle does not grant Console or Pay access.

## Links

- [Docs](https://openpulse.org/docs): integrators, people and agents; pay, mail, rooms, phone and the edge in depth
- [About](https://openpulse.org/about)
- [Contact](https://openpulse.org/contact)
- [How privacy works](https://openpulse.org/security)
- [Legal](https://openpulse.org/legal)
- [Sitemap](https://openpulse.org/sitemap.xml)
