Skip to main content

endless-learning

Generate your own RL training tasks — and verify they are worth training on.

endless-learning builds a concept graph by exploring the web, mines verifiable tasks from it, and gates every task through execution: a task ships only if something can actually check the answer. Two kinds of task are live — deep-search questions grounded in a frozen document corpus, and executable coding instances mined from real repositories.

It is an open reproduction of the knowledge-graph task synthesis described in the Kimi K3 technical report (arXiv 2607.24653).

Scope: this is the data engine — graph, mining, verification, and versioned datasets that ship with their reward functions and environments. There is no training loop; trainers own the rollout loop.

What you can do with it

Grow a concept graph Agents explore outward from a seed pack, expanding a deduplicated concept DAG. Three packs ship with the package; bring your own as a TOML file.
Mine deep-search questions Questions grounded in a content-addressed corpus, gated V1–V5: grounded, unique, non-trivial, solvable, stable.
Mine executable coding tasks SWE-bench-shaped instances from real repos, validated by running the tests: the oracle must fail on the broken state and pass on the fixed one.
Re-verify offline Every dataset re-checks with no network and no model calls, against pinned images and hashed documents.
Export to trainers verifiers tasksets, chorus TaskRecord registries, and Harbor task directories — each checked against the consumer's own code.

Install

pip install 'endless-learning[all]'

Python 3.11+. Extras, if you would rather pick: [anthropic] [openai] [litellm] [ddg] [mcp] [hub] [semantic] [verifiers].

Docker is required for the coding domain only. Everything else runs locally.

Quickstart

Nothing here downloads a prebuilt graph — the package is the engine, and every artifact is produced by your run, in your workspace.

mkdir my-graph && cd my-graph
endless init                                            # endless.toml + .endless/
endless kg expand --seeds knowledge --budget-nodes 0    # plant a seed pack, no keys needed
endless kg stats

Seeding is local. Growing the graph calls a model and a search backend, so set the credentials your endless.toml roles name, then raise the budget:

export ANTHROPIC_API_KEY=...          # or whichever provider endless.toml selects
endless kg expand --budget-nodes 50   # agents explore outward from the seeds

Deep-search questions

Sample the graph, write questions against retrieved documents, and keep only what survives the gate. The corpus is content-addressed, so a question that passes today re-verifies tomorrow against the same bytes.

endless synth run --n 20 --workers 6    # sample → write → gate → tasks.jsonl
endless dataset verify                  # offline: no network, no model calls
endless dataset export-verifiers        # verifiers-v1 taskset package

Coding tasks

Onboard a repository into a pinned image with a flake-screened test ledger, then mine instances from its history. Every instance is validated by execution against two states of the repo before it is allowed to exist.

endless coding select --n 10                   # graph concepts → candidate repos
endless coding onboard --repo <url>            # pinned image + test ledger
endless coding mine --since 2024-01-01         # mine instances → dual-state validation
endless coding verify-instances                # replay every instance from its images

Three families are built, differing in what the model is asked to do:

family the job where instances come from
code-bugfix fix the code a commit that touches source and tests together
code-testgen write the test inverts a bugfix instance — your test must fail before the fix and pass after
code-evolution implement the change a merged pull request, scoped so the task is a coherent unit of work
endless coding mine-testgen        # invert released bug fixes
endless coding mine-evolution      # mine merged pull requests

Export to whichever harness you train against:

endless coding export-chorus                       # chorus TaskRecord registry
endless coding export-harbor                       # Harbor task directories
endless coding publish-images --registry <prefix>  # retag; push only with --push
endless coding export-tree                         # one file per instance, for a git-backed corpus

What ships, and what does not

Datasets are outputs of your run, and are not distributed here. A search-QA record cites document hashes; a coding instance names a pinned image. Without the corpus and the images neither re-verifies, so shipping the JSONL alone would be shipping a claim with its evidence removed. endless dataset verify re-verifies against your corpus, built by your runs.

What to expect

Measured results, including the ones that did not go our way — worth reading before you plan around this:

  • Difficulty is expensive to measure and noisy. Per-task pass rate is ±0.24 at 5 rollouts, exactly binomial. Aggregate over 30+ tasks; never read a single task's label.
  • The graph does not make tasks hard. Four independent levers each improved a question's shape and left the mean pass rate at 0.88. What the graph is actually for is coverage and checkable grounding.
  • Onboarding is mechanical, and bounded. Roughly 83% success on curated mainstream Python, near 0% on the long tail the graph selects.
  • A task's statement is the binding constraint, not its difficulty. In one 80-episode run every instance scored 0.000, not because the work was hard but because the statements under-specified what the tests check. Re-deriving each statement from what the pull request actually merged moved one instance from a flat 0.167 to a mean of 0.938.
  • Offline re-verification holds. 25/25 on the search set, 8/9 on coding — the miss being a real catch, an oracle whose verdict depended on set ordering.

Docs

Design notes, decisions and measured results live in docs/ as a numbered series — start at docs/000-overview.md.

Metadata

Release files for endless-learning 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for endless-learning 0.0.2
File Size Uploaded
endless_learning-0.0.2.tar.gz 501.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for endless-learning 0.0.2
File Interpreter ABI Platform
endless_learning-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 784.7 kB

Release files / endless_learning-0.0.2.tar.gz

Download URL endless_learning-0.0.2.tar.gz
Size 501.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3da6f15556613538bca5777a2e2ac8568cb91c8d9dcdc3346324e4d98e9d526d
BLAKE2b-256 checksum
How to use checksums
a456a47054e8fad6b8af01569f801fb81afa32cb5436a7bce2300abc93ce250a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Release files / endless_learning-0.0.2-py3-none-any.whl

Download URL endless_learning-0.0.2-py3-none-any.whl
Size 282.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
62e26d20188f8efc2dd694eb028d34cb7e4716bcbb41b2e28c480c38eca54f90
BLAKE2b-256 checksum
How to use checksums
498708d5371fb3a229312bdf9edfb55c567becb8b792824172b61f221f4d36e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page