Metadata-Version: 2.4
Name: zilver
Version: 0.3.2
Summary: Open quantum simulation network for Apple Silicon
Project-URL: Homepage, https://github.com/sirius-quantum/zilver
Project-URL: Repository, https://github.com/sirius-quantum/zilver
Project-URL: Issues, https://github.com/sirius-quantum/zilver/issues
Project-URL: Manifesto, https://github.com/sirius-quantum/zilver/blob/main/MANIFESTO.md
License: Apache-2.0
License-File: LICENSE
Keywords: apple silicon,barren plateau,distributed,mlx,network,quantum computing,simulation,variational quantum algorithms
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: System :: Distributed Computing
Requires-Python: >=3.10
Requires-Dist: mlx>=0.18.0
Requires-Dist: numpy>=1.24.0
Provides-Extra: dev
Requires-Dist: pytest-benchmark>=4.0; extra == 'dev'
Requires-Dist: pytest>=7.4; extra == 'dev'
Provides-Extra: network
Requires-Dist: cryptography>=42.0; extra == 'network'
Requires-Dist: fastapi>=0.135.2; extra == 'network'
Requires-Dist: httpx>=0.27; extra == 'network'
Requires-Dist: pyobjc-framework-security>=10.0; (sys_platform == 'darwin') and extra == 'network'
Requires-Dist: rich>=13.0; extra == 'network'
Requires-Dist: slowapi>=0.1.9; extra == 'network'
Requires-Dist: starlette>=0.49.1; extra == 'network'
Requires-Dist: uvicorn[standard]>=0.27; extra == 'network'
Provides-Extra: qiskit
Requires-Dist: qiskit-aer>=0.12; extra == 'qiskit'
Requires-Dist: qiskit>=0.45; extra == 'qiskit'
Description-Content-Type: text/markdown

# Zilver

[![PyPI version](https://img.shields.io/pypi/v/zilver.svg)](https://pypi.org/project/zilver/)
[![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
[![MLX](https://img.shields.io/badge/MLX-0.18%2B-orange.svg)](https://github.com/ml-explore/mlx)
[![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](LICENSE)
[![Apple Silicon](https://img.shields.io/badge/Apple%20Silicon-M1--M4-black.svg)](https://www.apple.com/mac/)

**Open quantum simulation network for Apple Silicon.**

Zilver turns your Apple Silicon Mac into a quantum simulation node.

Built on [MLX](https://github.com/ml-explore/mlx) — Apple's machine learning framework for macOS. Requires an Apple Silicon Mac (M1 or later) running macOS. MLX uses Apple's Metal GPU and unified memory architecture; it does not run on Linux, Windows, or Intel Macs.

Statevector, density matrix, and tensor network backends.

---

## Run a node

Got an Apple Silicon Mac? You can contribute compute to the network.

```bash
pip install "zilver[network]"
zilver-node start --registry https://registry.siriusquantum.com
```

See [NODES.md](NODES.md) for full requirements and how to apply for operator approval.

---

## Submit jobs

Researchers and AI labs can submit quantum simulation jobs to the network via API. No infrastructure required — bring your circuit, we handle the compute.

To request API access, open an issue at [github.com/Sirius-Quantum/zilver](https://github.com/Sirius-Quantum/zilver) with your use case and institution. Once approved you will receive a client API key and the registry endpoint.

```python
from zilver.client import NetworkCoordinator
from zilver.node import SimJob

coord = NetworkCoordinator(
    "https://registry.siriusquantum.com",
    client_api_key="your-api-key",
)

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
```

---

## Local simulation

Use Zilver as a standalone quantum simulator on any Apple Silicon Mac — no network or account required.

```bash
pip install zilver
```

MLX is installed automatically as a dependency. No separate download needed.

```python
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")
```

Parameter-shift gradients, fully batched:

```python
from zilver.circuit import hardware_efficient
from zilver.gradients import param_shift_gradient
import mlx.core as mx

circuit = hardware_efficient(n_qubits=4, depth=2)
f = circuit.compile(observable="sum_z")
params = mx.zeros([circuit.n_params])
grads = param_shift_gradient(f, params)
```

---

## License

Apache 2.0. See [LICENSE](LICENSE).

---

## Manifesto

[Read the Sirius Quantum Manifesto](MANIFESTO.md)
