A web dashboard for quantum computing workflows built on the Qibo stack. QDashboard provides a unified interface for browsing experiment data, monitoring QPU health and SLURM job queues, submitting calibration experiments, managing qibolab platform repositories, and viewing qibocal reports.
| Area | Capabilities |
|---|---|
| Dashboard | Live QPU health, SLURM queue overview, package version tracking |
| Experiment Builder | Browse qibocal protocols, configure parameters, generate YAML runcards, submit to SLURM |
| QPU Management | Platform Git repository management (branch switching, commits, stashes, push), topology visualisation |
| File Browser | Navigate the experiment data directory, view and download files |
| Report Viewer | Render qibocal HTML reports with dark-theme asset rewriting |
| REST API | OAS 3.1-compliant JSON API — interactive docs at /docs (Swagger UI) and /redoc |
- Python ≥ 3.10
- uv (recommended) or pip
Optional but recommended:
qibo ≥ 0.3.3— quantum simulation and gate libraryqibolab ≥ 0.2.15— hardware control layerqibocal ≥ 0.2.5— calibration protocol suiteqibolab-qblox ≥ 0.0.4— Qblox hardware driverqibolab-qm ≥ 0.0.1— Quantum Machines hardware driver
uv venv
source .venv/bin/activate
uv pip install qdashboardFor hardware-specific extras:
# Qblox instruments
uv pip install "qdashboard[quantum,qblox]"
# Quantum Machines
uv pip install "qdashboard[quantum,qm]"
# All hardware + dev tools
uv pip install "qdashboard[all]"git clone https://github.com/qiboteam/qdashboard.git
cd qdashboard
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Minimal install
uv pip install -e .
# With quantum stack
uv pip install -e ".[quantum]"
# With a specific hardware backend
uv pip install -e ".[quantum,qblox]"
uv pip install -e ".[quantum,qm]"
# Everything (quantum + all dev/test/docs tools)
uv pip install -e ".[all]"# Default: http://127.0.0.1:5005
qdashboard
# Custom host and port
qdashboard --host 0.0.0.0 --port 8080
# Custom data root + debug mode (full stack traces in error responses)
qdashboard --root ~/.qdashboard --debug
# With authentication
qdashboard --auth-key mysecretkeySettings are resolved in priority order:
CLI args › shell environment variables › .env file › built-in defaults
On startup QDashboard looks for a .env file first in the current working directory, then in ~/.qdashboard/.env. Copy the example and edit it:
cp .env.example .env # or ~/.qdashboard/.env| Variable | CLI equivalent | Default | Description |
|---|---|---|---|
QD_ROOT |
--root |
~/.qdashboard |
Root directory for logs, temp files, and the platforms repo |
QD_DATA_DIR |
— | $QD_ROOT/data |
Directory served by the file browser and used to store experiment results |
QD_HOST |
--host |
127.0.0.1 |
Bind address |
QD_PORT |
--port |
5005 |
Listen port |
QD_KEY |
--auth-key |
(none) | Authentication key — if set, every request must include X-Auth-Key: <key> header or ?key=<key> query parameter (including /docs) |
QD_DEBUG |
--debug |
false |
Enable debug mode — full tracebacks in JSON error responses and styled HTML error pages |
QD_LOG_PATH |
— | $QD_ROOT/logs |
Log file directory |
QD_ENVIRONMENT |
— | (none) | Deployment environment label passed to experiment submissions |
QIBOLAB_PLATFORMS |
— | $QD_ROOT/qibolab_platforms_qrc |
Path to the qibolab platforms repository |
qdashboard [--host HOST] [--port PORT] [--root ROOT]
[--auth-key KEY] [--debug] [--version]
~/.qdashboard/
├── data/ # Experiment results (QD_DATA_DIR)
│ └── <platform>/
│ └── <YYYYMMDD>/
│ └── <YYYYmmDD-xxxxxx>/ # Experiment ID (date + 6-char hash)
│ ├── runcard.yml
│ ├── meta.json
│ └── ...
├── logs/ # Server logs
├── temp/ # Temporary files
└── qibolab_platforms_qrc/ # Platforms Git repository (QIBOLAB_PLATFORMS)
QDashboard manages the qibolab platforms Git repository automatically:
- Checks the
QIBOLAB_PLATFORMSenvironment variable. - Falls back to
~/.qdashboard/qibolab_platforms_qrc(auto-cloned on first run).
Use the dedicated CLI for manual operations:
qdashboard-platforms status # Current branch and commit
qdashboard-platforms setup # (Re-)clone the platforms repository
qdashboard-platforms update # Pull latest changes
qdashboard-platforms branches # List all branches
qdashboard-platforms switch <branch> # Switch to a branch
qdashboard-platforms switch <branch> --create # Create and switchThe full API is documented interactively at:
- Swagger UI —
http://localhost:5005/docs - ReDoc —
http://localhost:5005/redoc - Raw schema —
http://localhost:5005/openapi.json
The schema conforms to OpenAPI 3.1.0. When an auth key is configured the documentation endpoints are protected by the same key.
| Tag | Prefix | Summary |
|---|---|---|
| SLURM | /cancel_job, /api/slurm_* |
Queue snapshot, SSE live stream, job cancellation |
| Platforms | /api/platforms/* |
Branch listing, switching, commits, stashes, push |
| QPU | /api/qpu_* |
Parameters, topology image, qubit list, calibration data |
| Protocols | /api/protocols* |
Protocol discovery and parameter schemas |
| Experiments | /api/experiments*, /submit_*, /repeat_*, /qibocal/* |
Submission, status tracking, qibocal CLI actions |
docker build -t qdashboard .
docker run -p 5005:5005 \
-e QD_HOST=0.0.0.0 \
-e QD_PORT=5005 \
-e QD_DATA_DIR=/data \
-e QIBOLAB_PLATFORMS=/platforms \
-v /your/data:/data \
-v /your/platforms:/platforms \
qdashboard# Lint & format
black qdashboard/
flake8 qdashboard/
# Type check
mypy qdashboard/
# Tests
pytest qdashboard/tests/
# Start with live reload
qdashboard --debugqdashboard/
├── core/ # FastAPI app factory (app.py) + centralised config (config.py)
├── web/ # All HTTP endpoints (routes.py), file browser, report viewer
├── qpu/ # QPU health/monitoring, SLURM queue, platform git ops, topology
├── experiments/ # Qibocal protocol discovery, job submission, runcard generation
├── utils/ # Formatters, logger
├── templates/ # Jinja2 HTML templates (Bootstrap 4 dark theme)
└── assets/ # Static CSS/JS served at /assets/
- ASGI stack: FastAPI ≥ 0.111 + Uvicorn ≥ 0.29
- Templates: server-side rendering via Jinja2 with Bootstrap 4
- SSE streaming: live SLURM queue updates via
StreamingResponse - Debug mode: structured JSON error responses with full tracebacks; dark-theme HTML error pages
- OAS 3.1: OpenAPI 3.1.0 schema with auth-guarded Swagger UI and ReDoc
- File browser inspired by flask-file-server by Wildog, rewritten for ASGI.
- Dark theme inspired by the IBM Quantum Computing platform.
- Built for quantum computing workflows using the Qibo ecosystem.
