Skip to main content

Local Development

This guide covers setting up LogClaw for local development and testing.

Option 1: Docker Compose (Fastest — No Clone Required)

Run the full LogClaw stack using pre-built public images. No cloning, no building, no Kubernetes.
Requirements: Docker with 8 GB+ RAM allocated. This starts 6 services: All images are pulled from ghcr.io/logclaw/ — public, no registry auth required.

Send a test log

Stop and clean up

Container Images

The :stable tag always points to the latest verified release. Use a specific version tag (e.g., :2.5.0) for reproducible environments.

Option 2: Kind Cluster (Full Kubernetes Stack)

For the full Kubernetes experience with all operators (Strimzi, Flink, ESO, cert-manager):
This script:
  1. Creates a Kind cluster with 3 worker nodes
  2. Installs all Kubernetes operators (Strimzi, Flink, ESO, cert-manager, OpenSearch)
  3. Deploys a dev tenant with all components enabled
  4. Runs a smoke test
Requirements: Docker, Kind, Helm, kubectl (16 GB RAM recommended)

Port Forwarding

After setup, forward ports to access services locally:

Option 3: Dashboard Development (Frontend Only)

For working on the Dashboard UI without the full stack:
The Dashboard starts on http://localhost:3000. Configure .env.local to point at your backend services (local Kind cluster, remote dev cluster, or mock endpoints).

Option 4: Bridge Development (Python)

For working on the Bridge ETL service:
The Bridge exposes:
  • GET /health — health check
  • GET /metrics — Prometheus metrics
  • GET /config — runtime configuration
  • PATCH /config — update runtime configuration

Project Structure

Building Docker Images

Bridge

Dashboard

Agent

Helm Development

Lint a Chart

Template Rendering

Update Dependencies

After modifying sub-charts, rebuild the umbrella chart:
Always run helm dependency update after changing sub-chart templates. The umbrella chart uses .tgz packages — stale packages will render old templates.

Sending Test Logs

Single Log via curl

Batch via Dashboard

  1. Open http://localhost:3000
  2. Drag and drop a JSON file onto the upload area
  3. The Dashboard converts each entry to OTLP format and sends via the proxy
Supported formats:
  • JSON — array of log objects: [{"message": "...", "level": "ERROR"}]
  • NDJSON — one JSON object per line