Work in Progress: This page is under development. Use the feedback button on the bottom right to help us improve it.

Dev Setup

This guide covers setting up a local development environment for contributing to Laminar.

Repositories

Laminar consists of three repositories:

RepositoryDescription
laminarCore stream processing engine (Rust) - API, Controller, Worker
laminar-frontendWeb UI (Next.js), documentation site, CLI tools
laminar-infraInfrastructure configs - Docker Compose, Kubernetes, Helm charts, monitoring
git clone https://github.com/e6data/laminar.git
git clone https://github.com/e6data/laminar-frontend.git
git clone https://github.com/e6data/laminar-infra.git

Prerequisites

For Backend Development (laminar)

  • Rust (latest stable)

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Build tools and Task (macOS)

    brew install cmake protobuf go-task
  • Docker

    brew install --cask docker
  • Optional (only for CDC/Debezium features)

    brew install openjdk@17 maven

For Frontend Development (laminar-frontend)

  • Node.js 22+
  • npm 9+

Local Services

Start the required infrastructure services (PostgreSQL, GreptimeDB, Grafana, Vector):

cd laminar/setup
task up
ServicePortDescription
PostgreSQL5432Metadata storage
GreptimeDB4000-4003Metrics and logs
Grafana3001Dashboards
Vector-Log collection

To stop services:

task down      # Stop services
task delete    # Remove volumes (clean slate)

Pre-Commit Hooks

We use TruffleHog to prevent accidental commits of secrets and credentials.

Setup

Install the required tools:

brew install pre-commit trufflehog

Activate the pre-commit hook:

cd laminar  # or any repo with .pre-commit-config.yaml
pre-commit install

Usage

The hook runs automatically on every commit, scanning staged files for secrets. If a secret is detected, the commit will be blocked.

To manually scan all files:

pre-commit run trufflehog --all-files

Next Steps