Open quantum simulation network for Apple Silicon
Project description
Zilver
Open quantum simulation network for Apple Silicon.
Zilver turns your Apple Silicon Mac into a quantum simulation node.
Built on MLX. Statevector, density matrix, and tensor network backends.
Join the network
Two commands to become a node operator:
pip install zilver[network]
zilver-node start --registry https://registry.siriusquantum.com:7701 --backends sv,dm
Your node auto-detects chip, RAM, and qubit ceilings. It registers, starts serving simulation jobs, and sends heartbeats every 30 seconds. That is it.
Early node operators will receive priority allocation of Sirius Quantum network rewards when the incentive layer launches. The simulation network is live. Rewards are retroactive to genesis nodes.
Hardware
Every Apple Silicon chip is supported. Qubit ceilings scale with unified memory.
| Chip | RAM | SV qubits | DM qubits | TN qubits |
|---|---|---|---|---|
| M1 | 8 GB | 28 | 14 | 50 |
| M1 / M2 | 16 GB | 30 | 15 | 50 |
| M1 Pro / M2 Pro | 32 GB | 31 | 15 | 50 |
| M1 Max / M2 Max | 64 GB | 32 | 16 | 50 |
| M1 Ultra / M2 Ultra | 128 GB | 33 | 16 | 50 |
| M3 / M4 | 16–24 GB | 30–31 | 15 | 50 |
| M3 Max / M4 Max | 64–128 GB | 32–33 | 16 | 50 |
SV = statevector (exact). DM = density matrix (noise-aware). TN = tensor network / MPS (sparse circuits, scales to 50+ qubits regardless of RAM).
What Zilver does
Local simulation
MLX-native simulator with full mx.vmap and mx.compile support. One Metal dispatch evaluates an entire loss landscape 400 parameter points in a single GPU kernel instead of 400 sequential circuit runs.
from zilver.circuit import hardware_efficient
from zilver.landscape import LossLandscape
circuit = hardware_efficient(n_qubits=6, depth=3)
result = LossLandscape(circuit, sweep_params=(0, 1), resolution=20).compute()
print(f"Plateau coverage: {result.plateau_coverage():.1%}")
print(f"Trainability score: {result.trainability_score():.3f}")
print(f"Wall time: {result.wall_time_seconds:.3f}s")
Distributed network
Submit jobs to any registered node. The coordinator finds an eligible node, dispatches the job, and returns a verified result with a cryptographic proof.
from zilver.client import NetworkCoordinator
from zilver.node import SimJob
coord = NetworkCoordinator("https://registry.siriusquantum.com:7701")
job = SimJob(
circuit_ops=[{"type": "ry", "qubits": [0], "param_idx": 0}],
n_qubits=4, n_params=1, params=[1.57], backend="sv",
)
result = coord.submit(job)
print(result.expectation)
print(result.verify(job)) # True cryptographic proof check
Gradient computation
Parameter-shift gradients, fully batched over parameter vectors. Plug directly into any VQA optimizer.
from zilver.gradients import param_shift_gradient
f = circuit.compile(observable="sum_z")
grads = param_shift_gradient(f, params)
Install
Simulator only
pip install zilver
Full network node
pip install zilver[network]
Requirements: Apple Silicon Mac, macOS 13 Ventura or later, Python 3.10+.
Gate library
| Gate | Type | Params |
|---|---|---|
| H, X, Y, Z, S, T | Fixed single-qubit | |
| RX, RY, RZ | Rotation | 1 |
| U3 | Universal single-qubit | 3 (theta, phi, lambda) |
| CNOT, CZ, SWAP, iSWAP | Fixed two-qubit | |
| RZZ, RXX | Ising coupling | 1 |
| CRZ | Controlled rotation | 1 |
All parameterized gates are MLX-native compatible with mx.vmap and mx.compile.
Development
git clone https://github.com/Sirius-Quantum/zilver
cd zilver
pip install -e ".[dev,network]"
pytest tests/ # 540 tests
License
Apache 2.0. See LICENSE.
Manifesto
We believe quantum compute should be open, distributed, and owned by the people who run it.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zilver-0.3.0-py3-none-any.whl.
File metadata
- Download URL: zilver-0.3.0-py3-none-any.whl
- Upload date:
- Size: 84.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a140b5806627e3cb4d98daa222d55d115769206aae66ad4bf3e23d0b4c1f4860
|
|
| MD5 |
af1acfd8d547ca8820ad3bc9e2c4ab9b
|
|
| BLAKE2b-256 |
7f7d2f8300d7639a21aa319049a62e16c3fecf7af772572527a43570ca44416e
|