Run Danube Broker on your local machine
Danube brokers use an embedded Raft consensus layer for metadata — no external dependencies (like etcd) are required. A single broker auto-initializes as a single-node Raft cluster on first boot.
Download the Danube Broker
Download the latest binary from the releases page.
Option 1: Single-Node Quick Start
The fastest way to get a broker running locally — no config file needed:
This auto-generates sensible defaults:
| Setting | Value |
|---|---|
| Broker address | 127.0.0.1:6650 |
| Admin address | 127.0.0.1:50051 |
| Raft address | 127.0.0.1:7650 |
| Raft data | ./danube-data/raft |
| WAL storage | ./danube-data/wal |
| Authentication | None |
| Storage mode | Local |
Data is persisted across restarts. To start fresh, remove the data directory and re-run.
Skip to Use Danube CLI to Publish and Consume Messages to test it.
Option 2: Config File
Create a local config file using the sample config as a reference:
Run the Broker with Config File
./danube-broker-linux \
--config-file danube_broker.yml \
--broker-addr 0.0.0.0:6650 \
--admin-addr 0.0.0.0:50051 \
--raft-addr 0.0.0.0:7650 \
--data-dir ./danube-data/raft > broker.log 2>&1 &
Check the logs:
You should see the Raft node initialize and the broker start:
INFO danube_broker: Raft metadata store initialized node_id=... raft_addr=0.0.0.0:7650
INFO danube_broker: Start the Danube Service
INFO danube_broker::danube_service: Setting up the cluster MY_CLUSTER
INFO danube_broker::danube_service::broker_register: Broker ... registered in the cluster
INFO danube_broker::broker_server: Server is listening on address: 0.0.0.0:6650
INFO danube_broker::admin: Admin is listening on address: 0.0.0.0:50051
Use Danube CLI to Publish and Consume Messages
Download the latest Danube CLI binary from the releases page and run it:
./danube-cli-linux produce -s http://127.0.0.1:6650 -t /default/demo_topic -c 1000 -m "Hello, Danube!"
Message sent successfully with ID: 9
Message sent successfully with ID: 10
Message sent successfully with ID: 11
Message sent successfully with ID: 12
Open a new terminal and run the below command to consume the messages:
Received bytes message: 9, with payload: Hello, Danube!
Received bytes message: 10, with payload: Hello, Danube!
Received bytes message: 11, with payload: Hello, Danube!
Received bytes message: 12, with payload: Hello, Danube!
Validate
Ensure the broker is running and listening on the expected port:
Check cluster state with the admin CLI:
For debugging, check broker.log.
Running a Multi-Broker Cluster
To run multiple brokers locally, give each broker a unique port set and pass
--seed-nodes so they discover each other:
# Broker 1
./danube-broker-linux --config-file danube_broker.yml \
--broker-addr 0.0.0.0:6650 --admin-addr 0.0.0.0:50051 \
--raft-addr 0.0.0.0:7650 --data-dir ./data1/raft \
--seed-nodes "0.0.0.0:7650,0.0.0.0:7651" &
# Broker 2
./danube-broker-linux --config-file danube_broker.yml \
--broker-addr 0.0.0.0:6651 --admin-addr 0.0.0.0:50052 \
--raft-addr 0.0.0.0:7651 --data-dir ./data2/raft \
--seed-nodes "0.0.0.0:7650,0.0.0.0:7651" &
The broker with the lowest Raft node ID initializes the cluster; the other joins automatically.
Cleanup
Stop the broker:
Remove Raft data (for a fresh start):
Verify cleanup: