Developer Edition: Quick Start
Introduction
In this Developer Edition Quick Start Guide, we’ll walk you through the steps to get Volt Developer Edition up and running on Docker Desktop. It comes with a built-in application, but if you want you can remove it and create one of your own.
Who is Volt Developer Edition for?
Volt Developer Edition is built for forward-thinking developers and architects who want to unlock reliable, real-time data processing for their business. If you’re working to reduce latency, ensure ACID compliance, scale efficiently, or lower your total cost of ownership, all at the same time, this edition provides a practical, hands-on way to explore how Volt can help. While anyone can try Developer Edition, it’s designed for professionals solving real-world streaming and transactional data challenges—not for database beginners or casual experimentation. If you’re focused on delivering better performance, efficiency, and reliability for your business, Developer Edition could be a game-changer for you and your business.
What is Volt Developer Edition?
Our Developer Edition lets you use Docker Compose to deploy Volt, including both our streaming component ‘SP’ and the core real-time processing engine ‘AD’. You can run this deployment wherever you want, as long as you aren’t in production.
The Developer Edition allows you to easily set up a deployment consisting of:
- A one or three-node Volt AD cluster.
- A single node of Volt SP to handle incoming streams of data.
- A client node to run a test application.
It also gives you:
- A limited-duration Volt license key.
- Access to our developer Slack channel.
Note that while we give you a reference application, there’s nothing to stop you from replacing it with something you write yourself.
Prerequisites
Below are the things you need to use this, but don’t worry if you don’t have all of them. Contact us and we’ll work something out.
PREREQUISITE | DETAILS |
Docker Desktop | Available from https://app.docker.com/ We developed this with V4.37.1 |
Docker Hub Account | Available here. |
More than 500MB of free disk space 8GB or more of RAM allocated to Docker Desktop | For a three-node Volt cluster you’ll benefit from 12 GB of RAM. |
Java | We need a Java SDK >= V21. |
Access to GitHub | We clone a repo with the application code, and use DockerHub for the Volt Active Data and Volt Stream Processing binaries. |
Access to Maven | The ‘mvn’ executable can be obtained here if you don’t have it. |
Unused network ports | The following ports need to be free on your machine: 3000 – Grafana 8080 – Volt VMC GUI 9090 – Prometheus 21212 – Volt Client |
Set-Up Instructions
1. Start Docker Desktop and configure resource limits
We’ve tested it and know it works with 8GB of Docker-allocated RAM.

If you want to increase the amount of data we store, you first need to increase the RAM in Docker Hub.
2. Get a license (if you don’t have one already)
The developer edition is free to use, but not intended for production. To use it, you need a license, which you can get by requesting one here:
3. Set an environment variable so we can find your license
We use an environment variable so that the Developer Edition can find your Volt license.
Set it as follows. In the example below, the user jappleseed has a license. Your license file will have a unique name, and LICENSE_FILE_PATH is the path to the file, not to the directory it’s in.
LICENSE_FILE_PATH=/Users/jappleseed/license.xml
export LICENSE_FILE_PATH
3. Download the Developer Edition sample code
git clone https://github.com/VoltDB/TollCollectDemo
By doing this we are downloading the demo app and all the logic and scripts needed to pull the VoltDB and VoltSP images from docker.
4. Build the application using Maven
As part of this step, the code for VoltDB and VoltSP will be pulled from Docker Hub.
cd TollCollectDemo
mvn clean package
5. Start the application
Maven creates a deployable version of the code. The first thing we need to do is change to the right directory:
cd dev-edition-app/target/dev-edition-app-1.0-SNAPSHOT/dev-edition-app/
And then start Docker:
docker compose up
6. Check the GUIs
You should see the following on your machine:
WHAT | PORT | PURPOSE |
Grafana | http://localhost:3000/ | Statistics GUI |
Prometheus | http://localhost:9090/ | Metrics Generator |
Volt Management Center | http://localhost:8080/ | Volt Server GUI |
Volt Application Port | 21212 | Use sqlcmd |
By going to locahost:3000, you should be able to see a Grafana GUI. It has dashboards for:
The Toll Collect Demo:
This demo simulates a vehicle tolling system. The GitHub repo is open, so you can see all the code yourself if you want.
For example:
- ProcessPlate is a Volt procedure that takes information about a car passing a toll sensor and performs a series of calculations to charge the vehicle owner.
- TollCollectStream defines a Volt stream sequence that generates toll entries and uses a pipeline to route them to ProcessPlate.
- The demo more or less runs itself. Out of the box there are two things you can change:
Transactions per second can be changed by updating ‘tps’ in voltsp-config.yaml, and restarting. The amount of RAM used can be changed by issuing the SQL statement in set_keepminutes.sql. You can change the value by pasting the code into the SQL window of Volt Management Center:


The VoltDB server:

And the VoltSP node:

You can also use Volt VMC on port 8080:

Clean up the application:
docker compose down --volumes
Things You Can Play With
Parameters
The demo more or less runs itself. Out of the box, there are two things you can change:
- Transactions per second can be changed by updating ‘tps’ in voltsp-config.yaml, and restarting.
- The amount of RAM used can be changed by issuing the SQL statement in set_keepminutes.sql. You can change the value by pasting the code into the SQL window of Volt Management Center:
VoltAD Cluster Size
By default you get a single VoltSP node and a single VoltAD node. If you want to see how Volt works with a cluster, and you have at least 12GB of RAM, you can do this by changing the docker-compose.yaml file and rebuilding:
xraytunnel@xraytunnel:~/TollCollectDemo$ cd dev-edition-app/
xraytunnel@xraytunnel:~/TollCollectDemo/dev-edition-app$ ls
assembly.xml
docker-compose-1dbnodes_topics.yaml
docker-compose-1dbnodes.yaml
docker-compose-2dbnodes_topics.yaml
docker-compose-2dbnodes.yaml
docker-compose-3dbnodes_topics.yaml
docker-compose-3dbnodes.yaml
docker-compose.yaml
pom.xml
resources
xraytunnel@xraytunnel:~/TollCollectDemo/dev-edition-app$ mv docker-compose-3dbnodes.yaml docker-compose.yaml
xraytunnel@xraytunnel:~/TollCollectDemo/dev-edition-app$ cd ..
xraytunnel@xraytunnel:~/TollCollectDemo$ mvn clean package
xraytunnel@xraytunnel:~/TollCollectDemo$ cd dev-edition-app/target/dev-edition-app-1.0-SNAPSHOT/dev-edition-app
xraytunnel@xraytunnel:~/TollCollectDemo/dev-edition-app/target/dev-edition-app-1.0-SNAPSHOT/dev-edition-app$ docker compose up
Volt Topics (Kafka Emulation)
Volt also has the ability to emulate Kafka, using ‘topics’. Internally it has a concept of a ‘Stream’, which is like a table, except you can only insert into it. Inserts into streams can be exported to JDBC, a remote Kafka server, or stored on Volt so they look like a Kafka topic.
To enable topics, copy a topics yaml file, such as ‘docker-compose-3dbnodes_topics.yaml, to docker.compose,yaml. You can then pull the data from Volt using a Kafka client:
dwrolfe@SevenTroughs kafka_2.13-2.6.0 % ./bin/kafka-console-consumer.sh --from-beginning --bootstrap-server=10.13.1.30:9092 --topic bill_by_mail_topic
If you start getting messages about missing hosts called ‘voltdb’, you may need to add them to your /etc/hosts file temporarily, and point them at your cluster’s host:. In the example below it’s 10.13.1.30:
# needed so kafka client will work
10.13.1.30 voltdb
10.13.1.30 voltdb01
10.13.1.30 voltdb02
10.13.1.30 voltdb03
VoltSP Threads
You can change the number of VoltSP threads by editing the settings it uses on startup. ‘Voltsp.parallelism’ lives in docker-compose.yaml, around line 126:
environment:
- JAVA_OPTS=-XX:InitialRAMPercentage=80.0 -XX:MinRAMPercentage=80.0 -XX:MaxRAMPercentage=80.0 --add-opens java.base/sun.nio.ch=ALL-UNNAMED -Dvoltsp.parallelism=10
Code
Because you got the code from GitHub, there’s nothing to stop you from changing it any way you want, as we gave you a running, non-trivial system that you can now change.