Skip to main content

QObserva

Quantum program observability and benchmarking. Local-first, security-first observability for quantum computing.

⚠️ Beta: QObserva is currently in beta. APIs may change.

Quick Start

Prerequisites

Recommendation: For best compatibility with all SDKs, use Python 3.12.

Installation

From PyPI (recommended):

pip install qobserva

For SDK adapters, install the agent with extras:

pip install qobserva-agent[qiskit]      # Qiskit
pip install qobserva-agent[all-sdks]    # All supported SDKs

From source (development):

git clone https://github.com/BuildersArk/qobserva.git
cd qobserva
pip install -e packages/qobserva_agent
pip install -e packages/qobserva_collector
pip install -e packages/qobserva_local
pip install -e packages/qobserva
# One-time: cd packages/qobserva_ui_react && npm install

Start QObserva

qobserva up

Dashboard opens at http://localhost:3000

Stop QObserva

qobserva down

What is QObserva?

QObserva provides standardized telemetry, metrics, and visualizations for quantum program executions across all major Python quantum SDKs.

Features

  • Decorator-first instrumentation: @observe_run() decorator with a simple API
  • Multi-SDK support: Qiskit, Braket, Cirq, PennyLane, pyQuil, D-Wave (all tested)
  • Professional React dashboard: Modern dark-themed UI with diverse visualizations
    • Home dashboard with KPIs, trends, and run tables
    • Analytics dashboard with performance metrics and comparisons
    • Algorithm analytics for cross-SDK algorithm comparison
    • Run details with comprehensive quantum metrics
    • Compare runs side-by-side, search and filter, PDF report generation
  • Local-first: Everything runs locally, no cloud required
  • Standardized schema: Common event format across all SDKs
  • One-command setup: qobserva up starts collector and dashboard
  • Energy metrics: D-Wave optimization metrics (energy, approximation ratio)
  • Comprehensive metrics: Entropy, top-K dominance, shot efficiency, runtime analysis

Usage

Instrument Your Code

Always include the sdk tag for reliable adapter selection.

from qobserva import observe_run

@observe_run(
    project="my_project",
    tags={
        "sdk": "qiskit",       # Required
        "algorithm": "vqe"     # Optional but recommended
    },
    benchmark_id="vqe_h2_ground_state",
    benchmark_params={"energy": -1.137, "convergence_iterations": 10}
)
def my_quantum_algorithm():
    # Your quantum code here
    return execute_quantum_circuit()

Supported SDK values: "qiskit", "braket", "cirq", "pennylane", "pyquil", "dwave"

Add an "algorithm" tag (e.g. "vqe", "grover", "qaoa") to enable algorithm-specific dashboards and cross-SDK comparison.

View Dashboard

Open http://localhost:3000 for:

  • Home: Real-time run metrics, KPIs, success rate trends
  • Analytics: Performance analysis and trends
  • Algorithms: Algorithm-specific metrics and cross-SDK comparison (with algorithm tags)
  • Compare: Side-by-side run comparison, search and filter

Architecture

  • qobserva-agent: Telemetry agent with decorators and adapters for all major quantum SDKs
  • qobserva-collector: FastAPI service for ingestion, validation, and storage
  • qobserva-local: One-command orchestrator for the local stack (includes React dashboard)
  • qobserva: This meta-package and CLI (qobserva up / qobserva down)

The React dashboard is part of the local stack and runs automatically when you run qobserva up.

SDK Support

pip install qobserva-agent[all-sdks]

# Or individual SDKs
pip install qobserva-agent[qiskit]
pip install qobserva-agent[braket]
pip install qobserva-agent[cirq]
pip install qobserva-agent[pennylane]
pip install qobserva-agent[pyquil]
pip install qobserva-agent[dwave]

Python Version Compatibility

Verified by running each SDK's example on Python 3.12, 3.13 and 3.14 (September 2026):

SDK 3.12 3.13 3.14
Qiskit ✅ ✅ ✅
Braket ✅ ✅ ✅
Cirq ✅ ✅ ✅
PennyLane ✅ ✅ ✅
pyQuil ✅ ❌ ❌
D-Wave ✅ ✅ ✅

Recommendations: Use Python 3.12 for all 6 SDKs. pyQuil itself supports only Python 3.11–3.12; every other SDK also runs on 3.13 and 3.14.

Project, Provider, and Backend

  • Project: From @observe_run(project="...") — user-defined, for grouping runs.
  • Provider: Extracted from the result (e.g. ibm, aws_braket, local_sim), or unknown when the result doesn't say.
  • Backend: Extracted from the result (e.g. ibm_brisbane, aer_simulator), or unknown.
  • When the SDK result doesn't identify its backend (e.g. Qiskit V2 primitives), pass it: @observe_run(..., backend=AerSimulator()) or backend="statevector_sampler", provider="local_sim".

Filter by these in the dashboard to compare providers and backends. Always set tags={"sdk": "..."} so adapter selection is correct.

Documentation

Reporting Issues / Getting Help

If you encounter bugs, have questions, or would like to request features for the qobserva CLI / meta-package, please open an issue on GitHub:

License

The qobserva meta-package and CLI are provided under the QObserva Community License v1.0 (source-available). See the LICENSE file in this package for full terms. Commercial hosting, distribution of modified versions, or commercial products based on QObserva require a separate license from BuildersArk LLC.

Release files for qobserva 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qobserva 0.1.6
File Size Uploaded
qobserva-0.1.6.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qobserva 0.1.6
File Interpreter ABI Platform
qobserva-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 21.0 kB

Release files / qobserva-0.1.6.tar.gz

Download URL qobserva-0.1.6.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8eb0b39a66e118d06dc607416d4a627adc634ccf11a07397ee1abdfe72931310
BLAKE2b-256 checksum
How to use checksums
22297057681fc47067967e54f3b528054baccab79ad929d1670e3a3627202a9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / qobserva-0.1.6-py3-none-any.whl

Download URL qobserva-0.1.6-py3-none-any.whl
Size 11.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
307e3cc24ea39dfff91afec5782ef22bef5d2c2e81060eb45a04b19921053392
BLAKE2b-256 checksum
How to use checksums
902e55825f4cabe593e31d6e8f8cac7086189f7ad44ffa6872cedfa6df5bbfed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release history Release notifications | RSS feed

0.1.7

2 release files

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page