{"repo":"QuipNetwork/quip-miner","free":true,"listed":false,"github":"https://github.com/QuipNetwork/quip-miner","clone":"git clone https://github.com/QuipNetwork/quip-miner.git","description":"The quip network mining stack. This includes a coordinator and links all of the official quip network miners.","language":"Python","stars":11600,"topics":["cryptocurrency","ising","ising-model","ising-spin-models","mining","quantum","quantum-annealing","quantum-computing","quantum-sim-engine","quantum-simulation","quantum-simulations","quantum-simulator","quantum-simulators"],"license":"AGPL-3.0","category":"crypto_mining_tool","readme_excerpt":"# quip-miner\n\n> **Experimental software.** Use at your own risk. No production warranties.\n\nA Python mining stack for the [quip-protocol-rs](https://gitlab.com/quip.network/quip-protocol-rs) Substrate chain. Drives CPU SA, GPU (CUDA / Metal / Modal), and QPU (D-Wave) miners against the chain's `QuantumPow` pallet — fetch the mining snapshot at each new chain head, search for valid Ising solutions, submit `QuantumPow.submit_proof` extrinsics, repeat.\n\nThis is the `v0.2` line of the repository (formerly `quip-protocol`). In `v0.1` this codebase shipped its own consensus, P2P (QUIC), block store, REST API, and SPHINCS+ block signer. `v0.2` removes all of that — the chain is the source of truth, miners attach to it.\n\n## Architecture\n\n```\n                              chain (substrate)\n                                     │\n                              ws://localhost:9944\n                                     │\n                  ┌──────────────────┴──────────────────┐\n                  │       SubstrateClient (read)         │\n                  │   - get_mining_snapshot              │\n                  │   - subscribe_new_heads              │\n                  │   - submit_extrinsic                 │\n                  └──────────────────┬──────────────────┘\n                                     │\n                  ┌──────────────────┴──────────────────┐\n                  │  SubstrateMinerController            │\n                  │   - on new head: cancel + fetch +    │\n                  │     dispatch                         │\n                  │   - on result: encode + submit       │\n                  │   - classify receipts                │\n                  └──────┬────────────────────┬──────────┘\n                         │                    │\n                  ┌──────┴──────┐      ┌──────┴──────┐\n                  │ MinerCore   │      │ TelemetryApi│\n                  │ - handles[] │      │ /api/v1/*   │\n                  │ - stats     │      └─────────────┘\n                  │ - descriptor│\n                  └──────┬──────┘\n                         │\n                  MinerHandle (per worker process)\n                         │\n                  BaseMiner.mine_work_item\n                  (CPU SA / GPU CUDA|Metal|Modal / QPU)\n```\n\nComponent responsibilities (`shared/`):\n\n| module | role |\n|--------|------|\n| `signer.py` | Abstract `Signer` + `Sr25519Signer`. Phase 7 adds `HybridSigner` (sr25519 + ML-DSA-44). |\n| `keystore.py` | sr25519 keystore (`0o600` JSON; plaintext seed for dev). |\n| `substrate_client.py` | `py-substrate-interface` async wrapper; `state_call` for the mining snapshot. |\n| `substrate_types.py` | `SubstrateMiningContext`, `SubstrateDifficulty`, `MinerInfo`, `ExtrinsicReceipt`. |\n| `substrate_submitter.py` | `MiningResult` → `QuantumProof` SCALE encoding + submission. |\n| `substrate_miner_controller.py` | Head subscription, snapshot fetch, dispatch, receipt classification. |\n| `miner_core.py` | Owns persistent `MinerHandle` workers, hardware descriptor cache, aggregate stats. |\n| `miner_bootstrap.py` | Idempotent fund + register pipeline. |\n| `telemetry_api.py` | HTTP REST surface (`/api/v1/status`, `/system`, `/stats`, `/block/*`). |\n| `base_miner.py` | Protocol-neutral `mine_work_item(context, stop_event)` loop. |\n| `miner_worker.py` | 2-process worker scaffolding (parent ↔ child mp.Queue + stop_event). |\n| `quantum_proof_of_work.py` | `derive_nonce`, `generate_ising_model_from_nonce`, `evaluate_sampleset`. |\n\nStandalone scripts at repo root:\n\n| file | role |\n|------|------|\n| `quip_cli.py` | `quip-miner` CLI dispatch (keygen / bootstrap / cpu / gpu / qpu). |\n\n## Installation\n\n```bash\npython3 -m venv .quip\nsource .quip/bin/activate\npip install -U pip setuptools wheel\npip install -e .\n```\n\nDependencies pulled in by `pyproject.toml`:\n- `substrate-interface>=1.7.4`, `scalecodec>=1.2` — chain RPC + SCALE\n- `dwave-ocean-sdk>=9.0.0,<10`, `numpy>=1.24.0` — Ising sampling\n- `aiohttp>=3.9.0` — telemetry server + faucet\n- `click>=8.1.7` — CLI\n- `blake3>=1.0.5` — nonce derivation\n\nD-Wave QPU access requires `DWAVE_API_KEY` in `.env` (loaded via `python-dotenv`).\n\n## Quick start\n\nIn one terminal, bring up the chain:\n\n```bash\ncd ../quip-protocol-rs\ndocker compose up -d\ndocker compose logs -f node1   # confirm blocks being produced\n```\n\nThe dev faucet now lives in its own repository (`gitlab.com/quip.network/faucet`);\nlocal-network setup (node + faucet + chain seeding) is handled by the testing\nrepo at `nodes.quip.network`. Point the miner at a running faucet with\n`--faucet-url`; it self-funds and self-registers on first run.\n\nBootstrap a miner account (generates a keystore, funds it via the faucet, sudo-seeds `Difficulty` + `DefaultTopology` on a fresh chain, then submits `register_miner`):\n\n```bash\nquip-miner bootstrap \\\n    --node-url ws://localhost:9944 \\\n    --faucet-url http://127.0.0.1:8087 \\\n    --seed-chain\n```\n\nRun the miner:\n\n```bash\nquip-miner cpu \\\n    --node-url ws://localhost:9944 \\\n    --num-cpus 4 \\\n    --topology zephyr:9,2 \\\n    --rest-port 8086\n```\n\nIn a third terminal, watch chain events for `QuantumPow.ProofAccepted` (via [polkadot.js](https://polkadot.js.org/apps/#/explorer) pointed at `ws://localhost:9944`), or hit the local telemetry API:\n\n```bash\ncurl http://localhost:8086/api/v1/status   | jq\ncurl http://localhost:8086/api/v1/stats    | jq\ncurl http://localhost:8086/api/v1/system   | jq\n```\n\n## CLI reference\n\n### `quip-miner keygen`\n\nGenerate a fresh sr25519 signing key. Writes a `0o600` JSON keystore with the seed in plaintext (passphrase-encrypted keystores ship in Phase 7).\n\n```\nquip-miner keygen --out ~/.quip-miner/signing.json\n```\n\n### `quip-miner bootstrap`\n\nIdempotent setup: generate keystore (if missing) → request funds from the faucet → submit `register_miner`. With `--seed-chain`, also sudo-submits `set_difficulty` + `register_topology` if missing.\n\n```\nquip-miner bootstrap \\\n    --node-url ws://localhost:9944 \\\n    --signer-key ~/.quip-miner/signing.json \\\n    --faucet-url http://127.0.0.1:8087 \\\n    --seed-chain \\\n    --seed-topology 9,2\n```\n\nRe-runs are no-ops that just verify state.\n\n### `quip-miner cpu | gpu | qpu`\n\nRun the mining controller. All three subcommands share these flags:\n\n- `--node-url ws://...` (required) — substrate WS endpoint\n- `--signer-key ~/.quip-miner/signing.json` — keystore path\n- `--topology zephyr:M,T` — sampler topology (defaults to `zephyr:9,2`)\n- `--rest-port 8086` — HTTP telemetry port (`-1` disables)\n\nThe `cpu` subcommand adds `--num-cpus N`; `gpu` adds `--gpu-backend {local,metal,modal}`; `qpu` adds `--qpu-type` and `--daily-budget`.\n\nTopology binding is enforced at startup: the CLI hashes the configured topology with the same `blake2_256(SCALE((sorted_nodes, canonical_edges)))` recipe the chain uses, and refuses to start if the hash doesn't match the chain's registered topology.\n\n## Telemetry REST API\n\n```\nGET  /health\nGET  /api/v1/status                        chain head + miner identity + is_mining\nGET  /api/v1/system                        hardware descriptor (cached)\nGET  /api/v1/stats                         aggregate MinerCore + controller stats\nGET  /api/v1/block/latest                  substrate-fetched chain head\nGET  /api/v1/block/{n}                     substrate-fetched block by number\nGET  /api/v1/block/{n}/header              header subset\nPOST /api/v1/solve                         disabled in v0.2 (was direct DWave sample)\n```\n\nResponse envelope: `{\"success\": bool, \"data\": ..., \"error\": ..., \"timestamp\": int}`.\n\nThe legacy `/api/v1/peers`, `/api/v1/join`, `/api/v1/gossip`, `/api/v1/heartbeat`, and `POST /api/v1/block` paths are removed — they were P2P / consensus surfaces with no equivalent in substrate mode. The legacy `/telemetry/*` SSE stream and per-peer aggregator also moved out; consumers should switch to substrate-side events and Prometheus (`http://localhost:9615/metrics`).\n\n## Topology\n\nMining works against any `BoundedVec`-bounded graph registered on chain (`QuantumPow.RegisteredTopologies`). The CLI's `--topology zephyr:M,T` constructs a [dwave-networkx](https://docs.ocean.dwavesys.com/projects/dwave-networkx/) Zephyr graph; the chain's `pallets/quantum-pow/src/topology.rs::hash_topology` canonicalizes and `blake2_256`-hashes the result.\n\n`bootstrap --seed-chain --seed-topology 9,2` registers Zephyr Z(9,2) (1368 nodes / 7692 edges — the legacy default that matches the chain's difficulty calibration of `max_energy_milli=-2_500_000`). Smaller graphs (Z(2,2), Z(3,2)) work too but need their own difficulty calibration since their ground-state energy range is much narrower.\n\n## Running tests\n\n```bash\npython -m pytest tests/ -v\n```\n\nIntegration tests against the docker chain auto-skip if `ws://localhost:9944` isn't reachable. The end-to-end controller test (`test_controller_submits_proof_end_to_end`) bootstraps inline and asserts at least one `QuantumPow.ProofAccepted` event lands within 120 seconds.\n\nThe cross-language nonce-parity test (`test_derive_nonce_parity.py`) reads `crates/quantum-validation/tests/fixtures/python_parity.json` from a sibling `quip-protocol-rs` checkout. Set `QUIP_RUST_FIXTURE_DIR` if your checkout is elsewhere.\n\n## What changed from v0.1\n\nRemoved entirely:\n\n- The local blockchain stack: `shared/block.py`, `shared/node.py`, `shared/network_node.py`, `shared/block_store.py`, `shared/block_synchronizer.py`, `shared/block_requirements.py`, `genesis_block_public.json`.\n- The P2P stack: QUIC client/server, SWIM failure detector, peer scorer / ban list, gossip telemetry aggregator, sync wire codecs.\n- The legacy signing path: SPHINCS+ block signer + certificate manager.\n- CLI: `quip-network-node` and `quip-network-simulator` are gone. Use `quip-miner` instead.\n\nKept (with rewired backends):\n\n- `/api/v1/status`, `/system`, `/stats`, `/block/*` (now substrate-backed)\n- The 2-process worker model (`MinerHandle` ↔ child mp.Queue + stop_event)\n- The Ising sampling code (`BaseMiner.mine_work_item`, `qua","default_branch":"main","files":384,"tree":[".dockerignore",".github/workflows/ci.yml",".gitignore",".gitlab-ci.yml","AGENTS.md","ARCHITECTURE.md","CPU/__init__.py","CPU/sa_miner.py","CPU/sa_sampler.py","CPU/sa_stream.py","GPU/__init__.py","GPU/base_cuda_sampler.py","GPU/cuda_gibbs.cu","GPU/cuda_gibbs_sa.py","GPU/cuda_miner.py","GPU/cuda_sa.cu","GPU/cuda_sa.py","GPU/cuda_stream.py","GPU/driver_budget.py","GPU/gpu_csr_beta.py","GPU/gpu_miner.py","GPU/gpu_scheduler.py","GPU/macos_sensors.py","GPU/metal_gibbs.metal","GPU/metal_gibbs_sa.py","GPU/metal_kernels.metal","GPU/metal_miner.py","GPU/metal_sa.py","GPU/metal_scheduler.py","GPU/metal_splash.metal","GPU/metal_splash_sa.py","GPU/metal_stream.py","GPU/metal_utils.py","GPU/modal_miner.py","GPU/modal_sampler.py","GPU/modal_stream.py","GPU/sampler_utils.py","GPU/slot_rotation.py","GPU/util_monitor.py","LICENSE","MANIFEST.in","MINER_README.md","Mining.sh","QPU/__init__.py","QPU/dwave_miner.py","QPU/dwave_sampler.py","QPU/dwave_submitter.py","QPU/qpu_time_manager.py","QPU/stream_driver.py","README.md","SOLVE.md","TESTSTOEVAL.md","benchmarks/benchmark_quantum_pow.py","benchmarks/benchmark_results.json","benchmarks/blockchain_benchmark_comprehensive.png","benchmarks/blockchain_benchmark_miner_timing_performance.png","benchmarks/blockchain_benchmark_timing.png","benchmarks/energy_distributions.png","benchmarks/gpu_benchmark_modal.py","benchmarks/performance_metrics.png","docker/Dockerfile.cpu","docker/Dockerfile.cuda","docker/README.md","docker/docker-compose.yml","docker/entrypoint.sh","docker/mining_rates/Dockerfile.cpu","docker/mining_rates/Dockerfile.cuda","docker/mining_rates/README.md","docker/mining_rates/build_all.sh","docker/mining_rates/docker-compose.yml","docker/mining_rates/entrypoint-cpu.sh","docker/mining_rates/entrypoint-cuda.sh","docker/mining_rates/test_local.sh","docker/quip-miner.cpu.toml","docker/quip-miner.cuda.toml","docs/VERSIONING.md","docs/dwave-solver-ranges.json","docs/dwave-solver-ranges.md","docs/metal-gpu-governor.md","docs/miner-architecture.md","docs/rest-api.md","docs/telemetry-indexer-spec.md","dwave_topologies/__init__.py","dwave_topologies/embedded_topology.py","dwave_topologies/embedding_loader.py","dwave_topologies/smart_embedding.py","dwave_topologies/topologies/README.md","dwave_topologies/topologies/__init__.py","dwave_topologies/topologies/advantage2_system1.json.gz","dwave_topologies/topologies/advantage2_system1.py","dwave_topologies/topologies/advantage2_system1_10.json.gz","dwave_topologies/topologies/advantage2_system4_1.json.gz","dwave_topologies/topologies/advantage2_system4_1.py","dwave_topologies/topologies/advantage2_system4_3.json.gz","dwave_topologies/topologies/advantage2_system4_3.py","dwave_topologies/topologies/advantage_system4_1.json.gz","dwave_topologies/topologies/advantage_system4_1.py","dwave_topologies/topologies/advantage_system6_4.json.gz","dwave_topologies/topologies/advantage_system6_4.py","dwave_topologies/topologies/chimera.py","dwave_topologies/topologies/chimera_c16.json.gz","dwave_topologies/topologies/dwave_topology.py","dwave_topologies/topologies/json_loader.py","dwave_topologies/topologies/pegasus.py","dwave_topologies/topologies/pegasus_p16.json.gz","dwave_topologies/topologies/zephyr.py","genesis_block.json","gibbs/gonzalez2011_parallel_gibbs.pdf","gibbs/liu1994_collapsed_gibbs.pdf","minertest/AKASH.md","minertest/AWS.md","minertest/Dockerfile.cpu","minertest/Dockerfile.cuda","minertest/aws-userdata.sh","minertest/build_images.sh","minertest/entrypoint-simple.sh","minertest/entrypoint.sh","minertest/requirements-cpu.txt","minertest/requirements-cuda.txt","pyinstaller/boot_miner.py","pyinstaller/build.sh","pyinstaller/quip_miner.spec","pyproject.toml","quip-miner.example.toml","quip.network.cpu.example.toml","quip.network.gpu.example.toml","quip.network.qpu.example.toml","quip_cli.py","reload.sh","shared/__init__.py","shared/allowed_value_spec.py","shared/asyncio_supervise.py","shared/base_miner.py","shared/beta_schedule.py","shared/chacha8.py","shared/decay_math.py","shared/driver_util.py","shared/energy_utils.py","shared/feeder_driver.py","shared/hybrid_signer.py","shared/ising_feeder.py","shared/ising_model.py","shared/keystore_hybrid.py","shared/logging_config.py","shared/miner_config.py","shared/miner_core.py","shared/miner_survey.py","shared/miner_types.py","shared/miner_worker.py","shared/mining_attempt_log.py","shared/node_edge_coerce.py","shared/nonce_prefilter.py","shared/packed_solution.py","shared/problem_prep.py","shared/proc_util.py","shared/quantum_proof_of_work.py","shared/ring_views.py","shared/shared_ring.py","shared/signer.py","shared/stats_snapshot.py","shared/stream_context.py","shared/system_info.py","shared/time_utils.py","shared/topology_hash.py","shared/version.py","shared/work_context.py","substrate/__init__.py","substrate/client.py","substrate/decay_timing.py","substrate/difficulty_decay.py","substrate/event_manager.py","substrate/mempool_producer.py","substrate/mempool_stack.py","substrate/mempool_submitter.py","substrate/mempool_types.py","substrate/miner_bootstrap.py","substrate/miner_controller.py","substrate/miner_registry.py","substrate/pool.py","substrate/pool_client.py","substrate/scale_codec.py","substrate/solver_registration.py","substrate/submitter.py","substrate/sync_progress.py","substrate/telemetry_process.py","substrate/types.py","substrate/url_failover.py","substrate/validator_handle.py","substrate/work_scheduler.py","systemd-linux/README.md","systemd-linux/install.sh","systemd-linux/quip-miner.service","systemd-linux/quip-miner.systemd.toml","tests/_metal_stream_fakes.py","tests/_utils.py","tests/chacha8_test_vectors.json","tests/chain_probe.py","tests/conftest.py","tests/fakes/__init__.py","tests/fakes/fake_stream.py","tests/fakes/fake_submitter.py","tests/generate_parity_vectors.py","tests/test_adapt_h_aware.py","tests/test_adapt_parameters.py","tests/test_allowed_value_spec.py","tests/test_asyncio_supervise.py","tests/test_base_miner_pump.py","tests/test_build_feeder.py","tests/test_chacha8.py","tests/test_chain_event_manager.py","tests/test_chain_event_regression.py","tests/test_client_recovery.py","tests/test_client_sync_state.py","tests/test_concurrent_mode.py","tests/test_controller_spawns_telemetry.py","tests/test_controller_stats_snapshot.py","tests/test_cpu_streaming.py","tests/test_cuda_nonce_starvation.py","tests/test_cuda_streaming_wiring.py","tests/test_decay_timing.py","tests/test_deferred_reconstruction.py","tests/test_derive_nonce_parity.py","tests/test_difficulty_decay.py","tests/test_download_wins_bqm.py","tests/test_driver_budget.py","tests/test_dwave_miner_connectionless.py","tests/test_dwave_stream_stop.py","tests/test_dwave_streaming_sampler.py","tests/test_dwave_submitter.py","tests/test_dwave_submitter_process.py","tests/test_evaluate_sampleset_equivalence.py","tests/test_extrinsic_event_parsing.py","tests/test_gauge_fix_count.py","tests/test_generate_ising_arrays.py","tests/test_gpu_core_count.py","tests/test_gpu_scheduler.py","tests/test_gpu_throttle.py","tests/test_graceful_exit_guard.py","tests/test_hybrid_signer.py","tests/test_ising_feeder.py","tests/test_ising_model_parity.py","tests/test_layering_guard.py","tests/test_live_threshold_and_attempts.py","tests/test_log_writer_process.py","tests/test_macos_sensors.py","tests/test_mempool_client.py","tests/test_mempool_cross_process_transport.py","tests/test_mempool_feeder_spec.py","tests/test_mempool_priority_integration.py","tests/test_mempool_producer.py","tests/test_mempool_submitter.py","tests/test_mempool_types.py","tests/test_metal_cap_policy.py","tests/test_metal_chunk_calibration.py","tests/test_metal_chunking.py","tests/test_metal_config_threading.py","tests/test_metal_qos.py","tests/test_metal_scheduler.py","tests/test_metal_stream_driver.py","tests/test_metal_streaming_wiring.py","tests/test_metal_yielding.py","tests/test_mine_work_item.py","tests/test_miner_bootstrap.py","tests/test_miner_config.py","tests/test_miner_controller_on_new_head.py","tests/test_miner_core.py","tests/test_miner_registry.py","tests/test_miner_survey.py","tests/test_miner_worker_shutdown.py","tests/test_miner_worker_topology.py","tests/test_mining_snapshot_decode.py","tests/test_modal_streaming.py","tests/test_no_inline_sampling_guard.py","tests/test_pacing_log_throttle.py","tests/test_packed_solution.py","tests/test_phase6_unit.py","tests/test_pool_client.py","tests/test_pool_sync_wait.py","tests/test_problem_prep.py","tests/test_proc_util.py","tests/test_qp_encoder.py","tests/test_qpu_time_manager.py","tests/test_quantum_proof_of_work.py","tests/test_quip_cli.py","tests/test_quip_cli_identify.py","tests/test_ring_drop_telemetry.py","tests/test_ring_views.py","tests/test_sampler_utils.py","tests/test_scale_codec_helpers.py","tests/test_select_diverse_min_solutions_one.py","tests/test_shared_ring.py","tests/test_shared_sampleset_shim.py","tests/test_signer.py","tests/test_slot_rotation.py","tests/test_solver_registration.py","tests/test_stats_snapshot.py","tests/test_stream_context.py","tests/test_stream_driver_drop_latch.py","tests/test_stream_driver_process.py","tests/test_stream_driver_watchdog.py","tests/test_stream_factory_kwargs.py","tests/test_submit_tip_and_retry.py","tests/test_substrate_client.py","tests/test_substrate_hybrid_extrinsic.py","tests/test_substrate_miner_controller.py","tests/test_substrate_submitter.py","tests/test_substrate_url_failover.py","tests/test_sync_progress.py","tests/test_system_info.py","tests/test_telemetry_process.py","tests/test_topology_binding.py","tests/test_topology_hash.py","tests/test_util_monitor_process.py","tests/test_validator_handle.py","tests/test_validator_pool.py","tests/test_variable_clamping.py","tests/test_verify_registered.py","tests/test_winning_solution_count.py","tests/test_winning_solution_decode.py","tests/test_work_context_methods.py","tests/test_work_context_protocol.py","tests/test_work_scheduler.py","tests/test_work_start_logging.py","tools/__init__.py","tools/analyze_topology_minimum_energy.py","tools/analyze_topology_sizes.py","tools/baseline_utils.py","tools/basic_ising_problems.py","tools/benchmark_diversity.py","tools/benchmark_gibbs_curve.py","tools/benchmark_gibbs_vs_sa.py","tools/benchmark_pipeline.py","tools/benchmark_prefilter_mining.py","tools/benchmark_sweep.py","tools/calibrate_difficulty_curve.py","tools/calibrate_gibbs_curve.py","tools/chart_wins.py","tools/check-node.sh","tools/compare_mining_rates.py","tools/cpu_baseline.py","tools/cuda_auto_profiler.py","tools/cuda_baseline.py","tools/cuda_benchmark_compare.py","tools/cuda_gibbs_baseline.py","tools/cuda_profile_regions.py","tools/download_and_validate_wins.py","tools/dump_solver_ranges.py","tools/dump_solver_topology.py","tools/feeder_decay_probe.py","tools/fetch_winning_energies.py","tools/find_block_time_threshold.py","tools/find_native_zephyr.py","tools/generate_all_topologies_json.py","tools/lint_no_inline_sampling.py","tools/metal_baseline.py","tools/metal_cost_model.py","tools/metal_gibbs_baseline.py","tools/metal_splash_baseline.py","tools/metal_tester.py","tools/mining_viz_common.py","tools/parse_threshold_log.py","tools/print_topology_nodes.py","tools/process_mining_comparison.py","tools/qpu_baseline.py","tools/qpu_consumer_livefire.py","tools/qpu_param_optimizer.py","tools/qpu_throughput_canary.py","tools/register_advantage2.py","tools/sa_gibbs_baseline.py","tools/solution_explorer.py","tools/stack_soak_probe.py","tools/sweep_reads_grid.py","tools/test_canary.py","tools/test_clamping_live.py","tools/test_mining_yielding.py","tools/test_qpu.py","tools/validate_mined_topology.py","tools/visualize_benchmark_results.py","tools/visualize_canary.py","tools/visualize_comparative_performance.py","tools/visualize_mining_performance.py","tools/visualize_prefilter_correlation.py","tools/visualize_qpu_results.py","uv.lock"],"storefront":"/r/QuipNetwork","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/QuipNetwork/quip-miner/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}