# Run the Agents Locally

First, [install the WarpStream Agent](https://docs.warpstream.com/warpstream/getting-started/install-the-warpstream-agent) for your platform.

Once you've installed the WarpStream Agent, you can run the `playground` command to create an account for local development as well as an ephemeral Kafka cluster and Schema Registry cluster.

## Docker

{% code title="" overflow="wrap" %}

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

{% endcode %}

{% hint style="warning" %}
The `playground` stores data in memory only by default, so any data written will no longer be accessible once the process exits.
{% endhint %}

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](#diagnosing-connection-issues).

## Standalone Binary

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

{% code overflow="wrap" %}

```bash
warpstream playground
```

{% endcode %}

{% hint style="warning" %}
The `playground` stores data in memory only by default, so any data written will no longer be accessible once the process exits.
{% endhint %}

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

{% code overflow="wrap" %}

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

{% endcode %}

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`.

## Diagnosing Connection Issues

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](https://docs.warpstream.com/warpstream/getting-started/install-the-warpstream-agent) to install the raw WarpStream Agent binary locally before proceeding.

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

{% code overflow="wrap" %}

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

{% endcode %}

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.
