An open source, interactive annotation platform for Tokamak diagnostic data.
TokTagger is a web-based platform for curating labeled datasets from tokamak diagnostics. It lets users browse shots, inspect signals and images, apply consistent labels, and manage annotations in one place. The Python API and React UI support local or team workflows, making it straightforward to create datasets for downstream analysis and machine-learning models.
It currently supports the following features:
- Data Browsing: Explore tokamak shots, signals, and images through an intuitive interface.
- Annotation Tools: Apply consistent labels to signals and images using a customizable tagging system.
- ML Models: Train and infer from ML models within the UI.
- Dataset Management: Organize and manage annotations in a central repository.
- Multi-User Support: Role-based access control with per-project membership, suitable for team annotation workflows.
- Extensible API: A Python API for integrating with existing workflows and tools.
To run the application locally:
To install the package via pip (or similarly via Poetry or uv package managers):
python -m venv .venv
source .venv/bin/activateTo install the package for labelling only (without ML Model functionality):
pip install toktaggerOr to include the ML models:
pip install toktagger[models]If you intend to add custom data loaders or models to your TokTagger instance, this is the recommended route.
Alternatively, it can be installed as a tool using uv. To install the package for labelling only (without ML Model functionality):
uv tool install --python 3.12.6 toktaggerOr to include the ML models:
uv tool install --python 3.12.6 toktagger[models]To start a local single-user instance:
toktaggerThis starts a single-process instance at http://localhost:8002. On the first start, TokTagger creates a local identity provider and prints the user name and the password of the first administrator to the terminal. See User Management.
| Flag | Default | Description |
|---|---|---|
--workers N |
1 |
Number of uvicorn worker processes |
--host HOST |
localhost |
Host to bind to |
--port PORT |
8002 |
Port to listen on |
--no-browser |
off | Suppress automatic browser launch |
--reload |
off | Auto-reload on code changes (single-worker dev mode only) |
For local development with automatic reload on code changes, use a single worker:
toktagger --workers 1 --reloadFor server deployments, run with multiple workers and disable the automatic browser launch. Multiple workers operate on Linux, macOS and Windows:
toktagger --workers 4 --no-browserThe default host is localhost. Only the local machine can connect to it. To let other users on the network connect, add --host 0.0.0.0.
Warning
--host 0.0.0.0 makes TokTagger available to all devices that can reach the machine on port 8002. The traffic is not encrypted. Use it only on a trusted network. For other deployments, use the docker-compose.yml stack, which puts TokTagger behind a TLS proxy.
Or directly via uvicorn (use python -m uvicorn to make sure that the correct virtual environment is used):
python -m uvicorn toktagger.api.asgi:app --workers 4 --host 0.0.0.0 --port 8002docker-compose.yml is the production stack. It runs TokTagger with Keycloak, MongoDB and a Caddy proxy that handles TLS. See the Deployment guide.
See the User Management guide for creating accounts, assigning roles, and managing project membership.
