Run One Module Locally

Use this path when you care about one service and do not want Kubernetes in the way. AuditFlow is the best first example: it runs on Docker Compose, takes an event over one REST call, and stores it where you can query it.

There is no gateway on this path, so requests need no token. To see authentication and policy at work, take the Quickstart instead.

What you need

Tool Version Why
Docker with Compose Engine 24+, Compose v2 Runs the stack
just any The task runner every Labs64.IO repository uses
JDK (Temurin) 25 just up builds the backend on your machine before it starts the containers
Maven 3.6.3+ Same build

No JDK on your machine and no wish for one? The Quickstart runs published images and needs only kubectl and Helm.

1. Start AuditFlow

git clone https://github.com/Labs64/labs64.io-auditflow.git
cd labs64.io-auditflow
just up

The first run compiles the backend and builds three images, which takes a few minutes. After that, a start takes about a minute. When it finishes, just up prints the local URLs.

You now have the three AuditFlow services plus RabbitMQ, Valkey, Cerbos and ClickHouse.

2. Publish an event

curl -s -X POST http://localhost:8080/audit/publish \
  -H 'Content-Type: application/json' \
  -d '{"eventType":"user.login","sourceSystem":"quickstart","tenantId":"demo"}'

eventType and sourceSystem are required. tenantId selects whose pipelines the event runs through; demo is a tenant that ships with the repository in tenants/demo.yaml.

3. Watch it arrive

just log sink

Look for Audit Event Logged, then press Ctrl+C. To read the stored events back from ClickHouse:

just ch-events

4. Look around

URL What it is
http://localhost:8080/swagger-ui.html The REST API, interactive
http://localhost:8081/docs Transformers available to pipelines
http://localhost:8082/docs Sinks available to pipelines
http://localhost:15673 RabbitMQ management (guest / guest)
http://localhost:8123/play ClickHouse query console (auditflow / auditflow)

Want traces, logs and dashboards as well? just up obs adds the observability stack and Grafana at http://localhost:3000 (admin / admin).

5. Change where events go

Pipelines are configuration, not code. Open tenants/demo.yaml, change or add a pipeline, and save: AuditFlow picks the change up within seconds, without a restart. The AuditFlow page explains pipelines, conditions, sinks and redaction.

6. Stop

just down     # stop the containers, keep the data
just clean    # stop and delete the data volumes too

Other modules

Every backend repository carries its own local setup, driven by just. Run just --list in a repository to see what it offers.

Module Start here
Payment Gateway labs64.io-payment-gateway: just dev-up in payment-gateway-be/, and the runnable examples in examples/
Checkout labs64.io-checkout: just dev-up in checkout-be/, npm run dev in checkout-fe/
Customer Portal labs64.io-customer-portal: npm run dev in customer-portal-fe/

These services expect the gateway to have authenticated the caller, so they are easier to explore behind it. The Quickstart and the full local ecosystem both put the gateway in front.

Next steps

You want to… Go to
Route events to OpenSearch, S3, Splunk or your own sink AuditFlow
See the gateway, identity and several services together Quickstart
Prepare an environment for a team Deploy to your Kubernetes cluster

Local credentials are for local use. The passwords above are defaults for a machine nobody else can reach. Replace them with managed secrets before anything is shared.