FiveonefourFiveonefour
Fiveonefour Docs
MooseStackTemplatesGuides
Release Notes
Source512
  1. MooseStack
  2. Release Notes
  3. November 1, 2025

On this page

Buffer tables for burst protectionS3 tables for object storageDistributed tables for cluster fan-outRedis state storage for serverless migrationsMulti-database tablesMooseBorealNix development environment

November 1, 2025

Highlights
  • New: Support for ClickHouse table engines:
    • Buffer table engine: smooth ingest spikes before data lands in MergeTree (ClickHouse docs)
    • S3 table engine: keep data in S3 while ClickHouse reads and writes it on demand (ClickHouse docs)
    • Beta (self-hosted only): Distributed table engine: serve cluster-wide queries through Moose-managed tables (ClickHouse docs)
  • Improved: Serverless migrations gain Redis-backed state storage plus per-table databases.
  • Feature that will make a small number of people very happy: Moose now has a flake.nix to let users install the cli via nix run github:514-labs/moosestack (also provides a dev shell to make contributing easier!)

Buffer tables for burst protection

You can now model ClickHouse Buffer engines in MooseOLAP TypeScript and Python projects.

bufferTable.ts
import { ClickHouseEngines, Key, OlapTable } from "@514labs/moose-lib"; interface PaymentEvent {  eventId: Key<string>;  amount: number;  capturedAt: Date;} export const paymentBuffer = new OlapTable<PaymentEvent>("payment_buffer", {  engine: ClickHouseEngines.Buffer,  targetDatabase: "analytics",  targetTable: "payment_events_local",  minRows: 5_000,  maxRows: 500_000,});

PR: #2908 | Docs: Buffer engine | ClickHouse Buffer engine docs

S3 tables for object storage

You can now model ClickHouse S3 engines in MooseOLAP TypeScript and Python projects. The CLI serializes engine settings, resolves runtime credentials, and enforces the S3 rule set (PARTITION BY allowed, ORDER BY rejected) so you can read or write datasets that live entirely in S3.

s3Archive.ts
import { ClickHouseEngines, OlapTable } from "@514labs/moose-lib"; interface ArchivedOrder {  orderId: string;  status: string;  processedAt: Date;} export const archivedOrders = new OlapTable<ArchivedOrder>("archived_orders", {  engine: ClickHouseEngines.S3,  path: "s3://company-archive/orders/{yyyy}/{MM}/",  format: "Parquet",});

PR: #2908 | Docs: S3 engine | ClickHouse S3 docs

Distributed tables for cluster fan-out

Beta (self-hosted only): Not supported on Boreal or ClickHouse Cloud. You can now model ClickHouse Distributed engines in MooseOLAP TypeScript and Python projects. Plans capture the cluster, target database/table, and optional sharding key, while validation checks that the referenced local tables exist on every node before executing migrations.

distributedEvents.ts
import { ClickHouseEngines, Key, OlapTable } from "@514labs/moose-lib"; interface UserEvent {  userId: Key<string>;  eventType: string;  occurredAt: Date;} export const userEventsDistributed = new OlapTable<UserEvent>("user_events_distributed", {  engine: ClickHouseEngines.Distributed,  cluster: "analytics_cluster",  targetDatabase: "analytics",  targetTable: "user_events_local",  shardingKey: "cityHash64(userId)",});

PR: #2908 | Docs: Distributed engine | ClickHouse Distributed docs

Redis state storage for serverless migrations

moose generate migration and moose migrate accept a Redis URL (flag or MOOSE_REDIS_CONFIG__URL) whenever state_config.storage = "redis". The CLI resolves ClickHouse + Redis endpoints, acquires migration locks in Redis, and reuses the same builder across serverless tooling.

export MOOSE_CLICKHOUSE_CONFIG__URL="https://user:pass@ch.serverless.dev/main"
export MOOSE_REDIS_CONFIG__URL="redis://redis.example.com:6379"
moose migrate --clickhouse-url "$MOOSE_CLICKHOUSE_CONFIG__URL" --redis-url "$MOOSE_REDIS_CONFIG__URL"

PR: #2907 | Docs: Redis state storage

Multi-database tables

Tables now carry a database field through the CLI, codegen, and infrastructure map. Moose will create any additional_databases, validate plans that attempt to move an existing table, and surface fully qualified names in moose ls.

auditLogs.ts
import { Key, OlapTable } from "@514labs/moose-lib"; interface AuditLog {  id: Key<string>;  recordedAt: Date;  message: string;} export const auditLogs = new OlapTable<AuditLog>("audit_logs", {  database: "operations",  orderByFields: ["recordedAt", "id"],});

PR: #2876 | Docs: Multi-database setup

Moose

  • Buffer tables – Burst-friendly Buffer engines ship with typed config, CLI validation, and template coverage. Docs: Buffer engine | ClickHouse Buffer docs | PR #2908
  • S3 tables – Direct object storage workflows stay in code with S3 engine support and credential handling. Docs: S3 engine | ClickHouse S3 docs | PR #2908
  • Distributed tables – Cluster fan-out models emit the correct ClickHouse DDL and guard against missing local tables. Docs: Distributed engine | ClickHouse Distributed docs | PR #2908
  • Serverless migrations stay coordinated – Redis-backed locks and state storage plug into the existing moose migrate flow with env-var overrides for CI/CD. Docs: Redis state storage | PR #2907
  • Per-table databases – The migration planner now respects database overrides, auto-creates configured databases, and blocks accidental moves between them. Docs: Multi-database setup | PR #2876
  • Runtime S3Queue credentials – Environment variable markers resolve at deploy time for S3Queue sources, keeping AWS keys out of source. Docs: Streaming from S3 | PR #2875

Boreal

  • Blog redesign.
  • Fixed the redirect loop after deleting an organization so users land back on the create-org screen instead of bouncing between routes.

Nix development environment

flake.nix now bootstraps a full MooseStack build environment (nix develop drops you into a development shell that will have everything you need to build all the components of moosestack). If you use Nix, let us know!

Give it a go if you have nix installed on your machine with:

nix run github:514-labs/moosestack # -- to pass additional arguments to the cli

PR: #2920

  • Overview
Build a New App
  • 5 Minute Quickstart
  • Browse Templates
  • Existing ClickHouse
Add to Existing App
  • Next.js
  • Fastify
Fundamentals
  • Moose Runtime
  • MooseDev MCP
  • Data Modeling
Moose Modules
  • Moose OLAP
  • Moose Streaming
  • Moose Workflows
  • Moose APIs & Web Apps
Deployment & Lifecycle
  • Moose Migrate
  • Moose Deploy
Reference
  • API Reference
  • Data Types
  • Table Engines
  • CLI
  • Configuration
  • Observability Metrics
  • Help
  • Release Notes
    • January 9, 2026
    • December 22, 2025
    • December 15, 2025
    • December 5, 2025
    • November 22, 2025
    • November 14, 2025
    • November 7, 2025
    • November 1, 2025
    • October 24, 2025
Contribution
  • Documentation
  • Framework