> hypequery

Why hypequery

Understand the product philosophy behind hypequery and when to reach for it

The Problem: Analytics Logic Shouldn't Live in Five Different Places

Teams scatter SQL across API endpoints, dashboards and background jobs. Every service reimplements "active users" or "revenue" slightly differently.

The core issues:

  • Changes require updating raw SQL in multiple places
  • No single source of truth
  • Type safety doesn't extend to analytics
  • No version control for metric definitions
  • Coordination overhead between teams

What hypequery Does

Define Analytics Once. Import Everywhere.

hypequery turns analytics queries into typed TypeScript functions that you define once and reuse across your entire stack.

// analytics/queries.ts
const { query, serve } = initServe({
  context: () => ({ db }),
});

const weeklyRevenue = query({
  input: z.object({ startDate: z.string() }),
  query: ({ ctx, input }) =>
    ctx.db
      .table('orders')
      .where('created_at', 'gte', input.startDate)
      .sum('total', 'revenue')
      .execute(),
});

export const api = serve({
  queries: { weeklyRevenue },
});

Now use it everywhere:

// In a cron job, background job or called by an AI agent
const digest = await api.run('weeklyRevenue', { input: { startDate: lastWeek } });

// In React
const { data } = useQuery('weeklyRevenue', { startDate: '2024-01-01' });

// via HTTP
// POST /weekly-revenue

When to Use hypequery

Use hypequery when you...

Build TypeScript applications with ClickHouse

  • You're using ClickHouse as your analytics database
  • Your backend is written in TypeScript
  • You want to leverage existing TypeScript tooling

Need analytics in multiple places

  • APIs need to expose analytics endpoints
  • Background jobs compute metrics
  • Dashboards display real-time data
  • AI agents query your data
  • Internal tools need metric access

Want type safety for your analytics layer

  • Catch bugs at compile time, not in production
  • Auto-completion for columns and tables
  • Refactoring with confidence
  • Clear contracts between data and application code

Need to expose analytics to AI agents safely

  • Agents can discover available metrics
  • Structured inputs prevent SQL injection
  • Type schemas guide agent behavior
  • No raw database access required

Run multi-tenant SaaS applications

  • Auto-inject tenant filters at query level
  • Impossible to leak data between customers
  • Same metric definitions across all tenants
  • Tenant isolation built into the framework

Want analytics logic in version control

  • Metrics tracked in Git, not config files
  • Code review for analytics changes
  • Rollback capabilities
  • Clear ownership and documentation

When NOT to Use hypequery

hypequery might not be right if you...

Don't use ClickHouse

  • Currently ClickHouse-only
  • If you need multi-database support, consider Cube.dev

Only need ad-hoc SQL queries

  • Use a BI tool like Metabase or Superset
  • hypequery is for reusable metrics, not one-off exploration
  • BI tools excel at visual query building and exploration

Prefer GUI-based metric builders over code

  • If your team doesn't write code, hypequery isn't the right fit
  • Consider semantic layers with UI builders (Cube.dev, dbt)
  • hypequery is code-first by design

Need a fully-managed hosted platform

  • hypequery is a library, not a hosted service
  • You manage your own infrastructure
  • If you need managed infrastructure, consider cloud semantic layers

How hypequery Compares

vs. Direct SQL

✅ hypequery is better for:

  • Type safety and IDE autocomplete
  • Reusability across services
  • Version control and code review
  • Preventing SQL injection

❌ Trade-offs:

  • Slight learning curve vs. raw SQL
  • Abstraction layer adds minimal overhead

💡 When to use both:

  • Use hypequery for reusable metrics
  • Use direct SQL for one-off data exploration

vs. Query Builders (Prisma, Drizzle, Kysely)

✅ hypequery is better for:

  • ClickHouse-specific features and optimizations
  • Metrics layer on top of query building
  • HTTP + OpenAPI generation
  • Multi-tenancy patterns

❌ Query builders are better for:

  • General CRUD operations
  • Multi-database support (Postgres, MySQL, etc.)
  • ORM-style workflows

💡 When to choose:

  • Use hypequery for analytics/metrics
  • Use Prisma/Drizzle for CRUD operations
  • They solve different problems

vs. Semantic Layers (Cube.dev, dbt Semantic Layer)

✅ hypequery is better for:

  • Embedded execution (no server required)
  • Pure TypeScript (no YAML configs)
  • Simpler setup without orchestration
  • Static type-safe queries

❌ Semantic layers are better for:

  • Pre-built integrations with 50+ BI tools
  • Multi-database support
  • Managed infrastructure options
  • Larger teams with dedicated data platforms

💡 When to choose:

  • Use hypequery for application-embedded analytics
  • Use Cube/dbt for organization-wide semantic layer
  • Consider hypequery if you want to avoid YAML/config files

Core Philosophy

Code-First, Not Config-First

hypequery treats analytics as code, not configuration:

  • Metrics are TypeScript functions, not YAML definitions
  • Changes go through code review, not UI forms
  • Testing is part of your normal test suite
  • Deployment uses your existing CI/CD pipeline

Embedded-First, Not Server-First

hypequery runs in-process by default:

  • No required server or runtime dependency
  • Execute queries directly in your application
  • HTTP exposure is optional, not required
  • Scales with your application, not a separate service

Composable Primitives, Not All-in-One Platform

hypequery provides opt-in building blocks:

  • Use only what you need
  • No required architecture
  • Start with static queries, add HTTP later
  • Add caching, multi-tenancy, or observability as needed

What hypequery Replaces (and What it Doesn't)

✅ Replaces

  • Scattered SQL strings across your codebase
  • Duplicated metric logic in different services
  • Manual OpenAPI specs for analytics endpoints
  • Custom API layers for exposing analytics
  • Ad-hoc agent integrations without guardrails

❌ Doesn't Replace

  • Your BI tool (use both together)
  • Your ClickHouse instance (it's a SDK, not a database)
  • Your data warehouse (complements, doesn't replace)
  • Ad-hoc exploration tools (different use case)
  • ETL pipelines (hypequery is for querying, not transformation)

On this page