QuipNetwork/xquadPublic

A rust implementation of the Quip Network's quantum virtual machine.

AI summary: A hardware-agnostic Rust toolchain for expressing and running quadratic optimization models across quantum and classical solvers.

Stars
5.6K
Forks
18
Watchers
8
Open issues
0
Open PRs
0
Contributors
~4
Commits
460
Branches
9

PythonAGPL-3.0Created Apr 2, 2026Last push 4d ago+-3 this month

Quick answers

What is xquad?
A hardware-agnostic Rust toolchain for expressing and running quadratic optimization models across quantum and classical solvers.
What does xquad do?
XQuad functions as a universal intermediate representation and toolchain for quadratic optimization problems, bridging the gap between quantum annealers and classical solvers. It provides a highly specified virtual machine architecture, akin to LLVM for quadratic models, allowing developers to write an optimization problem once and target any supported backend. The project includes a robust Rust core designed to be embeddable in constrained environments, alongside Python distributions for broader accessibility. By enforcing strict parity between the Rust production VM and the Python reference VM, it ensures absolute reliability across diverse hardware targets.
Who is xquad for?
Quantum computing researchers, data scientists, and systems engineers working on advanced optimization problems across diverse hardware platforms.
How do I get started with xquad?
Review the specification in spec/xqvm/SPEC.md and explore the Rust crates or Python distributions.
How popular is xquad on GitHub?
QuipNetwork/xquad has 5,585 stars and 18 forks on GitHub.
What license does xquad use?
QuipNetwork/xquad is released under the AGPL-3.0 license.

Star history

since Jul 28, 2026
02K4KJul 2026Aug 2026Sep 2026Oct 2026
5.6K stars as of Oct 4, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Update history

1 recorded
  • Oct 4, 2026Previously tracked as QuipNetwork/xq-rs; its 1 daily snapshot and 1 trending appearance were merged into this profile. Stars: 5,596 on 2026-07-28 under the old name, 5,585 on 2026-10-04 (-11).

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 27 commits2026-03-12: 0 commits2026-03-13: 11 commits2026-03-14: 13 commits2026-03-15: 14 commits2026-03-16: 2 commits2026-03-17: 2 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 8 commits2026-03-24: 0 commits2026-03-25: 2 commits2026-03-26: 1 commit2026-03-27: 20 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 1 commit2026-04-02: 1 commit2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 3 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 11 commits2026-04-14: 0 commits2026-04-15: 5 commits2026-04-16: 2 commits2026-04-17: 1 commit2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 1 commit2026-04-21: 0 commits2026-04-22: 1 commit2026-04-23: 0 commits2026-04-24: 7 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 3 commits2026-04-28: 2 commits2026-04-29: 2 commits2026-04-30: 1 commit2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 5 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 1 commit2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 2 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 1 commit2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 4 commits2026-05-26: 1 commit2026-05-27: 3 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 1 commit2026-06-02: 2 commits2026-06-03: 1 commit2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 1 commit2026-06-08: 1 commit2026-06-09: 1 commit2026-06-10: 3 commits2026-06-11: 1 commit2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 1 commit2026-07-09: 0 commits2026-07-10: 1 commit2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 1 commit2026-07-14: 2 commits2026-07-15: 2 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 4 commits2026-07-21: 0 commits2026-07-22: 2 commits2026-07-23: 0 commits2026-07-24: 1 commit2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 1 commit2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 3 commits2026-08-13: 3 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 4 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 17 commits2026-08-22: 2 commits2026-08-23: 0 commits2026-08-24: 1 commit2026-08-25: 3 commits2026-08-26: 1 commit2026-08-27: 3 commits2026-08-28: 3 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 1 commit2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 2 commits2026-09-04: 2 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 1 commit2026-09-09: 2 commits2026-09-10: 3 commits2026-09-11: 4 commits2026-09-12: 1 commit2026-09-13: 0 commits2026-09-14: 1 commit2026-09-15: 2 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 1 commit2026-09-19: 1 commit2026-09-20: 0 commits2026-09-21: 2 commits2026-09-22: 0 commits2026-09-23: 22 commits2026-09-24: 12 commits2026-09-25: 17 commits2026-09-26: 0 commits
298 commits in the last yearLessMore

What xquad does

XQuad functions as a universal intermediate representation and toolchain for quadratic optimization problems, bridging the gap between quantum annealers and classical solvers. It provides a highly specified virtual machine architecture, akin to LLVM for quadratic models, allowing developers to write an optimization problem once and target any supported backend. The project includes a robust Rust core designed to be embeddable in constrained environments, alongside Python distributions for broader accessibility. By enforcing strict parity between the Rust production VM and the Python reference VM, it ensures absolute reliability across diverse hardware targets.

Quantum computing researchers, data scientists, and systems engineers working on advanced optimization problems across diverse hardware platforms.

  • Hardware-agnostic compilation: Translates quadratic optimization problems into a common intermediate representation suitable for varied hardware targets.
  • Strict specification enforcement: Ensures absolute behavioral parity between the Rust production VM and Python reference VM via continuous integration.
  • Embeddable Rust core: Designed with no_std support, allowing the virtual machine to be deployed in highly constrained environments.
  • Multi-language ecosystem: Ships as an integrated suite of Rust crates and Python distributions to support a wide range of scientific developers.
  • Quantum and classical backend support: Allows execution on both cutting-edge quantum annealers and traditional classical compute solvers.

Where teams use it

Algorithm development

Researchers develop and test complex quadratic optimization algorithms in Python before compiling them for high-performance quantum hardware.

Hardware benchmarking

Data scientists use the common intermediate representation to run the exact same optimization problem across classical and quantum solvers for performance comparison.

Embedded optimization

Engineers deploy the lightweight Rust core into edge devices to perform local optimization tasks without relying on external cloud compute.

Cross-platform research

Academic teams utilize the toolchain to guarantee their optimization models behave identically regardless of the underlying execution environment.

Getting started: Review the specification in spec/xqvm/SPEC.md and explore the Rust crates or Python distributions.

README

main branch

XQuad

Early public release. The instruction set, binary format, and public API may still change before v1.0. Production use is not recommended yet.

XQuad is a hardware-agnostic toolchain for expressing and running quadratic optimization problems (QUBO / Ising / integer) across quantum annealers and classical solvers. It ships as three Rust crates plus five Python distributions built around a single virtual-machine specification.

Think of it as LLVM for quadratic models -- a common intermediate representation that lets you write a problem once and retarget it to any supported backend.

  • Spec-first. Every behaviour is nailed down in spec/xqvm/SPEC.md and cross-implementation parity is mechanically enforced: every committed conformance vector runs on both the Rust production VM (xqvm) and the Python reference VM (xqvm_py) in CI; disagreement fails the build.
  • Embeddable. The Rust core supports no_std + alloc, so the same VM runs inside WASM runtimes, Substrate pallets, and native binaries.
  • Interactive. The Python umbrella (xquad) is REPL and Jupyter-friendly: load a program once, run it with different calldata, inspect outputs by slot. Low-level FFI lives in xqffi; user-facing Program / Session / RunResult live in xquad.program.

Install

Rust (from crates.io)

cargo install xqcli           # gives you the `xquad` binary

Python (from PyPI)

pip install xquad             # umbrella -- full pipeline
# or pick individual pieces:
pip install xqffi xqcp xqsa   # FFI bindings + DSL + solvers

Prebuilt wheels are available for Linux x86_64 and aarch64 (CPython >= 3.13). On macOS and Windows, pip builds the xqffi Rust extension from source -- this requires a Rust toolchain (>= 1.85).

GPU/QPU support

The base install includes CPU simulated annealing only. To use GPU or quantum hardware solvers, install the corresponding extra:

Solver Install Prerequisite
NVIDIA CUDA GPU (cuda-gpu) pip install xquad[cuda] CUDA 12.x driver + NVIDIA GPU
Apple Metal GPU (metal-gpu) pip install xquad[metal] Apple Silicon Mac with a Metal device
D-Wave Advantage QPU (dwave-qpu) pip install xquad[dwave] D-Wave Leap account + API token
Quip Network solver (quip) pip install xquad[quip] QUIP_RPC_URL + a configured signer

Extras are composable: pip install xquad[cuda,dwave]. See xqsa/README.md for driver prerequisites and per-solver quick-starts.

For a guided walkthrough that installs XQuad, verifies it, and runs a complete problem end to end, see Install XQuad in the book.

Package map

Three Rust crates on crates.io:

Crate Binary Description
xqvm none X-Quadratic Virtual Machine interpreter, bytecode codec, opcode table (no_std + alloc)
xqasm none .xqasm text-format assembler
xqcli xquad Unified CLI -- xquad asm / dism / run / verify

Five Python distributions on PyPI:

Package Description
xqffi PyO3 FFI bindings for xqvm + xqasm (xqffi.vm, xqffi.asm, xqffi.verifier)
xqvm_py Pure-Python reference VM (conformance oracle)
xqcp Constraint-programming DSL that compiles to .xqasm
xqsa Solver adapters -- CPU/GPU annealers, D-Wave QPU, Quip network
xquad Umbrella meta-package with interactive Program / Session / RunResult API

The one Rust package without a crates.io artefact is the xqffi pyo3 crate itself -- it ships as the xqffi PyPI wheel rather than a reusable Rust library.

Quick start

A minimal program (CLI)

; add.xqasm -- push two integers and add them
PUSH 10
PUSH 32
ADD
HALT
xquad asm add.xqasm -o add.xqb && xquad run add.xqb

End-to-end (Python, via the umbrella)

The recommended user-facing surface is xquad.program.Program + Session + RunResult. Load once, run many times with different calldata, inspect outputs by slot:

from xquad.program import Program

program = Program.from_source("""
PUSH 0
INPUT r0
PUSH 1
INPUT r1
LOAD r0
LOAD r1
ADD
STOW r2
PUSH 0
OUTPUT r2
HALT
""")

session = program.session(output_slots=1)
session.set_calldata([40, 2])
result = session.run()
assert dict(result.outputs) == {0: 42}

Program.load(bytes) takes wire-format bytecode; Session.run() returns a RunResult with dict-keyed outputs (unset slots present as None), residual stack, and step count. See Running Programs for the full tour.

Low-level / conformance surface

For conformance harnesses and one-shot execution, the raw xqffi.vm.Vm is still available directly:

from xqffi.asm import assemble_source
from xqffi.vm import Vm

bytecode = assemble_source(src)
v = Vm()
v.set_calldata([40, 2])
v.set_output_slots(1)
v.run(bytecode)
assert v.outputs() == [42]

The xquad.vm.VM class offers a middle tier -- a unified wrapper with backend dispatch (VMBackend.RUST / VMBackend.PYTHON) that accepts .xqasm source and normalises types across the two interpreters.

End-to-end worked example

examples/tsp/ shows a full Travelling Salesman Problem driven from the xqcp DSL through the VM and xqsa solver, runnable on either the Python reference VM or the Rust VM:

uv run --no-sync python examples/tsp/runner.py --seed 42
uv run --no-sync python examples/maxcut/runner.py --seed 42 --interpreter rust

# Run every example on both interpreters, check each finds a valid solution:
make example-smoke

Architecture

XQuad is a stack-based interpreter with a 256-slot register file. Registers hold typed values -- integers, integer vectors, QUBO/Ising models (XqmxModel), and candidate solutions (XqmxSample). A dedicated loop stack drives RANGE/ITER iteration.

The opcode table is declared once in xqvm/src/bytecode/types/table.rs via the opcodes! x-macro; conformance/opcodes.yaml is the machine-readable mirror that all three representations (YAML, Rust macro, xqvm_py.opcodes) are checked against at build time and in CI (scripts/check-opcode-parity.py).

The binary format (.xqb) opens with a fixed 15-byte XQBC header -- magic, version, calldata/output-slot counts, code length, and a CRC-32 checksum of the payload -- followed by the instruction stream: an opcode byte followed by its operands in big-endian byte order.

See conformance/opcodes.md for instruction-by-instruction semantics and spec/xqvm/SPEC.md for the normative spec.

Development

Prerequisites

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh   # stable Rust
make deps                                                          # dev tools

Local setup

make xquad

This syncs the Python workspace (xqvm_py, xqcp, xqsa, xqffi, xquad) into .venv/, builds the xqffi pyo3 extension via maturin, puts the repo root on sys.path so scripts anywhere in the repo can import xqcp / xqsa / xqvm_py / xqffi / xquad naturally, and installs the xquad CLI binary under ~/.cargo/bin/.

Open a REPL with everything ready:

make repl

CI-equivalent locally

make preflight    # what CI enforces, split into preflight-rs / -py / -parity / -docs / -policy
make conformance  # cross-impl parity suite (Rust + Python)

Contributing

See CONTRIBUTING.md for the development workflow, commit conventions, and DCO sign-off requirements. Agent guidelines for AI coding assistants are in AGENTS.md; cutting a release is documented in RELEASING.md.

License

Licensed under the GNU Affero General Public License v3.0 or later.

View on GitHub

Recent activity

commits and pull requests

Code frequency

additions and deletions
+35.6K-35.6KWeek of 2026-03-08: +11,330 linesWeek of 2026-03-08: -676 linesWeek of 2026-03-15: +2,827 linesWeek of 2026-03-15: -1,632 linesWeek of 2026-03-22: +8,234 linesWeek of 2026-03-22: -3,020 linesWeek of 2026-03-29: +25 linesWeek of 2026-03-29: -17 linesWeek of 2026-04-05: +2,681 linesWeek of 2026-04-05: -9 linesWeek of 2026-04-12: +15,576 linesWeek of 2026-04-12: -14,408 linesWeek of 2026-04-19: +35,573 linesWeek of 2026-04-19: -16,184 linesWeek of 2026-04-26: +3,301 linesWeek of 2026-04-26: -877 linesWeek of 2026-05-03: +4,383 linesWeek of 2026-05-03: -130 linesWeek of 2026-05-10: +3,074 linesWeek of 2026-05-10: -215 linesWeek of 2026-05-17: +4,522 linesWeek of 2026-05-17: -1,826 linesWeek of 2026-05-24: +2,213 linesWeek of 2026-05-24: -668 linesWeek of 2026-05-31: +6,542 linesWeek of 2026-05-31: -70 linesWeek of 2026-06-07: +4,017 linesWeek of 2026-06-07: -583 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +6,008 linesWeek of 2026-07-05: -110 linesWeek of 2026-07-12: +3,532 linesWeek of 2026-07-12: -44 linesWeek of 2026-07-19: +4,389 linesWeek of 2026-07-19: -237 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesWeek of 2026-08-09: +26,545 linesWeek of 2026-08-09: -14,219 linesWeek of 2026-08-16: +6,444 linesWeek of 2026-08-16: -1,310 linesWeek of 2026-08-23: +17,746 linesWeek of 2026-08-23: -1,706 linesWeek of 2026-08-30: +3,171 linesWeek of 2026-08-30: -541 linesWeek of 2026-09-06: +7,183 linesWeek of 2026-09-06: -1,010 linesWeek of 2026-09-13: +3,240 linesWeek of 2026-09-13: -868 linesWeek of 2026-09-20: +6,131 linesWeek of 2026-09-20: -1,334 linesMar 8, 2026Sep 20, 2026
+188.7K lines added, -61.7K removed over the last year.

Commits per week

last 52 weeks
530Week of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 51 commitsWeek of 2026-03-15: 18 commitsWeek of 2026-03-22: 31 commitsWeek of 2026-03-29: 2 commitsWeek of 2026-04-05: 3 commitsWeek of 2026-04-12: 19 commitsWeek of 2026-04-19: 9 commitsWeek of 2026-04-26: 8 commitsWeek of 2026-05-03: 5 commitsWeek of 2026-05-10: 1 commitsWeek of 2026-05-17: 3 commitsWeek of 2026-05-24: 8 commitsWeek of 2026-05-31: 4 commitsWeek of 2026-06-07: 7 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 2 commitsWeek of 2026-07-12: 5 commitsWeek of 2026-07-19: 7 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 7 commitsWeek of 2026-08-16: 23 commitsWeek of 2026-08-23: 11 commitsWeek of 2026-08-30: 5 commitsWeek of 2026-09-06: 11 commitsWeek of 2026-09-13: 5 commitsWeek of 2026-09-20: 53 commitsSep 27, 2025Sep 20, 2026
298 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 1 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 2 commitsSun 11:00 — 5 commitsSun 12:00 — 1 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 1 commitsSun 16:00 — 3 commitsSun 17:00 — 2 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 0 commitsSun 21:00 — 0 commitsSun 22:00 — 1 commitsSun 23:00 — 2 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 2 commitsMon 10:00 — 5 commitsMon 11:00 — 2 commitsMon 12:00 — 6 commitsMon 13:00 — 4 commitsMon 14:00 — 1 commitsMon 15:00 — 3 commitsMon 16:00 — 5 commitsMon 17:00 — 1 commitsMon 18:00 — 2 commitsMon 19:00 — 1 commitsMon 20:00 — 2 commitsMon 21:00 — 2 commitsMon 22:00 — 5 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 2 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 1 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 1 commitsTue 9:00 — 0 commitsTue 10:00 — 0 commitsTue 11:00 — 0 commitsTue 12:00 — 0 commitsTue 13:00 — 0 commitsTue 14:00 — 2 commitsTue 15:00 — 1 commitsTue 16:00 — 4 commitsTue 17:00 — 3 commitsTue 18:00 — 4 commitsTue 19:00 — 4 commitsTue 20:00 — 1 commitsTue 21:00 — 1 commitsTue 22:00 — 1 commitsTue 23:00 — 0 commitsWed 0:00 — 3 commitsWed 1:00 — 1 commitsWed 2:00 — 1 commitsWed 3:00 — 4 commitsWed 4:00 — 0 commitsWed 5:00 — 1 commitsWed 6:00 — 3 commitsWed 7:00 — 5 commitsWed 8:00 — 2 commitsWed 9:00 — 0 commitsWed 10:00 — 0 commitsWed 11:00 — 3 commitsWed 12:00 — 1 commitsWed 13:00 — 8 commitsWed 14:00 — 10 commitsWed 15:00 — 6 commitsWed 16:00 — 11 commitsWed 17:00 — 6 commitsWed 18:00 — 5 commitsWed 19:00 — 1 commitsWed 20:00 — 5 commitsWed 21:00 — 1 commitsWed 22:00 — 2 commitsWed 23:00 — 2 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 1 commitsThu 3:00 — 0 commitsThu 4:00 — 8 commitsThu 5:00 — 2 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 0 commitsThu 11:00 — 1 commitsThu 12:00 — 1 commitsThu 13:00 — 1 commitsThu 14:00 — 3 commitsThu 15:00 — 0 commitsThu 16:00 — 2 commitsThu 17:00 — 2 commitsThu 18:00 — 3 commitsThu 19:00 — 2 commitsThu 20:00 — 2 commitsThu 21:00 — 2 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 4 commitsFri 3:00 — 1 commitsFri 4:00 — 2 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 1 commitsFri 8:00 — 0 commitsFri 9:00 — 1 commitsFri 10:00 — 2 commitsFri 11:00 — 3 commitsFri 12:00 — 10 commitsFri 13:00 — 2 commitsFri 14:00 — 2 commitsFri 15:00 — 1 commitsFri 16:00 — 3 commitsFri 17:00 — 12 commitsFri 18:00 — 7 commitsFri 19:00 — 10 commitsFri 20:00 — 17 commitsFri 21:00 — 4 commitsFri 22:00 — 4 commitsFri 23:00 — 0 commitsSat 0:00 — 1 commitsSat 1:00 — 2 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 0 commitsSat 14:00 — 3 commitsSat 15:00 — 1 commitsSat 16:00 — 0 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 6 commitsSat 20:00 — 1 commitsSat 21:00 — 2 commitsSat 22:00 — 1 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Apr 10, 2026daily#14+302