Get Started
Get Zilla Console running locally and publish your first governed API Product in under 15 minutes.
This Docker Compose bundle boots the management console, control plane, and all supporting services so you can explore Zilla Console end-to-end. No cloud account or license required.
What you'll build: an Orders API product backed by a Kafka topic, secured with API key authentication, and validated against an AsyncAPI specification, all without a Schema Registry.
Prerequisites
- Docker Engine
24.0+with the Docker Compose plugin2.34.0+ - At least 4 vCPUs and 4 GB RAM allocated to Docker
License
The Quickstart ships with a preconfigured trial license. No setup needed.
Info
All other deployment environments require a valid license. Contact Aklivity Support to obtain one.
Start Zilla Console
Pull and start the full stack, including the management console, control plane, Gateway, Kafka, and Schema Registry:
docker compose -f oci://ghcr.io/aklivity/zilla-platform/quickstart:2.0.0-ea1 up --wait && \
docker compose -f oci://ghcr.io/aklivity/zilla-platform/quickstart/env:2.0.0-ea1 up --waitOnce the stack is ready, open the management console at http://localhost:8081/.
Info
The Quickstart Environment, its Kafka cluster, and its Gateway Group are pre-provisioned automatically. The Gateway auto-registers using a bootstrap token generated and shared behind the scenes, so there's no manual token handling.
You now have a TLS-enabled Gateway running with auto-generated certificates.
Admin Setup
The first time you open the console you'll go through a one-time admin registration to create your organization and admin account. The initial environment, Kafka cluster, and Gateway Group are already provisioned and waiting for you.
Refer to Admin Onboarding for step-by-step details.
Publish an API Product
With the console and data plane running, you can design, publish, and secure your first API Product.
Create the API product
From API Products, select New API Product and give it any display name, for example:
Orders APIUnder AsyncAPI Specification, choose Extract from Kafka, select the QuickStart Kafka cluster, select the topic orders.created, and select Extract to generate the API spec from live topic metadata. Select the QuickStart Gateways Gateway Group, which derives the Kafka bootstrap server automatically, then select Create API Product.
Note
No Schema Registry is required for this walkthrough. It demonstrates AsyncAPI-based event validation, where the Gateway validates messages directly against the spec.
Refer to API Products for full configuration details.
Publish
From the new product's Publishing tab, select Publish, choose the QuickStart Environment and QuickStart Gateways Gateway Group, and set the Server Name to:
orders-api-v0Note
The Server Name must match exactly. It's a hostname alias pre-registered on the Quickstart Gateway container's Docker network (orders-api-v0.staging.platform.net), which the produce/consume commands below rely on to resolve and route to the correct API Product. The product's own display name has no effect on routing.
Refer to Publishing for step-by-step details.
Consume the API product
Subscribe
Create a subscription for your Application to generate the credentials needed to access the deployed API Product.
Refer to Subscriptions for step-by-step details.
Export credentials
Once the subscription is created, export the API key and secret key:
export ACCESS_KEY="<API_KEY>"
export SECRET_KEY="<SECRET_KEY>"Info
Find your connection details in the console under Applications → [application] → Subscriptions → [subscription].
Produce and consume
Use the tabs below to produce events, consume them, and observe schema validation in action.
Send a valid order event to the orders.created topic:
echo '{"orderId":"test-123","status":"created","timestamp":1234567890000}' | \
docker compose \
-f oci://ghcr.io/aklivity/zilla-platform/quickstart/env:2.0.0-ea1 \
run --rm kafka-init \
'/opt/bitnami/kafka/bin/kafka-console-producer.sh \
--bootstrap-server orders-api-v0.staging.platform.net:9094 \
--topic orders.created \
--producer-property security.protocol=SASL_SSL \
--producer-property sasl.mechanism=PLAIN \
--producer-property sasl.jaas.config="org.apache.kafka.common.security.plain.PlainLoginModule required username=\"'"${ACCESS_KEY}"'\" password=\"'"${SECRET_KEY}"'\";" \
--producer-property ssl.truststore.location=/etc/tls/client/trust.jks \
--producer-property ssl.truststore.password=generated'Read events from the orders.created topic from the beginning:
docker compose \
-f oci://ghcr.io/aklivity/zilla-platform/quickstart/env:2.0.0-ea1 \
run --rm kafka-init \
'/opt/bitnami/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server orders-api-v0.staging.platform.net:9094 \
--topic orders.created \
--from-beginning \
--consumer-property security.protocol=SASL_SSL \
--consumer-property sasl.mechanism=PLAIN \
--consumer-property sasl.jaas.config="org.apache.kafka.common.security.plain.PlainLoginModule required username=\"'"${ACCESS_KEY}"'\" password=\"'"${SECRET_KEY}"'\";" \
--consumer-property ssl.truststore.location=/etc/tls/client/trust.jks \
--consumer-property ssl.truststore.password=generated'This event is missing the required timestamp field. The Gateway rejects it at the edge before it reaches Kafka, with no Schema Registry involved.
echo '{"orderId":"test-123","status":"created"}' | \
docker compose \
-f oci://ghcr.io/aklivity/zilla-platform/quickstart/env:2.0.0-ea1 \
run --rm kafka-init \
'/opt/bitnami/kafka/bin/kafka-console-producer.sh \
--bootstrap-server orders-api-v0.staging.platform.net:9094 \
--topic orders.created \
--producer-property security.protocol=SASL_SSL \
--producer-property sasl.mechanism=PLAIN \
--producer-property sasl.jaas.config="org.apache.kafka.common.security.plain.PlainLoginModule required username=\"'"${ACCESS_KEY}"'\" password=\"'"${SECRET_KEY}"'\";" \
--producer-property ssl.truststore.location=/etc/tls/client/trust.jks \
--producer-property ssl.truststore.password=generated'Expected error:
org.apache.kafka.common.InvalidRecordException: This record has failed the validation on broker and hence will be rejected.Stop the stack
Choose the appropriate command based on what you want to preserve.
Stop the data plane environment only (keeps console data):
docker compose -f oci://ghcr.io/aklivity/zilla-platform/quickstart/env:2.0.0-ea1 downStop Zilla Console (keeps all persisted data for next time):
docker compose -f oci://ghcr.io/aklivity/zilla-platform/quickstart:2.0.0-ea1 downWipe everything and start fresh (removes all volumes):
docker compose -f oci://ghcr.io/aklivity/zilla-platform/quickstart/env:2.0.0-ea1 down --volumes --remove-orphans && \
docker compose -f oci://ghcr.io/aklivity/zilla-platform/quickstart:2.0.0-ea1 down --volumes --remove-orphansNext Steps
- Gateways covers attaching a Gateway to an environment.
- Kafka Clusters covers browsing brokers, topics, schemas, and consumer groups once a cluster is attached.
- API Products covers packaging a Kafka topic into a governed, versioned API Product.
- Applications covers subscribing to a published API Product with managed credentials.

