Skip to main content
The playground is where to start, whether or not you have a cluster. It runs Alginte, a single-node Kafka (KRaft), and a Schema Registry together, seeded with sample topics, records, and a consumer group showing real lag, so every screen has something to look at, and nothing is installed beyond the containers. A Kafka Streams topology is deployed through Alginte’s own API on startup, so the Streams area opens on a live canvas with per-node numbers. It is also the product’s isolated mode. The stack is yours alone and leaves nothing behind, so a stream can be designed, deployed and run wrong here at no cost, then carried to the shared cluster as a file once it runs right. That path is From the playground to your cluster.
Then open http://localhost:8888.

Overrides without editing the file

Every value you might want to change is a variable with its default in the compose file, so nothing needs a .env:
The image variables are in the compose file from Alginte 0.13.0’s playground; the port override is older. The playground runs in sandbox mode: its MCP endpoint at /mcp also offers the tools that validate, deploy and reset stream designs, so an agent can work the builder here the way a person does (the stream tools). Nothing here is shared, and docker compose down undoes everything.
The playground binds the UI to 127.0.0.1 only and runs without login — it serves your machine and nothing else. There are no volumes: docker compose down is the reset button; up -d reseeds fresh.

What’s inside

Kafka Connect and ksqlDB are not part of the playground — their menu areas hide when unconfigured, which is the honest state.

Bring your schemas and your data

The seeded topics prove the workbench; your own schemas and a sample of your records prove a design. Two folders beside the compose file, created empty on the first up, are registered and produced at every docker compose up, so they survive the reset: One record per line, as the JSON the schema describes; key|{...} for a keyed record with a String key, {...} for a null key. Topics are created with three partitions when missing. A schema that references another subject needs the referenced one registered first; files register in name order. For a topic called shipments with JSON Schema values, that is two files:
The playground folder in the community repository carries this pair and an Avro one under schemas/examples/ and records/examples/ as templates; subfolders are skipped, so copy a pair up one level to try it. A third template, records/examples/shipments-cdc.json.jsonl, is four real Debezium change events (an insert, a second insert, an update and a delete) as plain JSON with no schema to copy: it shows the envelope a connector writes without running a database or a connector. Names the playground already seeds collide with the seed: a different schema under orders-value is refused as incompatible, and records for orders, payments, customers or text-lines land on top of the seeded ones. Your real names only collide if they are literally these. To copy a subject from your registry, save the schema field of GET /subjects/<subject>/versions/latest as the file. To take a sample of a topic, consume it with the registry-aware console consumer of the same format, which prints one JSON record per line. Or register the schema and generate a sample from it on the Produce form: the right shape with no personal data, at the cost of realistic values.
Keep a sample here, not a mirror. A small sample proves a design’s logic if it is the right one: the ordinary record, and the ones that break things, a null where a field is optional, an empty list, a value on the boundary of your predicate. Production may not be able to give you those; here each is one more line in the file. Volume, partitioning under load and restore time are a matter for a real cluster. Anything personal in the sampled records is yours to redact before it lands in the folder.
Available from Alginte 0.13.0’s playground compose; an older compose file has no such folders.

From the playground to your cluster

The playground is the product — the same image, just pointed at a bundled broker. A stream you design here travels to the real cluster as the JSON file you download from the builder and upload on the Alginte that runs against your cluster; the walkthrough, and what changes at the border, is From the playground to your cluster. Running Alginte against your own Kafka is the Quick Start.

From the blog