HighX
Reference

Packages

What each package is, and which of them you need.

Most applications install four: highx for the CLI, @highx/core and @highx/cloudflare on the server, and the client bindings the UI uses.

PackageWhat it isWho imports it
highxThe CLI and defineConfigyour project, as a dev dependency
@highx/coreDescriptors, schemas, permissions, contractsyour server code
@highx/runtimeQuery execution, auth, migrations, retentionyour server code
@highx/hostThe platform-neutral tenant host: routing, reactivity, sockets, retentionrarely direct
@highx/cloudflareDurable Objects, D1, R2, KV, the tenant objectyour worker
@highx/nodeA tenant host for a plain Node or Bun server, with SQLite storage and durable storesyour server, instead of @highx/cloudflare
@highx/postgresA storage driver for PostgreSQL, and a cross-process invalidation bus over LISTEN/NOTIFYyour server, with @highx/node
@highx/clientConnection, cache, subscriptionsyour browser bundle
@highx/reactuseQuery, useMutation, hydrationyour components
@highx/protocolWire frames and codecsrarely direct
@highx/syncThe collaboration substrate: the algebra contract, composite documents, record/list/counter/command algebrasserver and browser, for collaborative fields
@highx/textThe text algebra — operational transformation over attributed runsserver and browser, for collaborative text
@highx/prosemirrorA ProseMirror view bound to the text algebra, plus remote caretsyour browser bundle, for rich text
@highx/workflowsThe durable run engine: replay, retries, interruptsyour worker, if you run workflows
@highx/agentsTools, loops, skills, model adaptersyour server code, if you run agents
@highx/observabilitySpan recording and OTLP exportyour worker, if you trace
@highx/compilerGraph analysis and codegenvia the CLI
@highx/testingIn-memory adapters for testsyour tests

@highx/sync and @highx/text also have no platform dependencies, and @highx/prosemirror is a leaf: the editor dependency reaches nothing else.

@highx/core has no platform dependencies at all, which is what keeps the descriptors you write portable and testable without a Cloudflare binding in sight.

What a package contains

Every package ships compiled JavaScript with .d.ts declarations and its original TypeScript sources. Conditional exports decide which you get:

"exports": {
  ".": {
    "bun": "./src/index.ts",
    "types": "./dist/index.d.ts",
    "import": "./dist/index.js",
    "default": "./dist/index.js"
  }
}

Bun reads the sources, so stack traces point at real code and stepping through the library works without source maps. Everything else gets the build.

Runtime requirements

  • Bun 1.3+ for the CLI, which uses Bun-only APIs.
  • Node 18+ or any bundler for the libraries themselves.
  • Wrangler 4.118+, and the floor is deliberate: a SQLite-backed Durable Object is declared through exports, which needs no migration bookkeeping — but Wrangler only learned it in 4.118. An older one reports exports as an unexpected field and then fails the deploy asking for a migrations list, an error that says nothing about versions.

Versioning

Every package moves together on one version. The wire protocol is versioned separately and explicitly — see protocol — because a deployed server and an already-loaded browser will not always agree on which release they are.

Until 1.0, treat minor versions as potentially breaking.

On this page