QiskitOperator is a production-ready Kubernetes operator for IBM Qiskit quantum computing workloads. It brings quantum computing into the cloud-native world with enterprise-grade reliability, security, and cost management.
- π§ Kubernetes-Native: Custom Resource Definitions (CRDs) for quantum jobs, backends, budgets, and sessions
- π Multi-Backend Support: IBM Quantum Platform, AWS Braket, and local simulators
- π° Cost Management: Intelligent backend selection with budget enforcement and cost optimization
- π‘οΈ Enterprise Security: RBAC, Pod Security Standards, secret management, and audit logging
- π Observability: Prometheus metrics and Grafana dashboards out of the box
- π Production Ready: Designed for 99.9% uptime with comprehensive error handling and retry logic
- Architecture
- Prerequisites
- Installation
- Quick Start
- Custom Resources
- Examples
- Development
- Contributing
- License
QiskitOperator consists of several key components:
- Operator Controller (Go): Manages quantum job lifecycle and reconciliation
- Validation Service (Python): Validates circuit syntax and analyzes circuit properties
- Backend Managers: Abstractions for IBM Quantum, AWS Braket, and local simulators
- Cost Manager: Tracks spending and enforces budget constraints
- Storage Manager: Handles result persistence across PVC, S3, GCS
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β QiskitOperator Controller (Go) β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Reconciliation Loop β β
β β - Job validation β β
β β - Backend selection β β
β β - Pod creation β β
β ββββββββββββββββ¬βββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
β REST API
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Python Validation Service β
β - Circuit syntax validation β
β - Circuit metrics extraction β
β - Backend compatibility checking β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Quantum Backends β
β - IBM Quantum Platform β
β - AWS Braket β
β - Local Simulators (Qiskit Aer) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Kubernetes 1.24+
- Go 1.21+ (for development)
- Docker or Podman (for building images)
- kubectl configured for your cluster
- (Optional) IBM Quantum account with API key
# Add the QiskitOperator Helm repository
helm repo add qiskit-operator https://quantum-operator.github.io/qiskit-operator
helm repo update
# Install the operator
helm install qiskit-operator qiskit-operator/qiskit-operator \
--namespace qiskit-operator-system \
--create-namespace# Install CRDs
kubectl apply -f config/crd/bases/
# Install the operator
kubectl apply -f config/manager/manager.yaml# Clone the repository
git clone https://github.com/quantum-operator/qiskit-operator
cd qiskit-operator
# Build and install
make manifests
make install
# Run locally (for development)
make runkubectl create secret generic ibm-quantum-credentials \
--from-literal=api-key=YOUR_IBM_QUANTUM_API_KEY \
--namespace defaultCreate a file named hello-quantum.yaml:
apiVersion: quantum.io/v1
kind: QiskitJob
metadata:
name: hello-quantum
spec:
backend:
type: local_simulator
circuit:
source: inline
code: |
from qiskit import QuantumCircuit
# Create a simple Bell state
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])
execution:
shots: 1024
optimizationLevel: 1
output:
type: configmap
location: hello-quantum-resultsApply it:
kubectl apply -f hello-quantum.yaml# List quantum jobs
kubectl get qiskitjobs
# Get detailed status
kubectl describe qiskitjob hello-quantum
# View results
kubectl get configmap hello-quantum-results -o yamlRepresents a quantum circuit execution job.
apiVersion: quantum.io/v1
kind: QiskitJob
metadata:
name: my-quantum-job
spec:
backend:
type: ibm_quantum # ibm_quantum | local_simulator | aws_braket
name: ibm_brisbane # Specific backend name
instance: crn:v1:bluemix... # IBM Cloud CRN (enterprise)
circuit:
source: inline # inline | configmap | url | git
code: |
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
execution:
shots: 1024
optimizationLevel: 3
priority: normal # low | normal | high | urgent
budget:
maxCost: "$10.00"
costCenter: quantum-research
output:
type: pvc # pvc | s3 | gcs | configmap
location: quantum-results
format: json # json | pickle | qpy | csv
credentials:
secretRef:
name: ibm-quantum-credentialsRepresents a quantum backend configuration.
Manages cost constraints and quotas per namespace.
Manages IBM Quantum Runtime sessions for iterative algorithms.
apiVersion: quantum.io/v1
kind: QiskitJob
metadata:
name: cost-sensitive-job
spec:
backend:
type: ibm_quantum
backendSelection:
weights:
cost: 0.70 # Prioritize cost
queueTime: 0.20
capability: 0.05
availability: 0.05
fallbackToSimulator: true
budget:
maxCost: "$5.00"
# ... rest of specapiVersion: quantum.io/v1
kind: QiskitJob
metadata:
name: vqe-optimization
spec:
backend:
type: ibm_quantum
name: ibm_brisbane
session:
name: vqe-session
maxTime: 3600 # 1 hour
mode: dedicated # Lock QPU for exclusive access
circuit:
source: git
gitRef:
repository: https://github.com/your-org/quantum-algorithms
branch: main
path: vqe/h2_molecule.py
# ... rest of specqiskit-operator/
βββ api/v1/ # CRD type definitions
β βββ qiskitjob_types.go
β βββ qiskitbackend_types.go
β βββ qiskitbudget_types.go
β βββ qiskitsession_types.go
βββ internal/controller/ # Reconciliation logic
β βββ qiskitjob_controller.go
β βββ ...
βββ pkg/
β βββ backend/ # Backend implementations
β β βββ ibm/ # IBM Quantum backend
β β βββ aws/ # AWS Braket backend
β β βββ local/ # Local simulator
β βββ cost/ # Cost management
β βββ storage/ # Storage abstraction
β βββ metrics/ # Observability
β βββ validation/ # Circuit validation
βββ validation-service/ # Python validation service
β βββ main.py
β βββ requirements.txt
β βββ Dockerfile
βββ config/ # Kubernetes manifests
β βββ crd/bases/ # Generated CRDs
β βββ manager/ # Operator deployment
β βββ rbac/ # RBAC configuration
βββ charts/ # Helm chart
# Generate manifests
make manifests
# Generate code
make generate
# Run tests
make test
# Build Docker image
make docker-build IMG=your-registry/qiskit-operator:tag
# Push Docker image
make docker-push IMG=your-registry/qiskit-operator:tag# Unit tests
make test
# Integration tests
make test-integration
# E2E tests (requires Kind cluster)
make test-e2ecd validation-service
# Install dependencies
pip install -r requirements.txt
# Run locally
python main.py
# Test the service
curl -X POST http://localhost:8000/validate \
-H "Content-Type: application/json" \
-d '{
"code": "from qiskit import QuantumCircuit\nqc = QuantumCircuit(2)\nqc.h(0)\nqc.cx(0,1)",
"backend_name": "ibm_brisbane",
"optimization_level": 1
}'We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Copyright 2025 Quantum Operator Team.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
- Documentation: https://docs.quantum-operator.io
- GitHub Issues: https://github.com/quantum-operator/qiskit-operator/issues
- Slack Community: Join our Slack
- Discussions: GitHub Discussions
- MVP with local simulator support
- IBM Quantum Platform integration
- Circuit validation service
- AWS Braket backend
- Cost optimization ML model
- Argo Workflows integration
- Tekton Pipeline integration
- OperatorHub certification
- Azure Quantum backend
- IBM Qiskit team for their excellent quantum computing framework
- Kubernetes community for the operator framework
- All contributors who help make quantum computing more accessible
Built with β€οΈ by the Quantum Operator Team
Making quantum computing cloud-native, one operator at a time