Frequently Asked Questions
General
What quantum backends are supported?
Marqov supports backends from multiple providers:
| Provider | Backends | Type |
|---|---|---|
| AWS Braket | SV1, DM1, TN1 | Simulator |
| IonQ (via Braket) | Aria-1, Aria-2, Forte-1 | QPU (trapped ion) |
| Rigetti (via Braket) | Ankaa-2, Ankaa-3 | QPU (superconducting) |
| IQM (via Braket) | Garnet, Emerald | QPU (superconducting) |
| QuEra (via Braket) | Aquila | QPU (neutral atom) |
| Azure Quantum | Quantinuum H1/H2, IonQ, Rigetti | QPU |
| Quantum Brilliance | State vector, tensor network, noisy (Aer) | Simulator |
| Marqov | marqov-sim | Simulator (local) |
Use GET /api/backends for the current list with pricing and availability.
What is the maximum number of qubits?
It depends on the backend:
| Backend | Max Qubits |
|---|---|
| SV1 (state vector simulator) | 34 |
| DM1 (density matrix simulator) | 17 |
| TN1 (tensor network simulator) | 50 |
| IonQ Forte-1 | 32 |
| Rigetti Ankaa-3 | 84 |
| QuEra Aquila | 256 (analog mode) |
| Browser simulator (qulacs-wasm) | 20 (hard limit, soft warning at 17) |
| Local simulator (QuantumFlow) | ~25 (limited by memory) |
What quantum frameworks can I use?
Marqov supports five frameworks for writing quantum code:
- Qiskit (IBM)
- Cirq (Google)
- PennyLane (Xanadu)
- OpenQASM (standard quantum assembly)
- Marqov (native SDK)
The playground auto-detects the framework from import statements. You can also specify it explicitly.
Pricing and Billing
How much does it cost to run a job?
Cost depends on the backend:
- Simulators (SV1, DM1, TN1): $0.075 per task + $0.00 per shot. Typical cost: $0.075 per job.
- QPUs: $0.30 per task + per-shot fee (varies by device). IonQ: $0.01/shot. Rigetti: $0.00035/shot. IQM: $0.00145/shot.
- Local/Browser simulators: Free.
- Playground (server mode): Free (no billing).
What are the budget limits?
| Limit | Default |
|---|---|
| Per-job maximum | $100 |
| Per-suite maximum | $500 |
| Daily team budget | $100 |
| Monthly team budget | $1,000 |
Jobs that would exceed the budget receive a 402 (Payment Required) response with current spend details.
How do I check my team’s usage?
Use GET /api/team/usage or the Team Usage page in the UI. You can query by month using the month=YYYY-MM parameter.
Jobs and Execution
What is the difference between Browser and Server mode?
| Feature | Browser Mode | Server Mode |
|---|---|---|
| Execution | Client-side (in browser) | Server-side (worker) |
| Cost | Free | Free (playground) or billed (jobs) |
| Latency | Instant | Depends on worker load |
| Max qubits | 20 | Backend-dependent |
| Supported code | OpenQASM only | All frameworks |
| Engine options | quantum-circuit, qulacs-wasm | All backends |
Browser mode is the default in the playground. Python code will prompt you to switch to Server mode or convert to QASM.
How do I cancel a running job?
There is currently no cancel button in the UI. For Braket jobs, cancellation is supported programmatically via BraketExecutor.cancel(task_arn). Jobs in pending status can be manually updated to cancelled via the database.
How do retries work?
Retries are configured per-task using the retries parameter on the @task decorator:
@task(retries=3, timeout=600)
def measure(circuit):
...When a task fails, Temporal automatically retries it up to retries times with exponential backoff. The timeout parameter sets the maximum execution time per attempt.
Jobs submitted with execution_mode: "direct" do not get automatic retries.
Adding and Configuring Backends
How do I add a new backend?
-
Insert a row into the
backendstable via the Supabase SQL Editor:INSERT INTO backends (slug, name, provider, device_type, device_arn, region, ...) VALUES ('my-backend', 'My Backend', 'AWS Braket', 'qpu', 'arn:aws:braket:...', 'us-east-1', ...); -
Add the slug to the
VALID_BACKENDSarray inplatform/src/lib/schemas.ts. -
Ensure the
ExecutorFactoryinsrc/marqov/executors/factory.pysupports the provider type. -
Deploy both the platform (for schema validation) and the worker (for execution).
How do I configure Azure Quantum credentials?
Azure credentials are stored as encrypted team secrets, not environment variables.
- Navigate to Team Settings > Credentials in the UI.
- Select the Azure Quantum provider.
- Enter your subscription ID, resource group, workspace name, and location.
- The platform stores these encrypted via the
upsert_team_secretdatabase function.
Capsules
What is a capsule?
A capsule is a reproducible workflow package that captures everything needed to replay a quantum experiment: code, parameters, backend configuration, results, and metadata. Once sealed, a capsule becomes immutable.
What are capsule lifecycle states?
| State | Description | Mutable? |
|---|---|---|
draft | Initial state, can be edited | Yes |
runnable | Ready for execution | Yes |
sealed | Immutable, cryptographically verified | No |
archived | Long-term storage | No |
How do I seal a capsule?
Use POST /api/capsules/:id/seal or the Seal button in the UI. Sealing is irreversible. Once sealed, the capsule cannot be modified or deleted.
Team Management
What are the team roles?
| Role | Permissions |
|---|---|
owner | Full access. Cannot be removed or role-changed. One per team. |
admin | Can manage members, invitations, secrets, and all resources. |
member | Can create and view jobs, scripts, capsules. Cannot manage team settings. |
What happens when a team is suspended?
Suspended teams can read all their data (jobs, scripts, capsules, etc.) but cannot create or modify resources. All write endpoints return 403. Suspensions are set by platform admins via the admin API.
How do team invitations work?
- An admin or owner creates an invitation via
POST /api/team/invitations. - An email is sent to the invitee with a secure token link.
- The invitation expires after 7 days.
- When the invitee clicks the link, they are added to the team with the specified role.
Browser Simulator
Why is the simulator slow on Safari?
Safari does not support Cross-Origin-Embedder-Policy: credentialless, which is required for SharedArrayBuffer and the high-performance qulacs-wasm engine. On Safari, the platform automatically falls back to the quantum-circuit engine, which is JavaScript-based and 26-886x slower than qulacs-wasm.
What is the qubit limit for browser simulation?
- 17-20 qubits: Soft warning (simulation may be slow or use significant memory)
- 21+ qubits: Hard block (prevents tab crash from memory exhaustion)
For larger circuits, use Server mode.
Can I use Python code in the browser simulator?
No. Browser simulation only supports OpenQASM. If you write Python code (Qiskit, Cirq, PennyLane), the playground will offer to either convert it to QASM for browser execution or run it on the server.