Events in.
Nothing lost.

Glue between your services, internal or external, with a buffer for when one goes down. Schema AI runs on our own hardware in the Nordics.

MQTTv1/municipality/meter_readings

Heat and electricity meters in 40 schools publish readings over MQTT. Each reading is stored, then sent to the energy platform, the utility portal and the caretakers’ alarms.

↓ Incoming event
{
  "meter_id": "EM-2231-B",
  "building": "Søndervang School",
  "kind": "heat",
  "kwh": 1284.6,
  "flow_temp": 58.4,
  "ts": "2026-10-31T07:45:00Z"
}
◇ Schema detected
meter_id String LowCard
building String LowCard
kind String LowCard
kwh Float32 Gorilla
flow_temp Float32 Gorilla
ts DateTime64 DoubleDelta
→ Forwarded
HTTPS energy-platform.eu/ingest
{ meter_id, kind, kwh, ts }
pinned to v1, 4 fields
HTTPS utility-portal.eu/readings
{ meter: "EM-2231-B", value: 1284.6 }
mapped to the utility’s format
MQTT alarms/heat/flow_temp
{ building, flow_temp }
transform, only above 55 °C
✓ 1 reading stored and forwarded to 3 destinations (38 ms)

Any protocol in. Any protocol out.

Many-to-one ingestion. One-to-many forwarding. Conduit translates between protocols so your services don't have to.

Sources
HTTPREST APIs · Webhooks
MQTTIoT devices · Sensors
WSReal-time streams
conduit
Schema · Store · Route
Destinations
HTTPWebhooks · APIs
MQTTBrokers · Devices
WSDashboards · UIs
MQTT sensor → HTTP webhook. WebSocket stream → MQTT broker.
One unified endpoint. Zero protocol translation code.

Built for agents, not just dashboards

Connect any MCP-compatible agent. It can create streams, query data, and manage pipelines. No dashboard needed.

npx -y @useconduit/mcp npm ↗ github ↗
MCP Agent
# AI agent connected via MCP ▸ conduit_list_events(stream: "sensors", limit: 1000) ↳ 1,000 events · 18.4 MB raw → 1.1 MB stored (94% compressed) DoubleDelta on timestamps · Gorilla on floats · LowCardinality on strings ▸ conduit_add_forward(stream: "sensors", type: "http", url: "https://analytics.acme.io/ingest") ↳ Destination added · backfill available for 1,000 historical events ▸ conduit_stream_stats(stream: "sensors") ↳ p50: 3ms · p99: 21ms · 12,847 events/day · 30d retention 🤖 I see live sensor data flowing in. I'll pipe it to our datawarehouse and add hot storage. ▸ conduit_add_forward(stream: "sensors", type: "http", url: "https://dwh.acme.io/ingest") ↳ Destination added · forwarding to datawarehouse ▸ conduit_add_forward(stream: "sensors", type: "mqtt", broker: "mqtt://redis.acme.io", topic: "hot/sensors") ↳ Destination added · forwarding to hot storage · 3 destinations active ▸ conduit_backfill(stream: "sensors", destination: "dwh.acme.io", range: "7d") ↳ Backfilling 89,929 events from last 7 days · ETA 12s

Your schema evolves. So does Conduit.

Not rigid pipelines. Adaptive streams. Ingestion and forwarding schemas are decoupled by design.

↓ Ingestion
Store everything

New fields appear? Columns added automatically. Types change? Overflow to JSON, promote when stable. No migrations, no downtime.

✓ Auto-detect fields on first event
✓ Add columns without downtime
✓ Type-safe overflow for mismatches
✓ Auto-promote after threshold
■ Storage
Persist and replay

Every event is stored in a columnar engine built for time-series at scale. Query, backfill, or replay. Your data is always there.

✓ Columnar storage with smart compression
✓ Backfill to new destinations
✓ Time-range queries via API
✓ Configurable retention per plan
→ Forwarding
Send what they need

Each destination controls its own schema. Pass raw events through, pin to a schema version, or map fields per destination.

✓ Pass-through: forward as-is
✓ Pinned: lock to a schema version
✓ Mapped: custom field transforms
✓ Transform payloads with JavaScript before forwarding
✓ Never break a downstream consumer
"We've spent decades building data systems that optimize for predictability. But the consumers are changing. Agents handle ambiguity, models interpret structure. The infrastructure should reflect that."
Free during beta

Free while we build

Conduit is in beta. Sign up and use it: 100K events/month, 5 streams, 100 MB storage, all features included. No credit card.

Start for free →
🇪🇺
Hosted in Denmark
Storage and AI inference run on our own hardware. Trust center
⚡
~70K events/s
Batched ingest on a single node, 3 ms p50 per request. Buffered writes.
🔌
Any protocol
HTTP, WebSocket, MQTT/S. Kafka & gRPC coming soon.
🤖
AI-native MCP server
Let any MCP-compatible agent manage pipelines and query data directly.