Compare

hypequery vs Moose (MooseStack): Framework or Library for ClickHouse?

Moose is a full-stack framework for analytical backends. hypequery is a typed query layer for the ClickHouse you already run. Here is how to choose between them.

Decision type

Architecture and workflow fit

Audience

TypeScript teams building on ClickHouse

Outcome

Choose a path and move into implementation

Best for

Adding typed queries and APIs to a ClickHouse you already run

Schema source

Introspected from your live ClickHouse schema

Footprint

npm library in your app — no runtime or dev server

Scope

Query builder, HTTP serving, OpenAPI, React hooks

What this page is for

Use this page when the real question is how one tool changes the shape of your ClickHouse application code, not just which syntax looks nicer.

What this page is not

It is not a broad ecosystem roundup. It stays narrow on the tradeoff a ClickHouse-heavy TypeScript team is actually deciding.

Recommended next move

If the tradeoff already looks clear, stop reading comparisons and test the fit against one real query in your own schema.

Dimension
hypequery
Alternative
Best for
Adding typed queries and APIs to a ClickHouse you already run
Greenfield analytical backends built inside one framework
Schema source
Introspected from your live ClickHouse schema
Defined in code and migrated into ClickHouse
Footprint
npm library in your app — no runtime or dev server
Framework with dev runtime, optional Redpanda and Temporal
Scope
Query builder, HTTP serving, OpenAPI, React hooks
OLAP tables, streaming ingest, workflows, ingest and query APIs

Moose (also called MooseStack, from 514 Labs) and hypequery are the two most direct answers to the same question: how should a TypeScript team build on ClickHouse without hand-writing types and boilerplate?

They disagree on one fundamental point, and it's worth getting clear on it before anything else. Moose is a framework — it wants to define your ClickHouse schema in code, run your local dev infrastructure, and manage streaming and orchestration around the database. hypequery is a library — it treats the ClickHouse you already run as the source of truth and adds a typed query and serving layer inside your existing application.

Almost every tradeoff below falls out of that one difference.

What Moose does

MooseStack is an open-source developer framework for real-time analytical backends in TypeScript or Python. It's organised into modules:

  • Moose OLAP — declare ClickHouse tables, materialized views, and migrations as typed code. Schema lives in your repo and is pushed to ClickHouse, in the same direction Drizzle or Prisma push schema to Postgres.
  • Moose Streaming — ingestion buffers and streaming transformations backed by Kafka or Redpanda.
  • Moose Workflows — ETL pipelines and scheduled tasks backed by Temporal.
  • Moose APIs — typed ingestion and query endpoints served from your declared models.
  • Moose Dev — a local dev server that spins up the whole stack with hot reload, plus an MCP interface so AI agents can operate the dev environment.

514 Labs also runs Boreal, a managed hosting platform that deploys MooseStack projects with preview environments and managed migrations.

If you're starting an analytical backend from scratch — ingestion, storage, transformation, APIs, all of it — Moose gives you one coherent, code-first way to build the whole thing.

What hypequery does

hypequery starts from the opposite assumption: ClickHouse already exists in your stack, with its own ingestion pipelines and its own migration story already sorted. What's missing is the typed layer between ClickHouse and your TypeScript application.

  • Schema generation — introspect your live ClickHouse database and generate TypeScript types that match real runtime behaviour (DateTime as string, UInt64 as string, Nullable as T | null).
  • Query builder — composable, fully typed analytics queries with ClickHouse-aware helpers and raw SQL escape hatches.
  • Typed serving@hypequery/serve turns query definitions into REST endpoints with input validation, typed responses, and generated OpenAPI docs.
  • React hooks — consume the same typed query contracts from dashboards and product UI.

There's no dev runtime, no project scaffold, and no infrastructure footprint. It's an npm dependency in the app you already have.

The core difference: who owns the schema

Moose is code-first: you declare tables in TypeScript and Moose migrates ClickHouse to match. That's powerful when the analytical backend is greenfield and the Moose project is the system of record for schema.

hypequery is database-first: however your ClickHouse schema is managed — SQL migrations, Terraform, dbt, a data team with strong opinions — hypequery introspects it and generates types from what actually exists. That fits teams where ClickHouse predates the application layer, or where schema ownership sits outside the TypeScript codebase.

Neither direction is wrong. The question is whether your TypeScript project should own ClickHouse or consume it.

The honest comparison

Moose (MooseStack)hypequery
ModelFramework — owns schema, dev runtime, infra lifecycleLibrary — added to an existing app
SchemaDeclared in code, migrated to ClickHouseIntrospected from live ClickHouse
Streaming ingestBuilt in (Kafka/Redpanda)Not included — bring your own pipeline
OrchestrationBuilt in (Temporal)Not included
Typed queriesYesYes
Typed API endpointsYes (ingest + query APIs)Yes (@hypequery/serve with OpenAPI)
React integrationBring your ownTyped hooks on the same query contract
Local devmoose dev runtime spins up the stackNothing extra — it is just your app
LanguagesTypeScript and PythonTypeScript
Adoption costNew project structure and runtimenpm install into existing code
Open sourceYes (managed hosting via Boreal)Yes

When to choose Moose

  • You're building an analytical backend from scratch and want one framework for ingestion, schema, transformation, and APIs
  • You want streaming ingestion (Redpanda/Kafka) and workflow orchestration (Temporal) managed by the same tool that manages your tables
  • You want schema migrations owned by your TypeScript (or Python) codebase
  • The idea of an agent-operable dev runtime appeals to you, and you're fine adopting Moose's project structure
  • A managed deployment path (Boreal) is attractive

When to choose hypequery

  • ClickHouse already exists in your stack, with its own ingestion and migration story
  • You want typed queries, typed REST endpoints, and React hooks inside an application you already have
  • You don't want a framework runtime, a project scaffold, or new infrastructure dependencies in your dev loop
  • Schema ownership sits with a data team or another tool, and your TypeScript layer should follow that, not fight it
  • You want the smallest possible step from "untyped ClickHouse calls" to "typed analytics layer"

Can you use them together?

Not really, and it's worth being direct about that. Both tools want to be the typed query and API layer between ClickHouse and your application, so running both just means two competing sources of truth for the same job. If Moose manages your ClickHouse, use Moose's query APIs. If ClickHouse is managed elsewhere, hypequery is the lighter, more natural fit.

Getting started with hypequery

If the library model fits, the quick start takes you from schema introspection to a typed query and a served endpoint in a few minutes. For the broader picture of the workflow, read the ClickHouse TypeScript guide, or see how the query builder handles filters, joins, and aggregations with generated types.

Decision checkpoint

If the tradeoff is already clear, move into implementation

Most teams do not need another round of comparison content after this point. The better test is whether the workflow holds up on your own schema and your own query complexity.

Related content

Continue into implementation

FAQ

Are hypequery and Moose solving the same problem?

They overlap on typed ClickHouse queries and APIs in TypeScript, but they take opposite positions on ownership. Moose defines your schema in code and manages migrations, streaming, and workflows as a framework. hypequery treats your existing ClickHouse as the source of truth and adds a typed query and serving layer on top.

When should I choose Moose instead of hypequery?

Choose Moose when you are building an analytical backend from scratch and want one framework to manage ClickHouse schema, streaming ingestion with Redpanda, and orchestration with Temporal — and you are comfortable adopting its project structure and dev runtime.

When is hypequery the better fit?

When ClickHouse already exists in your stack with its own ingestion and migration story, and what you need is typed queries, typed HTTP endpoints, and React hooks inside the application you already have — without adopting a framework.

Next step

Move from evaluation into a typed ClickHouse workflow

Generate schema types, define your first reusable query, and decide whether it should run locally or over HTTP.