Flotilla is the main point of access for operators to interact with multiple robots in multiple facilities. The application consists of a frontend in React, a backend in ASP.NET, and a Mosquitto MQTT broker.
| Tool | Version | Needed for |
|---|---|---|
| Docker and Docker Compose | latest | Running the full stack |
| .NET SDK | 10.x | Running the backend directly |
| Node.js | 24.x | Running the frontend directly |
| pnpm | latest | Frontend package management |
make |
any | The shorthand commands below |
Installing make on MacOS
brew install makeInstalling make on Windows
choco install makeFor development, fork the repository first. Then clone it:
git clone https://github.com/equinor/flotilla
cd flotillaCreate the local configuration files:
./setup.shThe script creates frontend/.env, backend/api/.env, and broker/.env from their .env.example files. It prompts you for the MQTT broker server key, which is found in our key vault. Everything else can be configured manually afterwards — see Configuration.
Start the full stack:
make compose # docker compose up --build| Service | URL |
|---|---|
| Frontend | http://localhost:3001 |
| Backend Swagger | http://localhost:8000/swagger |
| Aspire dashboard | http://localhost:18888 |
To run a single component instead, see the frontend, backend, and broker guides.
Each component reads its configuration from a .env file. The matching .env.example file is the source of truth for the available variables.
| Component | File | Template | Notes |
|---|---|---|---|
| Frontend | frontend/.env |
frontend/.env.example |
Variables must be prefixed with VITE_ to reach the application. |
| Backend | backend/api/.env |
backend/api/.env.example |
Set Local__DevUserId to your own user id for local development. |
| Broker | broker/.env |
broker/.env.example |
TLS_SERVER_KEY is a secret and is found in our key vault. |
Note on Docker:
backend/api/.envis only read when the backend is run directly (make run). The backend container does not load it — docker-compose.yml setsASPNETCORE_ENVIRONMENT=Developmentand readsAZURE_CLIENT_SECRETfrom a.envfile in the repository root, whichsetup.shdoes not create. To run the full stack against Azure AD you currently have to addAZURE_CLIENT_SECRET=...to a root.envyourself.
Common commands are defined in the root Makefile, the backend Makefile, and the frontend Makefile:
make compose # run the full stack in Docker
make broker # run only the MQTT broker
make broker-aspire # run the broker, OpenTelemetry collector, and Aspire dashboardWe currently have 3 environments (Development, Staging, and Production) deployed to AKS under robotics.equinor.com.
| Environment | Deployment | Status |
|---|---|---|
| Development | Frontend Backend |
|
| Staging | Frontend Backend |
|
| Production | Frontend Backend |
Equinor welcomes all kinds of contributions, including code, bug reports, issues, feature requests, and documentation. Please initiate your contribution by creating an issue or by forking the project and making a pull request. Commit messages shall be written according to this guide.