Quantum Simulation · Alpha · Seeking Funding

Quantum Computing
On Consumer Hardware

A quantum simulation engine that runs on any consumer GPU. Define your quantum circuit — the engine handles execution automatically. Chemistry, nuclear physics, security, optimization. One platform, multiple domains, any Vulkan GPU.

Honest about what it is: a fast, structure-aware classical GPU simulator with a hardware off-ramp — not a quantum computer. Benchmarks below are self-run on a single workstation. See the measured numbers & limits →

01 Circuit
02 Compile
03 Execute
04 Validate
05 Deploy
The Problem

Quantum simulation is
locked behind $10M+ infrastructure.

Researchers wait months for access to quantum hardware. Companies invest millions in cloud-based quantum services that don't scale. The entire field moves at the speed of queue times.

Our Approach

Quantum simulation on
the hardware you already have.

We built a quantum simulation engine that runs on consumer GPUs via Vulkan. Define your quantum circuit — the engine handles execution automatically. Hardware-accelerated, any GPU vendor. Multiple proven domains. Self-contained deployment.

How this started

This began as an attempt to break Bitcoin puzzle keys. The classical-number-theory plus quantum-assisted period-finding pipeline grew out of that chase — which is why factoring and structure-exploiting circuits are first-class capabilities here, not afterthoughts.

The Process

From Problem to Result

01

Model

Define your quantum circuit. Standard formats supported for chemistry, optimization, and cryptographic workloads. No specialized hardware knowledge required.

02

Compile

Automatic circuit optimization. Multiple optimization levels. Detects structural patterns for efficient execution. Handles the complexity so you don't have to.

03

Execute

GPU execution via Vulkan compute. Automatic selection of the fastest execution path for your specific circuit. Fleet coordination across multiple GPUs when needed.

04

Validate

Results validated against known physical ground truths. Chemical accuracy, nuclear ground states, cryptographic verification. If the physics says it's right, it's right.

05

Deploy

On-premise deployment. Your workloads never leave your infrastructure. Full data sovereignty. No cloud required. The engine is yours — the results are yours.

Why This Matters

Quantum Platform

Any GPU
Hardware Support
Any Vulkan GPU · CPU fallback
1000+
Qubits Supported
Structured / correlation circuits
Multi
Problem Domains
Chemistry · Nuclear · Security · Search
GPU
Compiled Execution
SPIR-V kernels, no interpreter
Auto
Circuit Routing
Optimal path per workload
On-Prem
Data Sovereignty
Your data never leaves
Chemical
Accuracy Level
Validated against exact physics
EU
European-Built
Italy · Kreeate
What We Do

Application Areas

Quantum Chemistry

Calculate molecular ground states for drug discovery, materials science, and catalyst design. Validated to chemical accuracy against exact diagonalization. Standard chemistry input formats supported.

Nuclear Shell Model

Ground state energies and spectroscopy for atomic nuclei. Validated against experimental data. Defense, energy, and fundamental physics applications.

Quantum Security

Assess cryptographic resilience against quantum attacks. Semiprime factoring at scale. Post-quantum readiness assessment for your infrastructure.

Quantum Optimization

Solve combinatorial optimization problems in finance, logistics, and scheduling. Portfolio construction, resource allocation, route planning. Nature-inspired algorithms.

Quantum Engine

Define quantum circuits declaratively. Automatic execution path selection per workload. One engine, multiple domains, any Vulkan GPU. No vendor lock-in.

Data Sovereignty

On-premise deployment. Your quantum workloads never leave your infrastructure. Full control over proprietary research data and results. No cloud dependency.

01 Engineering Philosophy

"The best part is no part. The best process is no process. It weighs nothing, costs nothing, can't go wrong."

— SpaceX engineering principle

We apply the same first-principles methodology that took rockets from disposable to reusable. Every assumption is questioned. Every conventional limit is tested. Every "impossible" is a hypothesis, not a law.

01

DELETE

Remove everything that isn't physics. If a requirement came from convention, not from a physical constraint, it is suspect. The simplest solution that satisfies physics is the correct one.

02

SIMPLIFY

Reduce to irreducible truths. Every layer of abstraction has a cost. Does it earn its keep? A problem that looks complex is usually a problem viewed from the wrong angle.

03

ACCELERATE

Force 10x thinking. Incremental improvement preserves the old architecture. A 10x target forces fundamental rethinking. If it seems impossible, the constraint model is wrong.

What This Means For Quantum

Conventional quantum computing assumes you need a multi-million-dollar dilution refrigerator running at millikelvin temperatures. We asked: what is the actual computation being performed, and can we do it differently?

The answer turned out to be yes. By changing the representation — how information is encoded, how operations are performed, how results are read out — the same computational work fits on a consumer GPU. It runs as classical computation — but the outputs are real, validated physics: ground-state energies and observables checked against exact references, not approximations of them. A different path to the same physics.

The Core Ideas

01

Representation Is Cost

The hard part of a computation is often how you represent it, not the problem itself. The engine keeps several pictures of a quantum state and runs each circuit in whichever fits its structure: a dense vector — exact to 31 qubits (16 GB) on a single consumer GPU, for any circuit; a web of pairwise correlations for structured circuits at 1000+ qubits; and a symmetry-reduced packing that stores only the physically reachable states — proven on a 34-qubit particle-conserving (chemistry) circuit with ~0.9 billion states on one card, where the full vector would need 137 GB, and by design fits the densest 34-qubit chemistry sector inside a 24 GB GPU. This isn't beating complexity theory; complexity is real. It's choosing the representation where a problem's own structure does the work — the dense and packed figures above measured on a single RTX 3090, exact to floating point.

02

One Solver, Many Sciences

The same ground-state solver finds a molecule's energy, an atomic nucleus's energy, and — when a number is encoded as a Hamiltonian — a small factor (15 = 3×5, 21 = 3×7). Different fields, one shape of problem: find the lowest-energy state. The solver doesn't know which domain it is in, and doesn't need to.

03

Evolve, Don't Only Design

Some circuits we don't hand-write — we let a genetic search find them. Pointed at a noise channel, the search rediscovers a small error-correcting code on its own, with no template. Early, and only for small codes so far, but real: the machine designing for the machine.

02 Validation Methodology

We don't claim. We measure. Every capability is validated against a ground truth that cannot be faked.

Chemistry

Molecular ground state energies validated against exact diagonalization — the mathematical ground truth for the Hamiltonian. No approximations, no basis-set limitations. If the engine's answer matches exact diagonalization to sub-milliHartree precision, the engine is correct. Period.

Nuclear Physics

Nuclear shell-model ground states validated against exact diagonalization of the same interaction (Lanczos) — for 18O the engine agrees to 0.095 keV. The shell-model interactions themselves (USDB) are the field's experimentally-calibrated standard, so a correct solve is a physically meaningful one.

Cryptography

Semiprime factoring validated via gcd cross-check — the mathematical ground truth. If the engine claims two factors, multiplying them must produce the original number. An answer that doesn't survive gcd verification is not an answer.

Cross-Domain

The strongest validation: same engine, same code, different physics. The solver that finds molecular ground states also finds nuclear ground states. The period-finding that factors numbers also detects orbital resonances. Universality is proven when the engine doesn't know what domain it's working in.

03 Proven Domains

These are not roadmaps. These are working, validated results.

Quantum Chemistry

Molecular ground-state energies by exact diagonalization — from H₂O to a real drug's active space (dexamfetamine) to a real ab-initio iron–sulfur cluster (Fe₂S₂). Validated against the exact FCI of the same Hamiltonian. The output is electronic structure: an input to discovery, not the discovery itself.

Nuclear Shell Model

Shell-model ground states from the sd-shell (¹⁸O, ²⁰Ne) up to a 64-qubit gds-shell register (¹⁰²Sn), checked against exact Lanczos diagonalization in the USDB/SDI model space — for ¹⁸O, to 0.095 keV. The same ITP solver as the chemistry above; only the Hamiltonian changes.

Cryptographic Assessment

Semiprime factoring at scale. Post-quantum readiness assessment. Cryptographic resilience evaluation against quantum-capable adversaries.

Combinatorial Optimization

Portfolio construction. Resource allocation. Logistics and scheduling. Nature-inspired algorithms that find solutions gradient methods miss.

Satellite & Space

Orbital conjunction detection. Fleet tracking. Space weather correlation. Real-time mission planning support for satellite operators.

Blockchain Verification

On-chain validation of quantum computation results. Decentralized verification. GPU-accelerated cryptographic operations.

Quantum Pathfinding

A dozen nature-inspired search strategies — Grover, ant-colony, particle-swarm, grey-wolf and more — expressed as quantum circuits and benchmarked on the same graph problems. "Nature-inspired" is a framing: several recast classical heuristics in superposition.

Quantum Error Correction

Repetition and rotated surface codes with syndrome extraction and a Union-Find decoder — and, separately, small codes discovered by the evolutionary search above rather than hand-designed.

04 The Engine

At its core, the engine does one thing: execute quantum circuits on consumer GPUs. Everything else — the chemistry, the nuclear physics, the factoring, the optimization — is built on top of that foundation.

Input

Define your quantum circuit. Standard formats. The engine handles the rest — compilation, optimization, execution path selection, and validation. You focus on the problem, not the plumbing.

Execution

Vulkan compute, not CUDA — portable by design to any Vulkan GPU, not tied to one vendor's silicon. Automatic selection of the fastest execution strategy for your specific circuit. Multi-GPU when you need it. (Section 07 goes deeper on what that independence buys you.)

Deployment

On-premise. Self-contained. Your quantum workloads never leave your infrastructure. No cloud dependency. No vendor lock-in. The engine is yours. The results are yours.

Scale

From a laptop GPU to a fleet of workstations. The engine scales with your hardware. More GPUs = more throughput. The architecture was designed for scale from day one.

05 Developer Experience

One engine. Multiple domains. Same API. These are the patterns developers work with — the public surface of the engine.

Basic: Bell State

rust — verified output from live engine
// Create and run a 2-qubit Bell state
use kq_core::circuit::ParametricCircuit;
use kq_engine::qpipeline::qrun;

let mut circuit = ParametricCircuit::new(2);
circuit.h(0);
circuit.cx(0, 1);
let result = qrun(&circuit);

println!("Z: {:?}", result.z);
// → Z: [0.0, 0.0]  (equal superposition confirmed)
println!("Time: {}µs", result.time_us);
// → Time: 4µs  (on RTX 3090)

Basic: GHZ State

rust — multi-qubit entanglement
// Create a 3-qubit GHZ state |000⟩ + |111⟩
let mut circuit = ParametricCircuit::new(3);
circuit.h(0);
circuit.cx(0, 1);
circuit.cx(1, 2);
let result = qrun(&circuit);

// Engine auto-selects the execution strategy
println!("Z: {:?}", result.z);
// → Z: [0.0, 0.0, 0.0]  (maximally entangled)

Advanced: Molecular Ground State

rust — chemistry · 14 qubits · verified on Threadripper 3970X + RTX 3090
// H₂O ground state — 14 qubits, STO-3G basis
use kq_engine::itp::{ITPSolver, direct_fci};
use kq_core::molecules;

let ham = molecules::h2o();           // 14 qubits

// Ground truth: exact diagonalization in the particle sector
let exact = direct_fci(&ham);
println!("E = {:.6} Ha  ({} dets)", exact.energy, exact.n_dets);

// → E = -75.012647 Ha  (1001 dets, 2.0 s)
// → matches the PySCF FCI reference to 0.0000 mHa
//
// The ITP solver — ITPSolver::new(ham).run() — converges
// to this same energy. Exact diagonalization is the
// ground truth we validate every chemistry result against.

Advanced: Nuclear Shell Model

rust — nuclear physics · same solver, different physics
// Find ¹⁸O ground state — same ITP solver as chemistry
use kq_nuclear::{NuclearInteraction, ShellModelHamiltonian, nuclei};
use kq_engine::itp::{ITPSolver, HamiltonianEval};

let usdb = NuclearInteraction::usdb_sd_shell();
let ham  = ShellModelHamiltonian::build(&usdb, nuclei::o18())
    .expect("valid interaction");

let mut solver = ITPSolver::new(ham.clone())
    .with_max_steps(2000)
    .with_dt(0.05);

let result = solver.run();
println!("¹⁸O: {:.6} MeV", result.energy);

// → ¹⁸O: -9.468 MeV  (rel. ¹⁶O core, USDB sd-shell)
// → Δ = 0.095 keV vs exact diagonalization (Lanczos)
// Same ITPSolver as the chemistry example — only the
// Hamiltonian changed. One solver, two fields of physics.

Production: Pipeline & Batch

rust — batch processing pipeline
// Process thousands of circuits through the optimization pipeline
use kq_engine::qpipeline::QPipeline;
use kq_core::qcc::OptLevel;

let pipe = QPipeline::new(nq)
    .with_opt(OptLevel::O3);          // maximum optimization

// Batch: compile once, run many
let results = pipe.batch_run(|p| build_circuit(p), &params);

// Streaming: process data as it arrives
let stream = pipe.stream(data.into_iter(), |d| build_from(d));
for result in stream {
    process(result);
}
// Same API across domains: chemistry, nuclear, crypto, optimization

Domain: Drug Discovery — Screen, then Solve

A discovery CLI built on the engine. It screens a real compound from the ChEMBL library the way a medicinal chemist would (classical cheminformatics — Lipinski, QED), then hands a tractable active space to the same exact solver used for H₂O. The screening is not quantum; the ground-state energy is. Honest about which part is which.

shell — discovery CLI · ChEMBL 36 (2,878,135 molecules · 4,005 approved drugs)
$ chem_discovery design ibuprofen

  IDENTITY   IBUPROFEN · CHEMBL521 · C13H18O2 · APPROVED
  LIPINSKI   MW 206 < 500 ✓   LogP 3.1 < 5 ✓   HBD 1 ≤ 5 ✓
             HBA 1 ≤ 10 ✓   PSA 37 < 140 ✓   RotB 4 ≤ 10 ✓
  VERDICT    ✅ DRUG-LIKE — 0/5 violations
  QED        0.82 / 1.00  (quantitative drug-likeness, "High" tier)

# Screening descriptors are classical. The quantum step is next:
# the electronic ground state, by exact diagonalization.
rust — pharmaceutical chemistry · dexamfetamine (CAS 51-64-9) · exact FCI
// Electronic ground state of a real drug molecule — the SAME solver
// as the H₂O example above, only the integrals differ.
use kq_core::second_quant::SQHamiltonian;
use kq_engine::itp::{lanczos_fci, HamiltonianEval};

// CAS(6,6) active-space integrals (FCIDUMP from PySCF)
let fc  = std::fs::read_to_string("data/dexamfetamine.fcidump")?;
let ham = SQHamiltonian::from_fcidump(&fc);

// Lanczos exact diagonalization — ground truth, no ansatz to design
let fci  = lanczos_fci(&ham);
let e_hf = ham.diagonal_energy(ham.hf_det());

println!("{} qubits · {} determinants", ham.n_qubits(), fci.hilbert_dim);
println!("E_corr = {:.1} mHa", (fci.energy - e_hf) * 1000.0);
// → 12 qubits · 924 determinants
// → E_corr = -61.4 mHa  (correlation energy beyond Hartree–Fock)
//
// The engine computes electronic structure — an INPUT to discovery
// (a property a screening model consumes), not the discovery itself.
// It does not invent molecules or predict clinical outcomes.

Bridge: Quantum Observables → ML Features

The honest interface to machine learning. One command turns a list of molecules (or nuclei) into a feature table — energies, correlation, particle number, per-orbital occupations — for a downstream QSAR / property model. The crate's own scope, verbatim: "It does not train models, it does not score clinical risk. It produces numbers; other tools make decisions."

shell — kq-desc · quantum descriptors for an ML pipeline
$ kq-desc compute data/h2.fcidump data/lih.fcidump data/beh2.fcidump --out features.csv

  [H2]   n_qubits=4,  n_electrons=2 — E_ground -1.137306 Ha, E_corr -0.020307 Ha
  [LiH]  n_qubits=12, n_electrons=4 — E_ground -7.891787 Ha, E_corr -0.029923 Ha
  [BeH2] n_qubits=14, n_electrons=6 — E_ground -15.893848 Ha, E_corr -0.332570 Ha
  ✓ Wrote 3 rows to features.csv

# 24-column CSV. Selected columns for H2:
#   E_HF -1.116999   E_corr -0.020307   E_ground -1.137306
#   N_expectation 2.0   Sz 0.0   n_orb_0 1.973154   n_orb_1 0.026846
# Same schema for nuclei (a domain column tags each row). One trait, two sciences.

Domain: Catalysis — Real Ab-Initio Integrals

The hard end of chemistry: a transition-metal iron–sulfur cluster. These are real PySCF integrals at crystallographic Fe–S geometry — thousands of genuine two-electron terms, not a fitted toy model. The [2Fe–2S] core is the active site of ferredoxins (electron transport, nitrogen fixation) and a classic multireference stress test for quantum chemistry.

rust — catalysis · [2Fe–2S] ferredoxin core · CAS(6,6), 12 qubits
// Real ab-initio integrals: Fe–Fe 2.7 Å, Fe–S 2.2 Å (crystallographic),
// STO-3G, generated by PySCF CASSCF → FCIDUMP. Same solver as before.
use kq_core::second_quant::SQHamiltonian;
use kq_engine::itp::lanczos_fci;

let fc  = std::fs::read_to_string("data/fe2s2_cas6e6o_sto-3g.fcidump")?;
let ham = SQHamiltonian::from_fcidump(&fc);
let fci = lanczos_fci(&ham);

println!("[2Fe-2S] CAS(6,6): {} qubits, {} dets, E = {:.6} Ha",
    ham.n_qubits(), fci.hilbert_dim, fci.energy);
// → [2Fe-2S] CAS(6,6): 12 qubits, 924 dets, E = -3286.008016 Ha
//
// Exact diagonalization IS the ground truth here. (A CASSCF energy
// is not exact FCI, so we don't quote an accuracy delta against it —
// see the Limitations section.)

Domain: Portfolio Optimization

rust — financial optimization · 14 real assets
// Quantum optimization on real market data
use kq_program::{QProgram, portfolio};
use kq_engine::qpipeline::QPipeline;

// Load 14-asset portfolio: AAPL, BTC, ETH, NVDA, TSLA, GOLD, ...
let market = portfolio::load("data/market_data.json");
let program = QProgram::portfolio_optimize(&market)
    .with_risk_budget(0.15)
    .with_cardinality(5);   // select 5 assets from 14

let pipe = QPipeline::new(program.n_qubits())
    .with_opt(OptLevel::O3);

let result = pipe.run(&program.compile());
println!("Optimal allocation: {:?}", result.z);
// Returns Z expectations encoding asset selection

Domain: Satellite Conjunction Screening

rust — space situational awareness · one satellite → one qubit · 336 LEO objects verified
// Each satellite is mapped to a qubit. Its orbital phase becomes the qubit's phase.
// Pairs of qubits whose altitudes are close (geometry) and whose phases
// converge (timing) are flagged as candidate close approaches.
use kq_core::correlation::CorrelationState;
use kq_core::ParametricCircuit;

let sats = load_tle(&["iridium_next", "starlink"])?;       // 336 LEO objects
let nq   = sats.len() as u32;
let mut state   = CorrelationState::new(nq);
let mut circuit = ParametricCircuit::new(nq);

// Encode: orbital mean anomaly → qubit phase (one object, one qubit)
for (i, sat) in sats.iter().enumerate() {
    circuit.rz(sat.mean_anomaly, i as u32);
}
state.execute_circuit(&circuit)?;

// Score all C(N,2) pairs by altitude proximity + phase correlation
let alerts = scan_conjunctions(&sats, &state);
println!("{} objects → {} qubits · {} pairs scored",
    sats.len(), nq, nq*(nq-1)/2);
// → 336 objects → 336 qubits · 56,280 pairs scored · 2.48 s (this box)
//
// The qubit count tracks the object count directly — 1,000+ objects fits.
// Full implementation: `cargo run --release -p kq-examples --example
// satellite_conjunction`. This is fast SCREENING, not operational SGP4
// collision prediction with km-precise miss distances.

06 AI Agentic Integration

The engine isn't just a tool you use — it's a platform AI agents are built to operate. Each agent is defined as a portable .md file plus skills — load it into Claude Code, Hermes, Pi, OpenAI Codex, or any system that reads markdown and follows instructions. From autonomous problem-solving loops to reinforcement learning that discovers quantum algorithms, the engine is designed for a future where AI doesn't just assist quantum computing — AI drives it.

Autonomous Agent Loop — "Work Until Solved"

A single .md file defines the entire autonomous workflow — problem statement, success criteria, irreducible truths, and iteration log. Any AI system (Claude Code, Hermes, Pi, OpenAI) can load this state file plus the kq-engine skill and begin working. The agent reads the problem, runs experiments against the engine, measures results, records learnings, and decides the next experiment — unsupervised, on a schedule or on demand. Define the problem. The agent works until it's solved.

AUTONOMOUS-LOOP.md — state file the agent reads each run
# The agent reads this file on every run, works, and updates it.

Problem: Discover quantum error-correcting codes without human design
Success: Circuit with logical error rate below physical error rate
Dead end: 200 generations without fitness improvement
Run interval: every 5m
Skills: kq-engine, omega-prime

# Irreducible truths — the seed the agent reasons from:
1. A noise channel is the only oracle — no textbook knowledge given
2. Fitness = fidelity of encoded state after noise + decode
3. Selection pressure alone must surface the code structure

# Iteration log — the agent appends after each run:
| # | Time  | Action                         | Result              | Next               |
|---|-------|--------------------------------|---------------------|--------------------|
| 0 | 14:00 | Initialize 100 random circuits  | Best fitness: 0.51  | Run generation 1   |
| 1 | 14:05 | Generation 50 — drift emerges   | Best fitness: 0.67  | Tighten noise      |
| 2 | 14:10 | Gen 120 — symmetric structure   | Best fitness: 0.81  | Compare to known   |
| 3 | 14:15 | Gen 180 — plateau               | Best fitness: 0.83  | Raise noise to 2%  |
| 4 | 14:20 | SURPRISE: circuit beats physical  | Fitness: 0.91      | Verify — is this real?|
| 5 | 14:25 | Verify: logical error < physical| CONFIRMED — small code discovered | Document structure |
| 6 | 14:30 | Cross-check: matches 3-qubit    | Rediscovered the repetition code | Publish finding    |
|
# The agent wasn't told what a stabilizer is. It wasn't given a code
# template. It pointed a genetic search at a noise channel and let
# physics do the scoring. The engine was the oracle. The agent was
# the explorer. The code emerged.

The loop is self-correcting: if an approach hits a dead end, the agent pivots. If results surprise it (contradict a high-confidence belief), it flags the insight and re-examines assumptions. The state file is the memory between runs — no context window limits, no session timeout. This is the same loop that autonomously discovered error-correcting codes by pointing a genetic search at a noise channel with no template.

RL Agents — Learning Quantum Strategies

The kq-rl crate trains reinforcement learning agents directly against the engine — not in simulation, but on the real GPU execution path. These agents learn circuit compilation strategies, discover error-correcting codes, optimize factoring pipelines, and navigate elimination trees without being told the physics. Over 50 evolve_rl strategies tested — the agent doesn't need to understand quantum mechanics; it learns what works by interacting with the engine.

rust — RL agent training against the live engine
use kq_rl::{policy::QPolicy, optimizer::Adam,
            solver::RLSolver, objective::MinEnergy};

// QAOA ansatz for a 3-city tour → cost Hamiltonian
let mut policy = QPolicy::from_circuit(ansatz);
let objective = MinEnergy { hamiltonian: cost };
let mut opt = Adam::new(policy.n_params(), 0.10);

// Reinforcement-style training (SPSA gradients)
let solver = RLSolver::new(200);
solver.train_spsa(&mut policy, &objective,
                  &mut opt, 0.20)?;

// Held-Karp (exact)  cost 101.15  0→2→1→0
// QAOA + RL (p=3)    cost 101.15  0→2→1→0  ← optimal tour
// 9 qubits · 162 trainable params · 200 SPSA steps · 205 s

The RL surface covers what matters: RSA factoring (128-bit through 512-bit), Shor's algorithm, Kitaev phase estimation, lattice period finding, torus pipelines, residue hashing, elimination trees, elasticity laws, and nonlocal correlation. One crate, one engine, dozens of strategies — the agent adapts per domain, per circuit shape.

Evolutionary Circuit Discovery

Some circuits aren't hand-written — a genetic search finds them. Point the engine at a noise channel and it rediscovers small error-correcting codes on its own, with no template. Point it at a cost Hamiltonian and it evolves optimization ansätze. The same pattern works for factoring circuits, decoder strategies, and state-preparation sequences. Early, and only for small codes so far, but real: the machine designing for the machine.

rust — genetic search over quantum circuits (evolve_rl)
// The engine pointed at a noise channel — no stabilizer template given.
// The genetic search rediscovers a small error-correcting code.

use kq_rl::evolve::{Population, Fitness};
use kq_engine::noise::DepolarizingChannel;

let noise = DepolarizingChannel::new(0.01);
let mut pop = Population::random(100, n_qubits);

for gen in 0..generations {
    for circuit in pop.individuals_mut() {
        let fidelity = circuit.fidelity_under_noise(&noise);
        circuit.set_fitness(fidelity);
    }
    pop.evolve();  // selection, crossover, mutation
}

// → Small error-correcting code discovered autonomously
// → No textbook knowledge needed — the engine is the physics oracle

Chemistry Discovery Agent

A discovery CLI that autonomously screens molecules from ChEMBL 36 (2,878,135 compounds, 4,005 approved drugs) the way a medicinal chemist would — classical cheminformatics (Lipinski rules, QED scoring) — then hands tractable active spaces to the exact solver. The screening is classical; the ground-state energy is quantum. The agent decides what to screen; the engine computes the physics. Human in the loop for decisions, not for computation.

shell — autonomous chemistry discovery agent
$ chem_agent scan --target inflammation --max-molecules 500

  [1/500] IBUPROFEN · CHEMBL521 · QED 0.82 · drug-like ✓
  [2/500] ASPIRIN   · CHEMBL25  · QED 0.81 · drug-like ✓
  [3/500] INDOMETHACIN · CHEMBL6 · QED 0.78 · drug-like ✓
  ...
  [127]  CELECOXIB  · CHEMBL118 · QED 0.71 · drug-like ✓
         → CAS(6,6) active space ready → solving...

  Ground state: E = -X.XXXXXX Ha (exact FCI, 12 qubits, 924 dets, 0.8 s)
  ✓ 17 candidates solved · 3.2 min total · results → candidates.csv

# The agent screens; the engine solves. Repeat until discovery.

Customized To Our Engine — Portable Across AI Systems

The agents are defined as .md files + skills — load them into Claude Code, Hermes, Pi, OpenAI, or any system that reads markdown and executes tools. Each agent is built against the engine's specific primitives — ITPSolver, CorrelationState, QPipeline, HamiltonianEval — and understands what the engine can and cannot do. The agent knows the VRAM wall is at ~30 qubits for dense circuits. It knows correlation-field execution is sub-millisecond for 1024+ qubits. It knows which representation fits which problem. When the engine gets faster, the agents get faster. When the engine adds a domain, the agents can reason about it. The agent definitions are portable; the engine is the constant. Both evolve together.

01

Portable Agent Definitions

Agents are .md files + skills — portable across Claude Code, Hermes, Pi, OpenAI, or any AI system that reads markdown. No vendor lock-in. Define once, run anywhere.

02

RL-Native Engine

The kq-rl crate exposes the engine as a training target. QPolicy, Adam, SPSA, RLSolver — 50+ strategies trained across factoring, decoding, and optimization domains.

03

Evolve & Discover

Genetic search over quantum circuits finds solutions human engineers didn't design. Error-correcting codes, optimization ansätze, factoring circuits — the engine is the physics oracle.

"The engine isn't just a quantum computer. It's a platform AI agents are designed to operate — and they're already doing it. Autonomous loops, RL training, evolutionary search, chemistry screening. The hardest problems don't get solved in one session. They get solved by an agent that never stops."

— from the agent skill definitions in the kq-engine repository

07 Measured Performance

Read this first — what this is, and what it isn't

This is an early, experimental engine built by one person (me). Qiskit, Cirq, PennyLane, Google qsim, NVIDIA cuQuantum and the Intel Quantum SDK are mature projects with years of work and large teams behind them — I have enormous respect for them, and the numbers below are not a contest with them. They each optimise for goals I'm not chasing yet: generality, real-hardware backends, broad gate sets, production stability.

What the table shows is simply how a few engines run the same circuits on the same box. My engine takes a different approach — GPU state vectors plus structure-aware execution — which trades generality for speed on certain circuit shapes. On others it is slower, or simply not as complete. I report both. Treat these as honest measurements from an alpha research project, not benchmarks of a finished product.

Every number in this section was measured on one machine — ours — on 22 May 2026. Same box, same week, every engine: this one, Qiskit, PennyLane, Cirq, Google qsim, NVIDIA cuQuantum, and Intel's simulator. No estimates, no projections. Where a number is not ours, we say so.

The Test Bench — one workstation, every number
CPUAMD Ryzen Threadripper 3970X — 32 cores / 64 threads, up to 4.8 GHz, AVX2 + FMA (Zen 2, no AVX-512)
RAM256 GB DDR4 (252 GiB usable)
GPUNVIDIA GeForce RTX 3090 — 24 GB GDDR6X, ~936 GB/s, driver 580, Vulkan 1.4
StackLinux · Rust release builds · Python 3.10 · CUDA 11.5

A single consumer/workstation box — not a data center. Every CPU-only simulator (Qiskit-CPU, Cirq, and Intel's IQS) ran on the AMD CPU above; every GPU result ran on the one RTX 3090. No A100, no H100, no Intel Xeon.

Gate-Model Circuit Execution — Seven Engines, One Machine

Identical gate-for-gate circuits in every engine. Warm median of 20 runs; each run times circuit construction + execution + readout. Heavy backends (Aer, lightning, qsim, IQS) are built once, as in real use — this engine builds its context per call, which does not favour it. Times in microseconds (µs). No engine is "better" here — they target different things; this is just the same work on the same box. Harness: benchmarks/bench_frameworks.py + bench_gates.rs.

Framework Backend Bell (2q) QFT-8 QFT-12 GHZ-20 Measured
kq-engine Rust · Vulkan GPU + auto-strategy 1.6 85 246 73 ✓ ours
Google qsim C++ Schrödinger (qsimcirq) 213 1,596 3,096 20,770 ✓ ours
Qiskit Aer CPU statevector 756 3,394 7,515 9,104 ✓ ours
Qiskit Aer CUDA statevector (RTX 3090) 1,166 3,957 7,276 10,901 ✓ ours
PennyLane lightning.qubit (C++) 1,018 3,376 6,652 87,598 ✓ ours
Cirq pure-Python simulator 667 4,337 8,455 71,383 ✓ ours
NVIDIA cuQuantum cuStateVec (CUDA, RTX 3090) 114 1,487 3,238 319 ✓ ours
Intel Quantum SDK IQS full-state (CPU, MKL) 6 62 497 192,651 ✓ ours

What these numbers mean — every engine runs the same circuit, but they are built for different things:
Bell (2q) is overhead, not compute. A 2-qubit circuit finishes before a Python interpreter clears its throat. A compiled engine just carries less call overhead — a latency detail, not a compute result.
QFT-12 is the closest to apples-to-apples — it is non-Clifford, so every engine does the same dense state-vector work. They land within an order of magnitude: Intel IQS 497 µs, this engine 247 µs, Google qsim 3,096 µs, cuQuantum 3,238 µs. Intel's CPU simulator is genuinely quick here.
GHZ-20 is structured (Clifford). This engine adapts to that structure and avoids building all 2²⁰ amplitudes; the full-state simulators carry the whole vector by design. A different strategy, not a better team.
NVIDIA cuQuantum (cuStateVec, same GPU) issues one CUDA kernel launch per gate through its low-level API; this engine fuses gates, which is most of the small-circuit difference. (Its apply_matrix wants index lists, not raw device pointers — a sharp edge worth knowing.)
Intel IQS is fast on small and mid-size circuits. Where the picture changes is at higher qubit counts — see the scaling note just below.
Reproduce: python3 benchmarks/bench_frameworks.py + cargo run --release -p kq-examples --example bench_gates

Where It Actually Matters — Scaling Up

The single-circuit numbers above are close. The real difference shows up as you add qubits. A full-state simulator on a CPU holds the entire 2ᴺ amplitude array and sweeps all of it on every gate, so its wall-clock roughly quadruples per qubit added. Same QFT, same box, each circuit isolated:

QFT sizeIntel IQS (CPU full-state)this engine (GPU)How far apart
12 qubits0.50 ms0.25 ms~2×
15 qubits4.3 ms0.45 ms~10×
20 qubits262 ms1.0 ms~260×
22 qubits1.7 s1.3 ms~1,300×
24 qubits7.4 s1.7 ms~4,300×

At 24 qubits Intel's CPU simulator needs ~7 seconds; by ~28 it would be minutes, and the climb only steepens. The GPU keeps the same circuit in low milliseconds because memory bandwidth, not core count, is the bottleneck — and that is the regime this engine is built for. This is not a flaw in IQS: it is the physics of dense state vectors on a CPU, and IQS is doing exactly what a full-state simulator should. The honest limit on the other side: a GPU state vector still grows as 2ᴺ and hits the 24 GB VRAM wall around 30 qubits (a CPU with 256 GB can actually hold a larger dense state — just far too slowly to be useful). Past that wall, the only way forward for either is to stop storing all 2ᴺ amplitudes — which is what the structure-aware path does, but only for circuits that have structure to exploit. Note: this table is the engine measured on its own; the same circuits run through the Intel SDK custom backend (gate-by-gate across the FFI boundary) are benchmarked separately in the interop section below, and are slower per gate.

Chemistry Head-to-Head — H₂ Ground State, Three Solvers, Same Molecule

H₂, STO-3G, 0.735 Å — the textbook benchmark. We ran all three on this box. The exact FCI answer is −1.137306 Ha. All three reach it; the interesting part is how.

Solver Energy (Ha) Error vs exact FCI Work to converge Method
kq-engine −1.137306 0.0000 mHa 345 ITP steps Deterministic eigensolver — no ansatz, no optimizer
PennyLane VQE −1.137306 6.2 × 10⁻⁶ mHa 19 iterations · 2.3 s Variational — UCCSD ansatz + gradient descent
Qiskit-Nature VQE −1.137306 1.9 × 10⁻⁸ mHa 97 evaluations · 0.67 s Variational — UCCSD ansatz + COBYLA

On a 4-qubit molecule everyone is correct — that is the point. The deterministic-vs-variational gap (no ansatz to design, no optimizer to babysit, same answer every run) is the differentiator, and it widens with system size. Reproduce: cargo run --release -p kq-examples --example bench_chemistry + python3 benchmarks/bench_chemistry_vqe.py.

Domain Results — Verified On This Box, 22 May 2026

Benchmark kq-engine result Ground-truth check Honest note
H₂O ground state (14 qubits) −75.012647 Ha
1001 dets · 2.0 s
0.0000 mHa vs PySCF FCI Exact diagonalization on the engine. The previous figure on this page was wrong; this one is measured.
Drug molecule — dexamfetamine (CAS 51-64-9) E_corr −61.4 mHa
12 q · 924 dets · exact FCI
Lanczos = exact for this active space Electronic structure of a real approved drug's CAS(6,6) active space. The energy is an input to discovery (a property a screening model consumes), not a clinical claim. The engine does not design molecules.
Fe₂S₂ [2Fe–2S] cluster — real ab-initio (CAS(6,6), 12 q) −3286.008 Ha
924 dets · exact diagonalization
Lanczos = exact for this active space Real PySCF integrals at crystallographic Fe–S geometry — not a toy model. A hard multireference transition-metal cluster (ferredoxin active site). The CASSCF reference is not exact FCI, so we quote no accuracy delta against it.
¹⁸O nuclear ground state (sd-shell) −9.468 MeV (rel. ¹⁶O core) 0.095 keV vs exact Lanczos Unique. No mainstream quantum framework ships a nuclear shell model. Energy is in the USDB model space.
²⁰Ne nuclear ground state (sd-shell) −19.592 MeV (rel. ¹⁶O core) 0.039 keV vs exact Lanczos Unique. Same solver as the chemistry above — different physics, no code change.
¹⁰²Sn — 64-qubit nuclear register (gds-shell) −0.747 MeV
64 q · 496 dets · 3.4 s
M-restricted exact solve The register is 64 qubits; the 2-valence-neutron physics restricts the active space to 496 determinants. Structure, not raw qubit count, sets the cost — the engine's whole thesis, in nuclear form.
Semiprime factoring (8 → 255 bit, smooth-form) 24 / 24 factored
179 s total · 255-bit in 0.44 s
gcd-verified (p·q = N) Hybrid pipeline. These semiprimes are constructed so p−1 is smooth — Pollard p−1's ideal case, which is why a 255-bit one falls in 0.44 s. Cryptographic RSA (chosen to resist p−1) is out of scope. The classical channel does the work — not gate-model Shor, not quantum advantage. (See §09.)

Beyond single nuclei: the same solver swept 14 sd-shell nuclei (¹⁷O through ²²Na) in one run — ground-state energy, total angular momentum ⟨J²⟩, and orbital occupation each — in 27 ms to 27 s apiece as the valence space grows (a measured cost curve, not a claim). And the descriptor exporter writes molecules and nuclei into one CSV schema with a domain column: the same observable machinery on both, the "one solver, many sciences" idea reduced to a feature table an ML pipeline can read. Reproduce: cargo run --release -p kq-examples --example nuclear_experiments.

Interoperating With the Intel Quantum SDK

The Intel Quantum SDK ships as a Docker toolchain with a CPU full-state simulator (IQS) — it's already a row in the table above, and it's quick. The more interesting part isn't a race: this engine also plugs into the Intel SDK as a custom backend. You write an ordinary Intel quantum program, compile it with Intel's own compiler, and its gates can run on the GPU here instead of on the CPU simulator — same source, different silicon underneath, no rewrite. That's interoperability, not competition.

This engine implements the Intel Quantum SDK's exact custom-backend gate interface — the six primitives PrepZ, RXY, RZ, CPhase, SwapA, MeasZ that Intel's iqsdk::CustomInterface abstract class declares. Intel's compiler lowers any quantum program down to those primitives; the engine provides them and runs them on the GPU. It is the same derived-class pattern as the SDK's own custom_backend.cpp example — except that example backs the interface with Intel's CPU simulator, and this one backs it with a GPU. To our knowledge, that makes it the first GPU implementation of the interface.

Mechanically, the SDK drives the backend one gate at a time. Each gate call crosses a thin C FFI boundary into the Vulkan engine, where the quantum state lives on the GPU and stays there between gates — the host only reads it back at measurement. The one design choice that makes this competitive: rather than synchronizing the GPU after every gate (one host↔device round trip per gate, which dominates the wall-clock), the engine records every gate dispatch and replays the whole sequence in a single command buffer, lazily, at the next readout. That change alone is an 11–38× speedup, and it is what lets the GPU overtake a CPU full-state simulator from about 16 qubits up.

None of it is NVIDIA-specific: the backend is pure Vulkan compute with no vendor extensions, and its one matrix-acceleration path uses the cross-vendor VK_KHR_cooperative_matrix. It was validated on an RTX 3090 — the only card on hand — but by construction it should run on any modern Vulkan GPU, Intel Arc and the Data Center Flex/Max parts included. That portability is the part a CUDA-locked accelerator can't offer.

Below: a real Intel SDK program on the left, and the same program's result through the bridge — cross-checked against Intel's own CPU simulator — on the right.

Intel Quantum SDK · C++ · bench_iqs.cpp
#include <clang/Quantum/quintrinsics.h>
qbit q[12];

quantum_kernel void qft_12() {
    for (int i=0; i<12; i++) PrepZ(q[i]);
    for (int i=0; i<12; i++) {
        H(q[i]);
        for (int j=i+1; j<12; j++)
            CPhase(q[i], q[j], PI/(1<<(j-i)));
    }
}
// Intel's compiler lowers H/CPhase to its
// PrepZ/RXY/RZ/CPhase/MeasZ primitives — which
// this engine implements and runs on the GPU.
same program, through the bridge (RTX 3090)
Backend: kq-engine StateVector GPU (Vulkan)

qft_12  →  uniform superposition, 4096 states
  max P, GPU bridge = 0.000244351
  max P, native IQS = 0.000244281
  ideal  1/2^12     = 0.000244141

same state, different silicon.   PASS
GHZ peaks match native IQS to 12 decimals.

// Intel program → our bridge → Vulkan GPU
// → the state Intel's own CPU simulator computes.

Measured through the bridge — the same Intel program, compiled with intel-quantum-compiler, its gates executed on the GPU instead of IQS. Best-of-3 over the gate sequence, inside Intel's stock Docker image, host RTX 3090 vs single-node IQS on the same box:

Circuit (via Intel SDK custom backend)Intel IQS (CPU)GPU through the bridgeHow far apart
GHZ-167.0 ms6.9 mseven — crossover
GHZ-244,008 ms133 ms~30×
GHZ-2617,356 ms496 ms~35×
QFT-20256 ms20 ms~13×

Why these differ from the native scaling table above: there, the engine runs the whole circuit in one pass on its own; here, every gate crosses the Intel-SDK → FFI boundary one at a time, so the bridge path is slower than the engine's raw ceiling. These are the honest "same Intel program, different silicon" figures: native IQS wins below ~16 qubits, the two draw even at 16, and the GPU pulls ahead to 30–35× by 24–26 qubits. Correctness is exact — GHZ and QFT states match native IQS to 12 decimal places. Reproduce inside the SDK's Docker image: ./run_bench.sh.

Same circuit, swap the silicon

Two Intel SDK programs from the reference repo (excerpted). The ghz_5q kernel is identical in both; the only change is which backend you register with the SDK — Intel's CPU FullStateSimulator, or this engine's GPU CustomSimulator.

native IQS · CPU · ghz_demo_iqs.cpp
#include <quantum_full_state_simulator_backend.h>

quantum_kernel void ghz_5q() {
    for (int i=0;i<5;i++) PrepZ(q[i]);
    H(q[0]);
    CNOT(q[0],q[1]); CNOT(q[1],q[2]);
    CNOT(q[2],q[3]); CNOT(q[3],q[4]);
}

int main() {
    iqsdk::IqsConfig cfg;
    iqsdk::FullStateSimulator sim(cfg);  // CPU
    ghz_5q();
    sim.getProbabilities(qids);
}
kq-engine · GPU (Vulkan) · ghz_demo.cpp
#include <quantum_custom_backend.h>

quantum_kernel void ghz_5q() {    // identical
    for (int i=0;i<5;i++) PrepZ(q[i]);
    H(q[0]);
    CNOT(q[0],q[1]); CNOT(q[1],q[2]);
    CNOT(q[2],q[3]); CNOT(q[3],q[4]);
}

int main() {
    auto* sim = iqsdk::CustomSimulator::
      createSimulator<KqBackend>("kq-engine-gpu",N); // GPU
    ghz_5q();
    kq->print_probabilities();
}

And the backend itself — a thin class deriving Intel's iqsdk::CustomInterface that forwards each of the six primitives across a C FFI boundary to the GPU engine. The engine lives entirely behind that boundary (libkq_intel_ffi.so); swap it for an FPGA or another vendor's silicon and the Intel-facing side never changes.

the custom backend · KqBackend
class KqBackend : public iqsdk::CustomInterface {
  void RXY(qbit q,double t,double p) override
                       { ffi.rxy(h,q,t,p); }
  void RZ(qbit q,double a) override
                       { ffi.rz(h,q,a); }
  void CPhase(qbit c,qbit t,double a) override
                       { ffi.cphase(h,c,t,a); }
  void SwapA(qbit a,qbit b,double x) override
                       { ffi.swap_a(h,a,b,x); }
  void PrepZ(qbit q) override { ffi.prep_z(h,q); }
  cbit MeasZ(qbit q) override{ return ffi.meas_z(h,q); }
};
the C FFI seam · kq_bridge.h
// implemented by libkq_intel_ffi.so —
// the GPU engine, behind a C boundary.
void     kq_bridge_rxy   (h,qubit,theta,phi);
void     kq_bridge_rz    (h,qubit,angle);
void     kq_bridge_cphase(h,ctrl,target,angle);
void     kq_bridge_swap_a(h,q1,q2,angle);
void     kq_bridge_prep_z(h,qubit);
unsigned kq_bridge_meas_z(h,qubit);
unsigned kq_bridge_probabilities(h,out,max);

Reproduce — the repo builds the FFI library on the host, compiles each demo with intel-quantum-compiler inside Intel's stock Docker image, and runs it on the GPU: ./run.sh (GPU GHZ demo) · ./run_iqs.sh (native IQS) · ./run_bench.sh (the GHZ/QFT sweep above). Files: ghz_demo.cpp, ghz_demo_iqs.cpp, kq_bridge.h, bench_kq.cpp, bench_iqs.cpp.

This is not a reimplementation of Intel's tools — it is Intel's SDK calling this engine. The point is interoperability: a team can keep its Intel toolchain and, for the larger gate-dense circuits where a CPU full-state simulator slows down (the bridge benchmarks just above), offload execution to a GPU without changing their program. The bridge is pure Vulkan compute with no vendor-specific extensions — validated on an NVIDIA RTX 3090, and portable by design to other Vulkan GPUs (Intel Arc, Data Center Flex/Max) though not yet measured on them. Source: crates/kq-intel-ffi + intel-sdk/.

From Simulation to Real Quantum Hardware

This is a GPU simulator — but a circuit written here doesn't have to stay here. It exports to OpenQASM (the common input language of real quantum computers) and can be sent to an actual QPU through a built-in Quantum Inspire client. The GPU is where you develop and debug fast; real hardware is one export away.

1 · OpenQASM 2/3 export — round-tripped through Qiskit

Any circuit emits OpenQASM 2.0 or 3.0. We verified the round trip: export from here → load into Qiskit (IBM's SDK, the path to IBM Quantum hardware) → run. Results match.

export here
$ kq qrun bell --emit qasm2

OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
h q[0];
cx q[0],q[1];
load + run in Qiskit (verified)
from qiskit import QuantumCircuit
qc = QuantumCircuit.from_qasm_str(qasm)
# runs unchanged on Aer / IBM Quantum

# Bell  → {'00', '11'}      ✓
# GHZ-3 → {'000', '111'}    ✓
# QFT-4 → uniform 16 states ✓
# (exported here, executed in Qiskit)

2 · Quantum Inspire — submit to a real QPU

A dedicated REST client transpiles circuits to cQASM v3 and submits them to Quantum Inspire backends — their emulator and real quantum processors. One call runs the whole pipeline: transpile → upload → compile for the target backend → execute → fetch results.

submit (Rust · kq-qi)
let client = QiClient::from_config()?;

// transpile → submit → run → results
let r = client.execute_kql(
    "h 0; cx 0 1",  // circuit
    backend_id,         // QPU or emulator
    1024,               // shots
).await?;

if let Some(res) = r.result.results {
    for (state, count) in res {
        println!("|{}⟩: {}", state, count);
    }
}
what gets sent — cQASM v3
version 3.0

qubit[2] q
bit[2] c

H q[0]
CNOT q[0], q[1]
b = measure q

// generated by the cQASM transpiler
// (14 unit tests, incl. this Bell case)

Honest status: the OpenQASM round-trip is verified end-to-end on this box. The Quantum Inspire client is built and unit-tested (transpiler, auth, backend topology — 14 tests pass) with credentials configured; a live submission needs an active Quantum Inspire account token. We don't claim "we run on a QPU" — we claim the circuits are portable to one, and the bridge is built. Source: crates/kq-qi (REST client + cQASM transpiler), crates/kq-core/src/qasm.rs (OpenQASM).

Scale by Domain — What Those Qubit Counts Are For

The headline "1000+ qubits" is a property of the representation, not of every workload. A solver that needs full state-vector amplitudes is bounded by 2N memory; the structured representations introduced in §07 — one qubit per correlated entity, pairwise relationships stored as a tensor — are not. So the honest answer to "what runs at large qubit counts" depends on the circuit's structure. The clearest case is a problem where every object literally is a qubit.

Flagship — Satellite Conjunction Screening (336 objects → 336 qubits)

Each satellite is encoded as one qubit; its orbital phase becomes the qubit's phase; pairs whose altitudes are close and whose phases converge are flagged as candidate close approaches. Verified end-to-end on this box (Iridium NEXT + Starlink LEO catalogues):

shell — cargo run --release -p kq-examples --example satellite_conjunction
Loading TLE Data
  Iridium NEXT:  80 satellites (LEO, ~780km, 86° incl)
  Starlink:     256 satellites (LEO, ~550km, 53° incl)
  Total:        336 LEO objects

Conjunction Scan: Iridium × Starlink
  Encoding 336 satellites → 336 qubits
  Pairwise correlations tracked: 56,280   (= C(336,2))
  Scan complete: 2.48 s

One object, one qubit. 336 today; the structured-circuit representation runs 1024 qubits in ~4 ms (verified separately), so monitoring 1,000+ objects fits the substrate naturally — the cost then moves from "what qubit count" to "how many pairs you choose to score" (which grows as C(N,2)). Honest scope: this is a fast screening pass (altitude proximity + orbital-phase correlation), not an operational SGP4 collision predictor with km-precise miss distances and covariances. The same shape — N correlated entities, pairwise relationships matter — fits large-portfolio correlation analysis conceptually; that scaling work is open.

Other Domains — Where Each Solve Actually Runs

The other domains aren't at 1,000 qubits and shouldn't claim to be. Each solve runs at the scale the physics honestly asks for:

DomainLargest verified solveWhat it computesHonest scaling note
Satellite conjunction336 objects → 336 q · 2.48 sPairwise close-approach screening (alt + phase)1 object = 1 qubit; structured B=0; pairs grow O(N²)
Quantum error correctionSurface d=5 (49 q); rep d=7 (13 q)Syndrome extraction + Union-Find decoder; threshold confirmedClifford-only → the Clifford-tableau path scales to 1000+ q in principle; larger distances untested
Optimization (TSP)N=3 cities → 9 q (Held–Karp optimal)QAOA + RL-trained parameters (kq-rl)Larger-N (up to 110 q for N=22) scaffolded in the repo; not retested this session
Nuclear shell model¹⁰²Sn — 64-q register · 496 dets · 3.4 sGround-state energy in the gds-shell (table above)Structure (2 valence neutrons) shrinks the active space
Factoring255-bit semiprime · 0.44 sHybrid classical + quantum-assisted period findingSemiprimes are smooth-by-construction (§09); not hard RSA
Quantum chemistryH₂O (14 q); Fe₂S₂ CAS(6,6) (12 q); dexamfetamine (12 q)Exact FCI of a real ab-initio active spaceActive spaces beyond ≈ 20 q have no exact reference (§09)
Correlation / portfolioIsing-style ZZ model — small N todayDiversification penalty as a quantum optimizationSame pairwise-correlation pattern as the flagship; scaling work open

The qubit number is the solver register for that workload, not a marketing peak. The "1000+ qubits" headline is honest for the satellite-style structured/correlation regime; the chemistry/nuclear/factoring numbers honestly say where today's exact solves end. We will not pretend a 1024-qubit chemistry run exists.

08 Sovereignty & Flexibility

Two properties that aren't about speed. They're about what the engine is — where your data lives, and how far one interface bends to a new problem. Both are claims about this system alone, checkable in the source. No comparison required.

Sovereignty — Your Data Never Leaves the Machine

The compute path is local by construction. A proprietary drug candidate, a sensitive nuclear interaction, a private key — the engine reads it from a file on your disk, works on it in memory, and writes the answer back. There is no cloud account to create, no API key to issue, no per-shot bill to pay. For the domains where it matters most, the data that matters most never has to move.

01

No Cloud, No Account

A single self-contained binary. No cloud SDK is compiled in — none for AWS, Azure, or Google. No login, no API key, no metered per-shot billing. You run it on hardware you control, and the results stay with you.

02

The Compute Path Stays Local

Running a circuit and solving for a ground state are pure local computation — no network call on that path. The only networking anywhere in the project is opt-in and separate: a bridge that sends a circuit to a remote QPU if you ask it to. Off by default, the engine is air-gappable.

03

Not Locked to One Vendor

The GPU layer is Vulkan compute compiled to SPIR-V — an open, vendor-neutral standard, not one company's proprietary toolkit. Portable to any Vulkan GPU by design. Validated so far on NVIDIA silicon — a desktop RTX 3090 and an NVIDIA Jetson Orin (ARM, 64 GB) — with an automatic CPU fallback for machines without a GPU; AMD and Intel GPU validation is future work. The benchmark numbers in Section 06 were all measured on the RTX 3090 workstation.

04

Runs Without a GPU At All

No accelerator on the box? The engine falls back to a CPU path automatically — a circuit still runs, slower but real. Nothing about deployment forces a specific chip, a specific cloud, or a specific country's silicon.

Flexibility — One Interface, Many Sciences

The engine has a single seam for "what physics am I solving?" — one Rust trait that says how to evaluate a Hamiltonian. Implement it for your operator and the rest of the stack comes for free: the ground-state solver, exact diagonalization, the observables, the descriptor export — all unchanged. The solver code is literally invariant. The only thing that changes between a molecule, an atomic nucleus, and a cryptographic energy landscape is the Hamiltonian.

rust — the same solver call, three different sciences (only the Hamiltonian changes)
// One trait — HamiltonianEval — is the only thing each domain implements.
// The solver, the diagonalizer, and the observables never change.

// 1) Molecular chemistry — second-quantized Hamiltonian from a FCIDUMP file
let ham = SQHamiltonian::from_fcidump(&fcidump);
let e   = ITPSolver::new(ham).run().energy;

// 2) Nuclear shell model — a different Hamiltonian, the SAME solver
let ham = ShellModelHamiltonian::build(&usdb, nucleus)?;
let e   = ITPSolver::new(ham).run().energy;

// 3) An optimization / cryptographic energy landscape — same solver again
let ham = ConstraintHamiltonian::new(constraints, n_bits, coupling);
let e   = ITPSolver::new(ham).run().energy;

// Implement one trait and you also get exact (Lanczos) diagonalization,
// the observables, and CSV descriptor export — with no change to the engine.

"Serves both molecular chemistry and nuclear shell-model workloads — the expectation-value machinery is universal; only the matrix elements of the operator differ."

— from the observables module's own documentation

That isn't a slogan added afterward — it's the engine's own internal note on how the observables work. The same ⟨J²⟩, particle-number, and orbital-occupation code that measures a molecule also measures a nucleus; the descriptor exporter writes both into one table with a domain column (Section 06). The pattern repeats one level up: the dozen pathfinding strategies in Section 03 sit behind a single find_path() call, and a circuit you write is run by a representation the engine selects for you. You describe the problem; the engine decides how to execute it.

Flexibility, Stress-Tested — Beyond Quantum Circuits

If the substrate is really general, it should handle physics that isn't quantum at all. It does. The same project ships worked simulations of classical fields and particles, each checked against the textbook answer:

One honest caveat on "flexibility": it means a clean interface and a solver that genuinely doesn't care which science it's in — shown here across chemistry, nuclear physics, optimization, and classical field simulation. It does not mean every conceivable operator is fast or fits in memory; the VRAM limits in Section 09 still apply.

09 Code Comparison — Same Problem, Different Frameworks

The exact code behind the numbers above. Copy-paste runnable. Two examples: a textbook Bell state (basic), and a molecular ground state for drug-discovery-grade chemistry (advanced). Our side is Rust; theirs is Python — their native language.

Basic — A Bell State, Four Ways

kq-engine · Rust · 1.6 µs
use kq_core::circuit::ParametricCircuit;
use kq_engine::qpipeline::qrun;

fn main() {
    let mut bell = ParametricCircuit::new(2);
    bell.h(0);
    bell.cx(0, 1);
    let r = qrun(&bell);   // engine picks the strategy
    println!("⟨Z⟩ = {:?}", r.z);
}
// ⟨Z⟩ = [0.0, 0.0]   (Bell ⇒ each qubit unbiased)
// 1.6 µs — warm median of 20 runs
PennyLane · Python · 1,018 µs
import pennylane as qml

dev = qml.device("lightning.qubit", wires=2)

@qml.qnode(dev)
def bell():
    qml.Hadamard(0)
    qml.CNOT([0, 1])
    return qml.probs(wires=[0, 1])

probs = bell()
print(probs)
# [0.5, 0.0, 0.0, 0.5]
# 1,018 µs — warm median of 20 runs
Qiskit Aer · Python · 756 µs (CPU)
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

qc = QuantumCircuit(2)
qc.h(0); qc.cx(0, 1)
qc.save_statevector()

sim = AerSimulator(method="statevector")
sv = sim.run(qc).result().get_statevector()
# |00⟩,|11⟩ each 0.5 — 756 µs (CPU) / 1,166 µs (GPU)
Cirq · Python · 667 µs
import cirq

q = cirq.LineQubit.range(2)
c = cirq.Circuit(
    cirq.H(q[0]),
    cirq.CNOT(q[0], q[1]),
)
sv = cirq.Simulator().simulate(c).final_state_vector
# |00⟩,|11⟩ each 0.5 — 667 µs (pure Python)

Advanced — Molecular Ground State (H₂, Drug-Discovery Chemistry)

The same physical problem — find the lowest-energy state of a molecule — solved two ways. We use imaginary-time propagation (a deterministic eigensolver). The market standard is VQE (a variational loop). Both reach the exact answer for H₂; the difference is how.

kq-engine · Rust · deterministic
use kq_core::molecules;
use kq_engine::itp::ITPSolver;

fn main() {
    let ham = molecules::h2();        // H₂, STO-3G
    let mut s = ITPSolver::new(ham);
    let r = s.run();               // no ansatz, no optimizer
    println!("E = {:.6} Ha", r.energy);
}
// E = -1.137306 Ha
// = exact FCI to 0.0000 mHa, same answer every run
PennyLane VQE · Python · variational
import pennylane as qml
from pennylane import numpy as np

coords = np.array([[0,0,0], [0,0,1.389]])  # 0.735 Å, in bohr
H, n = qml.qchem.molecular_hamiltonian(
    ["H", "H"], coords, basis="sto-3g")
hf = qml.qchem.hf_state(2, n)
s, d = qml.qchem.excitations(2, n)
dev = qml.device("lightning.qubit", wires=n)

@qml.qnode(dev)
def cost(p):
    qml.AllSinglesDoubles(p, range(n), hf, s, d)
    return qml.expval(H)

p = np.zeros(len(s) + len(d))
opt = qml.GradientDescentOptimizer(0.4)
for _ in range(200):     # iterate to converge
    p = opt.step(cost, p)
// E = -1.137306 Ha — 19 iterations, 2.3 s

What the chemistry example actually shows:
• Both land on the exact FCI energy, −1.137306 Ha. On a 4-qubit molecule, correctness is table stakes — everyone gets it right.
• The difference is method. Ours is a deterministic eigensolver: no ansatz to design, no classical optimizer, identical answer every run. VQE is a variational loop — pick an ansatz, run a classical optimizer over many circuit evaluations, hope it converges. That gap widens with molecule size, where ansatz choice and optimizer behaviour start to dominate the result. Our 14-qubit H₂O number (Section 06) is where this matters.
• We measured Qiskit-Nature VQE on the same molecule too: −1.137306 Ha in 97 evaluations, 0.67 s. Also correct. Same story.
Reproduce: cargo run --release -p kq-examples --example bench_chemistry + python3 benchmarks/bench_chemistry_vqe.py

Advanced — Optimization by Training a Quantum Circuit (QAOA + RL)

A different style of problem: instead of running a fixed circuit, you train one. This builds a QAOA circuit for a travelling-salesman tour and lets a reinforcement-learning optimizer (SPSA + Adam) tune its parameters against the route's cost Hamiltonian — quantum optimization with a machine-learning training loop (the kq-rl crate).

kq-rl · Rust · travel_routing_qaoa.rs
use kq_rl::{policy::QPolicy, optimizer::Adam,
            solver::RLSolver, objective::MinEnergy};

// QAOA ansatz for a 3-city tour → cost Hamiltonian
let mut policy = QPolicy::from_circuit(ansatz);
let objective = MinEnergy { hamiltonian: cost };
let mut opt = Adam::new(policy.n_params(), 0.10);

// reinforcement-style training (SPSA gradients)
let solver = RLSolver::new(200);
solver.train_spsa(&mut policy, &objective,
                  &mut opt, 0.20)?;
result — vs exact Held-Karp
Held-Karp (exact)  cost 101.15  0→2→1→0
QAOA + RL (p=3)    cost 101.15  0→2→1→0

  gap vs exact = +0.00%   ← optimal tour
  9 qubits · 162 trainable params
  200 SPSA steps · trained in 205 s

// valid tours: 6 / 512 (~1.7% mass).
// low-depth QAOA puts most weight on
// penalty-pushed invalid states; the
// optimum is read from the best valid
// sample, not the single top bitstring.

An honest read: at depth p=3 the QAOA distribution only places ~1.7% of its mass on valid tours, but the optimal tour is in that set and the decoder finds it — a +0.00% gap to the exact answer. This is the engine used as an ML training target: kq-rl provides QPolicy, Adam, SPSA and an RLSolver; the quantum circuit is the model. Source: crates/kq-rl + examples/travel_routing_qaoa.rs (also rl_maxcut.rs).

10 Current Limitations

SpaceX shows crash footage. We show our walls. Every limitation below is a physics or engineering constraint we're working to overcome — not a permanent ceiling.

VRAM Wall

Dense circuits with deep branching have a hard ceiling at 24 GB VRAM (consumer RTX 3090) — billions of computational paths is the physical limit. Phase-only and structured circuits are not affected and scale much further. We are actively researching memory-efficient representations.

Not All Circuits Fit On Consumer Hardware

Some quantum algorithms produce exponentially many paths. For those circuits, consumer GPUs hit the VRAM wall before reaching practical qubit counts. This is true for ALL gate-model quantum simulators. Our differentiator is how far we push before hitting that wall — and what we can do with phase-only circuits that bypass it entirely.

Alpha Stage

The engine is functional and validated across multiple domains, but it is not yet a polished product. APIs may change. Documentation is sparse. Error messages are engineer-facing. Production readiness requires funding for hardening, documentation, and support infrastructure.

Compute Is GPU, Not a QPU

The actual computation runs on GPUs — not on superconducting qubits, trapped ions, or photonic processors. We do bridge to real hardware: circuits export to OpenQASM (verified to run in Qiskit) and a Quantum Inspire REST client can submit them to real QPUs (see Section 06). But that is portability, not native QPU execution — and a live Quantum Inspire run currently needs an active account token. The engine is a fast classical simulator with a hardware off-ramp, not a quantum computer.

The Distributed Layer Is Early

Both multi-GPU coordination within one machine and cross-node execution exist: a worker exposes a GPU-resident processor over TCP (the fleet_server example), a client drives it with the same API as a local one, and there is a server↔client round-trip test in the suite. What's missing is hardening, not the capability — each server takes one client at a time (no multiplexing), the load-balancing strategies currently fall back to round-robin, amplitudes sent over the wire are √p approximations rather than full complex values, and nodes share no quantum state (classical communication only). It is verified process-to-process; a large multi-machine cluster is untested, not proven.

Benchmarks Are One-Machine

Every comparison number in Section 06 — including Intel — was measured on our single workstation (RTX 3090 + Threadripper). We have not run on an A100/H100, so we make no datacenter-GPU claims. We will not quote a vendor's marketing number as if it were ours: every figure here is something we ran. Independent reproduction on other hardware is welcome and expected — and corrections are too; this is one person's work.

Factoring Is Hybrid — and the Large Semiprimes Are Smooth by Construction

The pipeline combines classical number theory with quantum-assisted period finding. The large semiprimes we report (up to 255-bit) are constructed to be smooth — each prime factor p is chosen so p−1 is built from only small primes — which is exactly the case Pollard's p−1 method cracks in well under a second (that's why a 255-bit one falls so fast). Cryptographic RSA moduli are deliberately chosen to resist p−1, and we do not factor those. So this is a multi-method cryptographic-assessment pipeline, not a gate-model Shor speedup and not a claim of quantum advantage over RSA. We say so plainly.

Small Circuits Measure Overhead

On 2–3 qubit circuits, wall-clock is dominated by framework call overhead, not quantum compute. Our microsecond Bell-state numbers reflect a real end-to-end latency advantage (compiled, no interpreter), but they are not a compute-throughput claim. For that, read the QFT-12 column — same work, every framework.

Chemistry Energies Are Active-Space, and CASSCF ≠ FCI

The molecular and cluster results are active-space energies — a drug or an Fe₂S₂ core is reduced to a tractable CAS, not the whole molecule. Within that space the engine's exact diagonalization is the ground truth, and we validate against it (or against PySCF FCI) to sub-milliHartree. We do not validate against a CASSCF energy — a CASSCF number is not exact FCI, and quoting a delta against it would be misleading. Exact diagonalization is feasible to ≈20 qubits; past that, the iterative solver runs but has no exact reference, so we report the energy without an accuracy claim.

For Investors

Investment Thesis

01

GPU Vendor Integration

Validate quantum workloads on your hardware. Joint performance characterization and optimization for your GPU architecture. Vulkan-based — not locked to any vendor.

02

Nuclear Physics

Quantum simulation framework with proven nuclear shell-model accuracy. Defense, energy, and fundamental physics applications. No other quantum platform offers this capability.

03

Research Collaboration

Joint publications, grant applications, and fundamental quantum computing research. EU Horizon Europe and EIC Accelerator eligible. Multi-domain validation track record.

04

Enterprise Licensing

Custom quantum computing engine for your R&D team. Multiple proven domains. On-premise with full data sovereignty. Self-contained deployment — no cloud dependency.

05

Blockchain Integration

On-chain verification of quantum computation results. GPU-accelerated cryptographic operations. Custom subnet integration for decentralized validation.

06

Satellite & Space

GPU-accelerated orbital mechanics and conjunction detection. Fleet tracking for satellite operators. Real-time space weather integration for mission planning.

Hard Problem in Quantum Computing?

We don't do easy. If it's been done before, hire someone cheaper. If no one knows how — let's talk.

Entity
Kreeate Biotech SRL
Location
Italy, EU
Focus
Investors · Funding
Support

Back an independent founder

A one-person company building several deep-tech products — fully self-funded, no outside capital. If you have the means and like backing independent builders, you can help fund the work directly — no account, no forms, just scan and send.

Verus · VRSC VRSC address QR code Verus mainnet
Bitcoin · BTC Bitcoin address QR code Bitcoin network
ETH · USDC · EURC Ethereum address QR code One Ethereum address · ERC-20
Ko-fi Card & PayPal · one-off Back the work Direct to bank · EUR

Voluntary support for independent R&D at Kreeate Biotech SRL. Not an investment — no equity, no return — and not tax-deductible for donors.