Stellaru is a data visualization suite for the game Stellaris. It runs alongside the game and provides realtime snapshots and historical data from the game. The dashboards are viewable as a web page. It works by monitoring and parsing the autosaves while you play, then sending the data to the webpage to keep the charts updated. The historical data is saved in zipped pickle files inside of the folder of the game save that is being monitored, which ensures they get deleted if a game save is deleted. It runs on Windows and MacOS and Linux. It also works in multiplayer games out of the box.
Stellaru contains a laundry list of functionality that aims to make it as useful to as many people as possible. Key features include:
Prebuilt binaries for supported platforms are available as zipped folders and can be used for each platform as follows:
Right Click -> Create Shortcut
and can be placed on the desktop, taskbar, start menu, etcSettings -> Security & Privacy -> General -> Allow apps downloaded from
and select allCommand + Space
-> Terminal.appcd <folder where stellaru.app is>
xattr -rc ./Stellaru.app
Each time you play Stellaris, start Stellaru as documented above. Running Stellaru starts the game save collection process in the background and opens the webpage with all the charts. Note that no historical data is stored in Stellaris game saves, so charts will only have 1 data point the first time you open a save in Stellaru. Data is only collected when Stellaru is running and the desired save has been loaded in Stellaru. If you play on a game save without Stellaru running, the data from that time period will not be displayed in any charts.
Stellaru may be used separately from Stellaris as well. This allows you to explore all the charts and data and build a custom dashboard with your favorites without alien invasions and other Stellaris notifications stressing you out.
There are over 30 different charts available in Stellaru. They are available across a series of categories, and the ability to create a custom dashboard with your favorite charts exists as well. Some charts include the following:
Custom charts may be built using the new Chart Builder tool. Created charts may then be added to your custom dashboard, allowing the full dataset to be thoroughly explored and presented exactly how the player prefers. Some examples of custom charts:
Stellaru works by running a lightweight webserver that only supplies the frontend as content. This makes it inherently compatible with multiplayer as the other players can navigate to it via their web browsers. The main barrier is forwarding the proper port on your router to your local computer. The Help tab inside of Stellaru will contain specifics on what port to forward, which IP to forward to, and the URL for multiplayer players to connect to. How to forward ports varies from router to router. The steps are as follows:
For those wishing to make changes or avoid prebuilt binaries, Stellaru may be run from source quite easily. The frontend is built using React and the backend is Python, using Daphne and Django. There are two ways to run from source: Run the Node development server and Django development server side by side, or build the frontend and use the Django development server only. The production service entrypoint, main.py may be used as well. All methods require the following one time setup.
Frontend dependencies:
cd frontend
npm install
npm run build
Backend virtualenv and dependencies:
cd backend
virtualenv -p python3 venv
# Windows
source venv/Scripts/activate
# Everything else
source venv/bin/activate
pip install -r requirements.txt
This option is good for anyone looking to make changes to the frontend as it allows React's hot reloading to work properly. It is not suitable for multiplayer use.
To start the backend server source your virtualenv from above then:
cd backend
python manage.py runserver 0.0.0.0:8000
Start the frontend Node server with:
cd frontend
npm start
Stellaru is now available at localhost:3000
This mode more closely resembles how the released version of Stellaru runs, and exactly resembles it if main.py is used instead of manage.py below.
Build the frontend and make it available to the backend server:
cd frontend
npm run build
cd ../backend
python manage.py collectstatic
Then do one of the following to start the backend:
python manage.py runserver 0.0.0.0:8000
python main.py