Skip to content
WarpStream Documentation
Start Free

Run the Agents Locally

Instructions on how to run the WarpStream Agent locally for testing / development purposes.

First, install the WarpStream Agent for your platform.

There are two ways to run WarpStream locally:

  1. playground mode
  2. local mode

playground mode is designed for interactive local development. It signs up for a temporary WarpStream account that is valid for a few hours, starts a local Agent with an embedded Kafka cluster, Schema Registry cluster, and Tableflow cluster, and uses the real hosted WarpStream control plane so that you have full access to WarpStream’s featureset, API, and UI to explore as much of the product as possible. If you just want to test something manually, or explore the product, this is the best option.

local mode is designed for non-interactive local development like automated CI environments. Unlike playground mode, local mode has no dependency on WarpStream’s hosted control plane and instead uses a fake in-memory control plane in the Agent binary itself. This makes it suitable for CI environments where hundreds or even thousands of ephemeral WarpStream clusters need to be spawned simultaneously without being subjected to ratelimits.

docker run -p 8080 -p 9092:9092 -p 9094:9094 public.ecr.aws/warpstream-labs/warpstream_agent:latest playground

Once the docker container is running, there will be a Kafka TCP server listening on port 9092 and a Schema Registry HTTP server listening on port 9094.

This means you’re ready to run any application locally that expects to connect to Kafka, and it’ll connect to WarpStream instead if you set the bootstrap URL to localhost:9092.

You can also replace the URL of your schema registry clients to localhost:9094 and it’ll connect to WarpStream’s Schema Registry instead.

If you encounter any problems connecting an application running outside of Docker to the WarpStream agent running inside of Docker, follow our instructions below for diagnosing connection issues.

Alternatively, if you installed the standalone WarpStream Agent binary and it is in your PATH, you can just run:

warpstream playground

Once that completes, run the following command to test the Kafka connection:

warpstream kcmd -type diagnose-connection -bootstrap-host localhost -bootstrap-port 9092

If that succeeds, then you’re ready to run any application locally that expects to connect to Apache Kafka, and it’ll connect to WarpStream instead if you set the bootstrap URL to localhost:9092.

If the diagnostic command returns an error, follow the provided instructions to diagnose and fix it.

To test the Schema Registry connection, you can send a request to the server with curl as follows:

curl -X POST "http://localhost:9094/subjects/foo/versions" \
-H "Content-Type: application/json" \
-d '{"schema": "{\"type\":\"long\"}"}'

If you receive a valid response, such as {"id":1}, then you’re ready to run any application locally that expects to connect to a schema registry by replacing schema registry URL with localhost:9094.

local mode can start with named SASL users and Kafka ACL enforcement. This is intended for CI and integration tests that need allow/deny behavior without the hosted WarpStream control plane or console.

Flag Description
-saslUser username:password Repeatable. Creates a SASL user. Implies SASL authentication. The ACL principal is User:<username>. The first : splits the username from the password, so passwords may contain colons.
-superUsers Repeatable, or comma-separated. Marks those SASL usernames as cluster superusers. Each name must match a -saslUser username. Superusers bypass ACL checks.
-enableACLs Turns on Kafka ACL enforcement. Requires SASL and at least one superuser.
-requireSASLAuthentication Existing flag. If you set this without -saslUser, local mints a single auto-generated superuser and prints the username and password at startup.

-saslUser implies SASL even if you omit -requireSASLAuthentication.

warpstream local \
-saslUser admin:admin-secret \
-saslUser alice:alice-secret \
-saslUser bob:bob-secret \
-superUsers admin \
-enableACLs

Connect Kafka clients with SASL/PLAIN (or SASL/SCRAM-SHA-512) using those usernames and passwords. For example, admin / admin-secret authenticates as principal User:admin.

The WarpStream Agent binary ships with a utility for diagnosing connection issues. However, diagnosing connection issues cannot be done in a general purpose manner from within a Docker container. Therefore even if you’re running the Agent in a Docker container locally, you’ll need to follow our “Installation Script” Agent installation instructions to install the raw WarpStream Agent binary locally before proceeding.

Once the binary is installed, run the following command to test the connection:

warpstream kcmd -type diagnose-connection -bootstrap-host localhost -bootstrap-port 9092

If that succeeds, then you’re ready to run any application locally that expects to connect to Apache Kafka, and it’ll connect to WarpStream instead if you set the bootstrap URL to localhost:9092.

If the diagnostic command returns an error, follow the provided instructions to diagnose and fix.