Moose Architecture
Infrastructure
Moose supports all the core infrastructure needed to power an analytical backend. Moose translates your native Typescript/Python/SQL into components in this underlying infrastructure.
Infrastructure Category | Supported Software | What You Write | What Moose Generates |
---|---|---|---|
Realtime analytical database | Clickhouse | Data models as TS interfaces / Pydantic models | Tables |
SQL statements in TS/Py functions | Views | ||
Streaming engine | Redpanda | Data models as TS interfaces / Pydantic models | Topics |
Processing engine | TS/Py (built into Moose binary) | TS/Py functions | Orchestrated streaming functions |
Orchestration engine | Temporal | TS/Py scripts | Orchestrated workflows |
Webservers | Rust (built into Moose binary) | Data models as TS interfaces / Pydantic models | Ingest APIs |
Parameterized SQL queries in TS/Py functions | Egress APIs |
Dev vs Production
When you run moose dev
, Moose creates a local copy of your production analytical backend, and hot swaps in changes as you code.
This dev environment automatically includes containerized versions of each piece of core infrastructure.
When you want to deploy your Moose application into production, you’ll need to provide and manage the underlying infrastructure, and point your Moose application at that production infra. Alternatively, you can deploy your Moose application on managed infrastructure with one-click (including Bring Your Own Cloud/Infra) with Fiveonefour’s Boreal hosting service.
Customizing Your Infrastructure
Moose is designed to be highly customizable. You can control which infrastructure is included in your deployment using moose.config.toml
:
Default Configuration
[features]
streaming_engine = true # Include Redpanda for streaming
workflows = true # Enable Temporal for orchestration
Warning:
By default, both streaming_engine
and workflows
are enabled. You must set the respective features to false
to disable them.
Disabling Streaming
[features]
streaming_engine = false # Disable Redpanda for streaming
Disabling Orchestration
[features]
workflows = false # Disable Temporal for orchestration
Development Environment Details
Component | Purpose | Access |
---|---|---|
Web Server | Handles HTTP requests for data ingestion and APIs | localhost:4000 |
ClickHouse | Analytical database for data storage and querying | localhost:18123 |
Redpanda | Kafka-compatible message broker for streaming | localhost:19092 |
Temporal | Workflow orchestration engine | localhost:7233 (Server) / localhost:8080 (UI) |
Redis | Caching and temporary storage | Internal only |
All these components are automatically configured to work together, creating a complete development environment that mirrors a production deployment.