Unified integrations,
designed for products and agents.

Unified API
Typed common models across every connector category.
Forward engineering for the integration era. Codex inspects drift, proposes governed changes, runs evals, and leaves execution deterministic.
CRM-APP
- 1
import { NextResponse } from "next/server" - 2
import { openmerge, workspaceId } from "@/lib/openmerge" - 3
- 4
const page = await openmerge().unifiedRecords.listPage( - 5
"Contact", { - 6
workspaceId: workspaceId(), - 7
linkedAccountId, - 8
pageSize: 100, - 9
} - 10
) - 11
- 12
return NextResponse.json(page)
$ npm init openmerge@latest crm-app
Configuring OpenMerge
write lib/openmerge.ts
write app/api/openmerge/records/route.ts
OpenMerge is ready.
OpenMerge quickstart
...I inspected the app and added a typed CRM read with a server-only credential boundary.
records/route.ts
await openmerge().unifiedRecords
.listPage("Contact", params)Changes applied:
- Added a server-only OpenMerge client
- Added a typed unified Contact read
- Kept the workspace API key on the server
- Preserved linked-account custom fields
I will configure the OpenMerge client, then validate the generated route against the governed IR.
Inspect repository
Next.js route structure found
Run initializer
OpenMerge files generated
Validate boundary
Server credentials stay private
Run contract eval
Unified Contact read passed
$ npm init openmerge@latest crm-app
Configuring OpenMerge
Target: crm-app
Mode: new / Template: nextjs
write lib/openmerge.ts
write app/api/openmerge/records/route.ts
OpenMerge is ready.
Inspect your integration surface
with Codex now.
Connect OpenMerge with:
Durable synchronization. Scale accounts and records without losing checkpoints, idempotency, or execution history.
1provider-limit breach prevented after activation
OpenMerge scheduled load
Requested provider load
Provider limit
By separating orchestration, transport, operational state, and analytics, OpenMerge scales each subsystem for the workload it actually owns.
Connection-specific IR. Preserve a common contract while every customer keeps its own fields, mappings, and write policies.
Immutable run plans
Compile one version-pinned execution plan for every run and retain its lineage.
Custom field safety
Validate provider-native types without flattening connection-specific semantics.
Governed evolution
Promote evaluated changesets through explicit, human-gated lifecycle states.
OAuth lifecycle included. Operate multiple apps per provider with encrypted credentials, token rotation, reconnect, and explicit routing policy.
Ready to connect an account.
Production primitives included. Build on explicit control, execution, operational, and analytics planes without surrendering extensibility.
Unified models. Typed contracts across CRM, accounting, HRIS, ticketing, and more.
Two-way writeback. Idempotent writes with field policy, conflict handling, and audit lineage.
Webhooks and polling. One event contract across unequal provider capabilities.
Operational state. Checkpoints, fingerprints, inventories, leases, and rate state at volume.
Analytics plane. Separate telemetry and product analytics from customer domain events.
SDKs and Embedded Link. Build directly or ship a customer-facing connection experience.
Own the infrastructure. Understand every boundary. OpenMerge is an inspectable alternative to black-box unified API platforms, designed for deep customization without provider complexity leaking into every product surface.
One API
A unified developer surface across connector categories.
Zero runtime AI
Codex operates forward engineering, never the sync path.
Remove repetitive integration work without erasing provider truth.
OpenMerge design principle

The integration platform
you can inspect and own.
Designed for developers, operable by agents.
Build integrations without inheriting every provider.