Auth, durable storage, realtime, and webhooks in one managed backend. Your app POSTs events; IoTMan keeps every one forever and instantly turns them into live views, REST snapshots, or signed webhooks. No database to operate, no auth service to wire, no message bus to run.
Free tier available. No credit card required.
The pieces a small team would otherwise assemble from a database, an auth provider, a message bus, and a webhook worker. We run them; you use them.
Define a live per-entity table over your event log with a JSONata key and reducer. Point-lookup reads, prefix scans, and SSE change streams. No materialized views to maintain, no cache to invalidate.
Every workspace exposes an MCP endpoint. Claude Code, ChatGPT, and other spec-compliant agents register dynamically via OAuth2 and call workspace tools — with the exact scopes you grant. No custom integration code.
Compose admin API calls in one database transaction using JSONata. Issue a credit, provision a device, close a session — all-or-nothing, with a worker identity you control. No saga pattern, no compensating transactions.
REST snapshots, Server-Sent Events streams, and signed webhooks. Same OAuth 2.1 Bearer token across all three. No separate push service to run.
OAuth 2.1 for devices, partner backends, and user-facing apps. Scoped, revocable, no shared secrets to manage.
Every event you send is kept and replayable. Backed by managed PostgreSQL. No database to provision, no retention surprises.
Five primitives, one auth model.
A device, webhook handler, or backend service authenticates with an OAuth 2.1 token and POSTs an event.
Events go into durable storage on PostgreSQL. The log is the system of record.
A JSONata key and reducer turn events into a live per-entity table — updated as new events arrive. Point-lookup reads, prefix scans, and SSE change streams. No SQL to write.
Register a JSONata body at a URL. Every $iotman_call inside runs in one Postgres transaction as a worker identity. Triggers fire functions automatically when matching events arrive.
REST for snapshot reads, SSE for live subscriptions, signed webhooks for push delivery on matches. Same OAuth 2.1 Bearer token across all three.
Most backends overwrite — so you lose answers to questions you haven't thought of yet. IoTMan keeps every event. When a new question comes, build a new projection over the same log. No migrations, no new tables.
You describe the view you want; IoTMan maintains it. New events arrive, the view updates — no refresh jobs, no cache warming, no cron. JSONPath for reshaping, JSONata for views and functions.
Every producer — device, webhook source, partner backend — authenticates before its first byte hits the log. OAuth 2.1: scoped, revocable, and a shape developers already know. No API keys to rotate.
Six things to learn: HTTP, SSE, OAuth 2.1, signed webhooks, JSONPath, JSONata. No ORM, no query builder, no message broker protocol. That's the surface.
Six common shapes; the primitives are the same.
POST /events/customers — every sign-up, login, feature use, support ticket, cancellation. The lifecycle view, the segmentation, the cohort analysis: all projections over the same log.
An order tracker, a delivery progress page, a race leaderboard, a build pipeline UI. Anywhere a user wants to watch state change in real time. Producers append events; consumers subscribe to a view over SSE; the page updates because the view does.
The original use case, served by the same primitives. Devices POST JSON to /events/:device; the log keeps it; views shape it for whoever reads. That's it.
POST /events/inbox — one endpoint catches every Stripe, GitHub, and Shopify webhook. Keeps the raw payload, lets you build the dashboard each tool should ship with.
Wrap a public API (earthquakes, marine traffic, flights, weather) in a small fetcher. The fetcher becomes a producer; the log becomes yours; the projections are anyone's to write.
Feature flags, config changes, admin actions — every mutation is an event. The log is the audit trail. Replay gives time-travel. POST /events/admin and the trail writes itself.
Free tier, no credit card.