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.
| Package | What it is | Who imports it |
|---|---|---|
highx | The CLI and defineConfig | your project, as a dev dependency |
@highx/core | Descriptors, schemas, permissions, contracts | your server code |
@highx/runtime | Query execution, auth, migrations, retention | your server code |
@highx/host | The platform-neutral tenant host: routing, reactivity, sockets, retention | rarely direct |
@highx/cloudflare | Durable Objects, D1, R2, KV, the tenant object | your worker |
@highx/node | A tenant host for a plain Node or Bun server, with SQLite storage and durable stores | your server, instead of @highx/cloudflare |
@highx/postgres | A storage driver for PostgreSQL, and a cross-process invalidation bus over LISTEN/NOTIFY | your server, with @highx/node |
@highx/client | Connection, cache, subscriptions | your browser bundle |
@highx/react | useQuery, useMutation, hydration | your components |
@highx/protocol | Wire frames and codecs | rarely direct |
@highx/sync | The collaboration substrate: the algebra contract, composite documents, record/list/counter/command algebras | server and browser, for collaborative fields |
@highx/text | The text algebra — operational transformation over attributed runs | server and browser, for collaborative text |
@highx/prosemirror | A ProseMirror view bound to the text algebra, plus remote carets | your browser bundle, for rich text |
@highx/workflows | The durable run engine: replay, retries, interrupts | your worker, if you run workflows |
@highx/agents | Tools, loops, skills, model adapters | your server code, if you run agents |
@highx/observability | Span recording and OTLP export | your worker, if you trace |
@highx/compiler | Graph analysis and codegen | via the CLI |
@highx/testing | In-memory adapters for tests | your 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 reportsexportsas an unexpected field and then fails the deploy asking for amigrationslist, 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.