Credits
Thermite builds on other people’s work. This list credits the research it learned from, the systems it studied, and the programs, libraries, standards and services it runs, ships or uses, each with its licence. It is kept in CREDITS.md at the root of Thermite’s repository, and the documentation site shows it as its Credits page.
- What a licence here means. For a paper, a post or a system that Thermite learned from, the licence is the work’s own: Thermite cites it, and copies none of its text, code or data unless this list says so. For a program, a library or an image that Thermite runs or ships, the licence is the one it is used under.
- Kept as the work goes on. Every outside work that is studied, compared or used is added here in the same commit as the work it informed. A missing or a wrong credit is a bug: please open an issue.
Research behind the design
Section titled “Research behind the design”Papers Thermite adopts from
Section titled “Papers Thermite adopts from”| Work | Authors | Licence | What Thermite takes from it |
|---|---|---|---|
| Stateless Language Agents: Scaling Long-Horizon Automated Research (2026) | Zhang, Ji, Sun et al. | CC BY 4.0 | The shape of the agents: the harness owns all research state, every agent call starts fresh from context the harness builds, workers are isolated, and a stateless central planner assigns their experiments. Also the lane’s keep rule, re-seeding lanes from the champion, and the registry of directions |
| Fork-and-Flush: Escaping Idea Basins in Autoresearch Agents (2026) | Cai, Ziakas, Kontonis et al. | CC BY 4.0 | Fork rounds on a fixed schedule: every lane starts again from the champion at a third and two thirds of the wall budget, never on a plateau trigger |
| CORAL: Towards Autonomous Multi-Agent Evolution for Open-Ended Discovery (2026) | Qu, Zheng, Zhou et al. | CC BY 4.0 | The loop inside a lane: a grader outside the agents that scores the exact commit in its own checkout, attempt records, heartbeats, the lineage view, and forking from another lane’s best. Its lanes that share everything were weighed against Stateless Language Agents and not taken |
| Risk-aware product decisions in A/B tests with multiple metrics (2024), and Spotify Engineering’s post on it | Schultzberg, Ankargren, Frånberg | CC BY 4.0; the post © Spotify AB | Guards as non-inferiority tests: the objective must improve, and every guard must stay within its margin, for each step and over all promotions |
| AutoResearch: An Execution-Grounded Multi-Agent Framework for Reliable Research Workflow Automation (2026), whose second version introduces its Transactional Research Ledger | Kumar, Ali, Ahmed et al. | CC BY 4.0 | From the Transactional Research Ledger, the ledger’s lifecycle: invalidated kept apart from failed, superseded, and promotion by compare-and-swap |
| How Do Agents Fail on AutoResearch: End-to-End Diagnostic Evaluation on 100 Real-World Frontier Research Tasks (2026), with its benchmark AutoResearchEval | Fei, Liu, Yu et al. | CC BY 4.0; the dataset CC BY 4.0 | Evidence that agents game the judges they can reach, and its failure taxonomy (ARFT): flaws a worker declares stop a promotion, and submissions are counted |
| AutoResearch: Insight In, Hallucination Out (2026), EvoMap | Liu, Sun et al. | arXiv non-exclusive licence | From its code: fenced leases, a job blocked after a few lost leases, and completion that the engine decides, not an agent |
| Agentic, autonomous design evolution of machine-learned interatomic potentials (2026), chemRxiv | Lu, Chen, Yu, Jiang, Chen | CC BY-NC-ND 4.0 | An unchanged control in each batch, and every override kept as an attributed record |
| FML-bench: A Controlled Study of AI Research Agent Strategies from the Perspective of Search Dynamics (2026) | Zou, Lam, Zhao et al. | arXiv non-exclusive licence | With the next row, the evidence that the grader matters more than the search method |
| Automated Discovery Has No Universally Superior Harness (2026) | Gupta, Lei, Lu et al. | arXiv non-exclusive licence | The same |
Measurement and statistics
Section titled “Measurement and statistics”The judge’s verdicts rest on paired, interleaved blocks timed on log ratios, Student’s t intervals, a few planned looks with the error rate split between them (Bonferroni), an equivalence band for neutral, a noise floor from A/A runs, and confirmation on fresh blocks. These works shaped that design.
| Work | Authors | Licence | What Thermite takes from it |
|---|---|---|---|
| Equivalence Testing for Psychological Research: A Tutorial (2018), AMPPS | Lakens, Scheel, Isager | CC BY, open access | Equivalence testing (two one-sided tests): the equivalence band behind the neutral verdict |
| Always Valid Inference: Bringing Sequential Analysis to A/B Testing (2015), and Peeking at A/B Tests: Why it matters, and what to do about it (KDD 2017) | Johari, Pekelis, Walsh; Johari, Koomen, Pekelis, Walsh | arXiv non-exclusive licence; © ACM | Why looks at the data must be planned: the judge looks after 3, 6 and 9 blocks, with the error rate split between them |
| Discrete Sequential Boundaries for Clinical Trials (1983), Biometrika | Lan, DeMets | © Biometrika Trust | The same, group-sequential tests |
| The Optimizer’s Curse: Skepticism and Postdecision Surprise in Decision Analysis (2006), Management Science | Smith, Winkler | © INFORMS | Why a screened win is confirmed on fresh data before it counts |
| Winner’s Curse: Bias Estimation for Total Effects of Features in Online Controlled Experiments (KDD 2018) | Lee, Shen | © ACM | The same |
| Rigorous Benchmarking in Reasonable Time (ISMM 2013) | Kalibera, Jones | © ACM | Repeats as separate processes, interleaved, and the noise of a machine measured, not assumed |
| Scientific Benchmarking of Parallel Computing Systems: Twelve Ways to Tell the Masses when Reporting Performance Results (SC’15) | Hoefler, Belli | © ACM | The same |
| Robust Benchmarking in Noisy Environments (2016) | Chen, Revels | arXiv non-exclusive licence | The same |
| Producing Wrong Data Without Doing Anything Obviously Wrong! (ASPLOS 2009) | Mytkowicz, Diwan, Hauswirth, Sweeney | © ACM | Why the change and the champion are timed in the same job, on the same device, in random order |
| Generalization in Adaptive Data Analysis and Holdout Reuse (2015) | Dwork, Feldman, Hardt et al. | arXiv non-exclusive licence | Held-out cases that no agent sees, checked only when a change is confirmed |
| Trustworthy Online Controlled Experiments (2020), a book | Kohavi, Tang, Xu | © Cambridge University Press | A/A tests, and Twyman’s law: a surprising gain is checked before it is believed (the auditor’s trigger) |
| An Efficient Constraint Handling Method for Genetic Algorithms (2000), CMAME | Deb | © Elsevier | Feasibility first: hard constraints are checked before the objective |
| A Precision Approximation of the Gamma Function (1964), SIAM J. Numer. Anal. B | Lanczos | © SIAM | The Lanczos approximation, with g = 7, behind the judge’s t distribution (src/core/stats.ts) |
| Generating Bessel Functions in Mie Scattering Calculations Using Continued Fractions (1976), Applied Optics, and Coulomb and Bessel Functions of Complex Arguments and Order (1986), J. Comput. Phys. | Lentz; Thompson, Barnett | © Optica; © Elsevier | The modified Lentz method for continued fractions, behind the incomplete beta function (src/core/stats.ts) |
SciPy and NumPy (both BSD-3-Clause) computed the reference values the statistics tests compare with (scripts/stats-reference.py); only the numbers are in the repository.
Kernel evaluation and reward hacking
Section titled “Kernel evaluation and reward hacking”These showed that an agent graded by something it can reach will find a way to game it. They are why the judge owns the seeds, the reference, the timer and the result channel, why a candidate runs in its own process, and why Thermite has an auditor.
| Work | By | Licence | What Thermite takes from it |
|---|---|---|---|
| KernelBench: Can LLMs Write Efficient GPU Kernels? (2025), and its code | Ouyang, Guo, Arora et al.; Stanford Scaling Intelligence Lab | CC BY 4.0; code MIT | How kernel candidates game a benchmark, and how a benchmark checks correctness |
| KernelBench-Verified: Do LLM-Generated Kernels Actually Beat PyTorch? (2026), and its code | Zhang, Yu, Wang et al.; Meta | CC BY 4.0; code MIT | Stricter checks of a kernel’s result |
| Sakana AI’s The AI CUDA Engineer (February 2025, archived), whose update says the system had found a memory exploit in the evaluation code; TechCrunch’s report on it; and the follow-up, Towards Robust Agentic CUDA Kernel Benchmarking, Verification, and Optimization (robust-kbench, 2025) | Sakana AI; Kyle Wiggers; Lange, Sun, Prasad et al. | © Sakana AI; © TechCrunch; the paper CC BY 4.0 | A judge outside the candidate’s reach, and checks that the changed code really ran |
| Hardening Agent Benchmarks with Adversarial Hacker-Fixer Loops (2026) | Zhong, Segal, Bercovich et al. | CC BY 4.0 | The same |
| Measuring Automated Kernel Engineering and Recent Frontier Models Are Reward Hacking (2025), posts | Tao Lin; Von Arx, Chan, Barnes; METR | © METR | The same |
| GPU MODE kernelbot and reference kernels | GPU MODE | June 9 Researcher Reciprocity License 1.0 (MIT before 2026-06-09) | How a kernel competition scores and checks submissions |
| nvbench, CUTLASS’s profiler, Triton’s autotuner, Kernel Tuner | NVIDIA; the Triton project; the Kernel Tuner project | Apache-2.0; BSD-3-Clause; MIT; Apache-2.0 | How kernels are timed and tuned |
| TVM and its papers: TVM (OSDI 2018), Learning to Optimize Tensor Programs (AutoTVM), Ansor, and Tensor Program Optimization with Probabilistic Programs (MetaSchedule) | The Apache Software Foundation; Chen et al.; Zheng et al.; Shao et al. | Apache-2.0; the papers arXiv non-exclusive licence | Search over program variants, measured on the device |
Deep research and evidence
Section titled “Deep research and evidence”Read for the redesign of research mode (goal 117); each is studied, none is used as code.
| Work | Authors | Licence | What Thermite takes from it |
|---|---|---|---|
| Assisting in Writing Wikipedia-like Articles From Scratch with Large Language Models (STORM, 2024) | Shao, Jiang, Kanell et al. | arXiv non-exclusive licence | Read: questions asked from several perspectives, and an outline drawn from the evidence before writing |
| WebWeaver: Structuring Web-Scale Evidence with Dynamic Outlines for Open-Ended Deep Research (2025) | Li, Guan, Zhang et al. | CC0 1.0 | Read: an outline revised as evidence arrives, each section citing evidence ids, and each section written with only its own evidence |
| Deep Researcher with Test-Time Diffusion (TTD-DR, 2025) | Han, Chen, CuiZhu et al. | CC BY 4.0 | Read: a draft answer kept and revised at each step, which chooses the next search |
| IterResearch: Rethinking Long-Horizon Agents with Interaction Scaling (2025) | Chen, Qiao, Chen et al. | CC BY 4.0 | Read: an evolving report as the agent’s memory, rebuilt each round, for very long runs |
| Language agents achieve superhuman synthesis of scientific knowledge (PaperQA2, 2024) | Skarlinski, Cox, Laurent et al. | CC BY-SA 4.0 | Read: evidence summaries scored for relevance, “insufficient information” counted apart from a wrong answer, and a search for contradicting papers |
| Accelerating scientific discovery with Co-Scientist (2025) | Gottweis, Weng, Daryin et al. | CC BY 4.0 | Read: hypotheses ranked by tournament, repeats merged by proximity, and a supervisor that weights work by the state of the queue |
| Why Do Multi-Agent LLM Systems Fail? (MAST, 2025) | Cemri, Pan, Yang et al. | CC BY-NC-ND 4.0 | Read: not knowing when to stop and repeating steps as leading failures of multi-agent systems |
| GRADE: an emerging consensus on rating quality of evidence and strength of recommendations (BMJ, 2008) | Guyatt, Oxman, Vist et al. | © BMJ Publishing Group | Read: certainty rated on a scale (high, moderate, low, very low) instead of a conclusion withheld |
Agent harness practice
Section titled “Agent harness practice”| Work | By | Licence | What Thermite takes from it |
|---|---|---|---|
| Effective harnesses for long-running agents, a post | Anthropic | © Anthropic | Read on long agent work across many context windows, kept in files and git rather than in one conversation |
| Infrastructure noise in agentic coding evals, a post | Anthropic | © Anthropic | Read on how the machine’s noise moves an agent evaluation’s results |
| Don’t Build Multi-Agents (2025), a post | Walden Yan, Cognition | © Cognition | Read on agents that split one task between them. Thermite’s workers each own a whole experiment, and one planner coordinates them |
| Ralph Wiggum as a “software engineer”, a post | Geoffrey Huntley | © Geoffrey Huntley | Read: the plain loop that runs an agent again and again on one task |
| LLM wiki, a gist | Andrej Karpathy | No licence stated | Read: a knowledge base that agents read and add to |
Systems Thermite studied
Section titled “Systems Thermite studied”Autoresearch systems
Section titled “Autoresearch systems”Thermite’s research started from awesome-autoresearch (Weco AI, CC0-1.0), a list of autoresearch projects.
| System | By | Licence | What Thermite takes from it |
|---|---|---|---|
autoresearch, and its agenthub branch | Andrej Karpathy | The README says MIT; there is no LICENSE file | The loop Thermite generalizes: an agent changes code, a run measures it, the best is kept. Thermite moves judging out of the agent’s reach and keeps every discard. From agenthub: queries over a run’s lineage |
| pi-autoresearch | David Cortés, Tobi Lütke | MIT | The closest earlier method. Its lessons are what Thermite fixes: verdicts an agent writes, resets that destroy work, and fixed caps on turns and discards. From it, a hill climb’s first step: a baseline run of the unmodified code before any experiment, as Karpathy’s autoresearch also starts. In Thermite the judge runs it, not an agent’s prompt, it measures every metric on every case, and the guards hold against it |
| autoresearch | Udit Goenka | MIT | The statistics of a regression gate, and the fork round every 20 epochs when a run has no wall budget |
| evo | evo-hq | Apache-2.0 | Gates that pass down to child experiments, the held-out floor, and an experiment’s brief in four parts; invalidating a node invalidates what grew from it |
| AutoKernel, and its paper | RightNow AI | MIT; CC BY 4.0 | Correctness checks in stages, a cache flush between timed runs, and roofline checks |
| autoresearch-mlx | trevin-creator | MIT | A keep gate that takes noise into account, and never scoring the same code twice |
| autoresearch-at-home | mutable-state-inc | The README says MIT; there is no LICENSE file | How workers claim work so it is not done twice, and a key that says which results compare |
| autoresearch-win-rtx | jsegov | The README says MIT; there is no LICENSE file | Compared |
| OpenResearch | alphaXiv | MIT | Research mode’s first proposals: an experiment tree, and runs named by their content |
| CORAL | Human Agent Society | Apache-2.0 | The code of the paper above |
| ResearchLedger | Rajesh Kumar | MIT | The code of the Transactional Research Ledger |
| AutoResearch | EvoMap | Apache-2.0 | The code of its paper above |
| AutoResearchEval | Prentis AI, Titan Research Labs | No licence for the whole; its agent-as-a-judge/ folder is MIT | The code of its paper above |
| AutoResearch-MLIP | pic-ai-robotic-chemistry | No licence stated | The code of its paper above |
| Agon, and its paper | AutoResearch Factory | MIT; arXiv non-exclusive licence | Compared |
| SimplexFold, agent-digivolve-harness-loop, auto-agent | Chris Hayduk; Matthew Zeng; Alfonso Graziano | MIT each | Their research protocols and verified reporting, read for ideas |
Program-evolution and research-agent systems
Section titled “Program-evolution and research-agent systems”Thermite studied these and took none of them as its engine. Searching a population, or keeping a Pareto set of champions, is a proposed goal (051), not built.
| System | By | Licence | What Thermite takes from it |
|---|---|---|---|
| FunSearch: Mathematical discoveries from program search with large language models (Nature, 2023), and its code | Romera-Paredes et al.; Google DeepMind | Paper: CC BY 4.0; code Apache-2.0, other material CC BY 4.0 | An evaluator that code owns, and a program database |
| AlphaEvolve: A coding agent for scientific and algorithmic discovery (2025), and its results | Novikov et al.; Google DeepMind | CC BY-NC-ND 4.0; results Apache-2.0 and CC BY 4.0 | Evolving code against automated evaluators |
| OpenEvolve | Asankhaya Sharma | Apache-2.0 | Compared; also a lesson in evaluator integrity: a change its own benchmark never applied |
| ShinkaEvolve: Towards Open-Ended And Sample-Efficient Program Evolution (2025), and its code | Lange, Imajuku, Cetin; Sakana AI | CC BY 4.0; code Apache-2.0 | Compared: sample-efficient evolution |
| EvoX: Meta-Evolution for Automated Discovery (2026), and its code, SkyDiscover | Liu, Agarwal, Maheswaran et al. | CC BY 4.0; code Apache-2.0 | Compared |
| CodeEvolve (2025), and its code | Assumpção, Ferreira, Campos et al.; Inter&Co | arXiv non-exclusive licence; code Apache-2.0 | Compared |
| PACEvolve, DeltaEvolve and KernelEvolve | Their authors | CC BY 4.0 each | Compared |
| LLM4AD and LLM4AD_Next | Optima, City University of Hong Kong | BSD-2-Clause; BSD-3-Clause | Compared |
| GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning (2025), and its code | Agrawal, Tan, Soylu et al. | arXiv non-exclusive licence; code MIT | Pareto selection between candidates |
| Darwin Gödel Machine: Open-Ended Evolution of Self-Improving Agents (2025), and its code | Zhang, Hu, Lu et al. | CC BY 4.0; code Apache-2.0 | Keeping every variant, not only the best |
| MAP-Elites: Illuminating search spaces by mapping elites (2015) | Mouret, Clune | arXiv non-exclusive licence | Quality diversity, for the proposed population search |
| The AI Scientist and The AI Scientist-v2, with their code | Lu, Lu, Lange et al.; Yamada, Lange, Lu et al.; Sakana AI | CC BY 4.0; code under the AI Scientist Source Code License 1.0, not used | Compared; their code’s licence is why none of it is used |
| AIDE: AI-Driven Exploration in the Space of Code (2025), and aideml | Jiang, Schmidt, Srikanth et al.; Weco AI | CC BY 4.0; code MIT | A tree of solutions, each with its result |
| MLAgentBench, RD-Agent, Agent Laboratory, AgentRxiv | Stanford SNAP; Microsoft; Samuel Schmidgall; Schmidgall, Moor | MIT each; AgentRxiv CC BY 4.0 | Their workflows, compared |
| AIRA-dojo, and its paper, AI Research Agents for Machine Learning: Search, Exploration, and Generalization in MLE-bench (2025) | Toledo, Hambardzumyan, Josifoski et al.; Meta | CC BY-NC 4.0; CC BY-NC-SA 4.0 | Compared only; its code’s licence is non-commercial, and none of it is used |
| SwarmResearch: Orchestrating Coding Agents for Open-Ended Discovery, MOAE: Multi-Objective Agent Evolution with Pareto-Preserving Search, AIRA₂: Overcoming Bottlenecks in AI Research Agents, AI-Research Agents in the Wild, and the survey AutoResearch AI: Towards AI-Powered Research Automation for Scientific Discovery (2026 each) | Virk et al.; Jiang et al.; Hambardzumyan et al.; Komissarov, Ustyuzhanin; Tie et al. | CC BY 4.0, except MOAE: arXiv non-exclusive licence | Read and compared; the survey for its vocabulary |
Coding agents compared
Section titled “Coding agents compared”OpenHands Software Agent SDK (MIT) and mini-swe-agent (MIT) were compared as worker harnesses. Neither was taken.
Fleet, rig and tracking tools compared
Section titled “Fleet, rig and tracking tools compared”Thermite compared these from their public documentation. It uses none of their code.
- Adding and managing rigs: herdr (Apache-2.0), whose consent before it installs anything on a machine, and its pinned host keys, are the model for Add a rig. Also SkyPilot (Apache-2.0), dstack (MPL-2.0), Coder (AGPL-3.0), Gitpod and Ona (AGPL-3.0), Rancher and Fleet (Apache-2.0), the Argo CD agent (Apache-2.0), Portainer (Zlib), Kamal (MIT), Coolify (Apache-2.0), CapRover (Apache-2.0), Dokku (MIT), disco (MIT), Ansible (GPL-3.0), KubeRay, Kueue, Determined, Volcano and HAMi (Apache-2.0 each), NVIDIA Run:ai, GitHub’s Actions Runner Controller (Apache-2.0), GitLab Runner, Buildkite’s agent stack for Kubernetes (MIT), and Tailscale’s auth keys (BSD-3-Clause). From them: join tokens swapped on first contact, and slots scoped to a namespace.
- Orchestration and experiment tracking: Temporal (MIT), Ray and Ray Tune (Apache-2.0), Optuna (MIT), Ax and BoTorch (MIT), OSS Vizier (Apache-2.0), MLflow (Apache-2.0), Weights & Biases (MIT), Aim (Apache-2.0), ClearML (Apache-2.0), NATS JetStream (Apache-2.0) and DBOS (MIT). Thermite keeps its own ledger; Optuna’s and Ax’s data models informed the trial’s.
- Metrics: Prometheus (Apache-2.0)‘s advice on label cardinality: the record stays in the ledger, and metrics carry only bounded series.
- Documentation tools: Docusaurus, VitePress, Material for MkDocs and Zensical (MIT each). Starlight was chosen.
Engines the earlier campaigns tuned
Section titled “Engines the earlier campaigns tuned”Thermite grew out of long hill-climbing campaigns on inference kernels. They tuned these engines, and the methods they taught (prove that the changed code ran, measure the noise of the device, check output against a reference) became the judge’s. Thermite uses none of their code. The papers those campaigns read are in their own records, not here.
llama.cpp and ggml (MIT), whose test-backend-ops and llama-perplexity --kl-divergence were the campaigns’ correctness gates; llamAmpere (MIT); llama-cpp-p100-patches (MIT); ik_llama.cpp (MIT); ExLlamaV3 (MIT); vLLM (Apache-2.0); SGLang (Apache-2.0).
Programs the agents run in
Section titled “Programs the agents run in”| Program | By | Licence | How Thermite uses it |
|---|---|---|---|
Pi: @earendil-works/pi-agent-core and @earendil-works/pi-ai | Mario Zechner, Earendil Works | MIT | Built into Thermite: the default worker harness, and the model client for the planner and Pi’s workers. Thermite patches pi-ai’s parse of a tool call’s arguments while they stream, at install (scripts/patch-pi-ai.mjs, goal 140) |
| OpenCode | Anomaly | MIT | A worker harness, in the harness and supervisor images, with its licence at /usr/local/share/doc/opencode/ |
| Codex CLI | OpenAI | Apache-2.0 | A worker harness, in the harness and supervisor images, with its LICENSE and NOTICE at /opt/codex/. Control reads a ChatGPT plan’s usage from the endpoint the Codex CLI reads it from, in the shape the CLI reads it. Its NOTICE credits code derived from Ratatui (MIT, © 2016-2022 Florian Dehau, © 2023-2025 The Ratatui Developers) |
| Claude Code | Anthropic | Proprietary: © Anthropic PBC, all rights reserved; use is under Anthropic’s Commercial Terms of Service | A worker harness, for a Claude subscription. It is in an image only when that image is built with CLAUDE_CODE_VERSION; no published image has it |
| Claude Agent SDK for TypeScript | Anthropic | Proprietary: © Anthropic PBC, all rights reserved; use is under Anthropic’s legal agreements | Studied, not used: its type for Claude Code’s rate-limit event (one window in each event, its utilization and resetsAt), which the harness reads for a Claude subscription’s usage windows |
In the images
Section titled “In the images”| Software | By | Licence | Where |
|---|---|---|---|
Node.js, from the official node image on Debian bookworm | The OpenJS Foundation and Node.js contributors | MIT, with the licences of what it bundles (V8, OpenSSL, SQLite and others) in its LICENSE file | Control, the harness and the supervisor. Thermite’s ledgers and stores use Node’s built-in SQLite |
CUDA, from NVIDIA’s nvidia/cuda devel images: CUDA 12.6 on Ubuntu 22.04 and CUDA 13.0 on Ubuntu 24.04 | NVIDIA | NVIDIA Deep Learning Container License, and the licences of its open-source parts | The CUDA 12 and CUDA 13 harness images, and the rig image built on the CUDA 12 one. NVIDIA’s software in them stays under NVIDIA’s licence, which anyone who pulls or runs those images accepts |
| kubectl | The Kubernetes Authors | Apache-2.0 | Control, with its licence at /usr/local/share/doc/kubectl/LICENSE |
| tini | Thomas Orozco | MIT | Every image, as the first process |
| Debian and Ubuntu packages: git, GCC, GNU Make, CMake, Ninja, ccache, Python 3 with NumPy, OpenSSH’s client, util-linux (setpriv, prlimit, taskset), CA certificates, unzip | Their projects, packaged by Debian and Ubuntu | Their own: for example GPL-2.0 for git, GPL-3.0-or-later with the GCC Runtime Library Exception for GCC, BSD-3-Clause for CMake and NumPy, Apache-2.0 for Ninja | The harness (to build and run kits) and control and the supervisor (git and SSH). Each package’s terms are in /usr/share/doc/<package>/copyright in the image |
thermite-devfence (containers/harness/devfence.c) is Thermite’s own code, built against the Linux kernel’s Landlock interface.
Libraries
Section titled “Libraries”What Thermite runs
Section titled “What Thermite runs”| Library | By | Licence | What it does in Thermite |
|---|---|---|---|
| Hono and @hono/node-server | Yusuke Wada | MIT | The HTTP server and routes of control, the harness and the supervisor |
| MCP TypeScript SDK | The Model Context Protocol project (Anthropic) | MIT for the npm package Thermite uses; the repository is moving to Apache-2.0 | Control’s MCP server, the harness’s MCP gateway and the MCP client |
| Zod | Colin McDonnell | MIT | Every schema: contracts, kits, commands, reports |
| Pi’s packages, above | Mario Zechner | MIT | With their own dependencies, among them the AWS SDK for JavaScript, Google’s Gen AI SDK, the OpenAI SDK (Apache-2.0 each) and protobuf.js (BSD-3-Clause) |
Every package Thermite runs, with those packages’ own dependencies, is under a permissive licence: MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, 0BSD or the Unlicense. None is copyleft. package-lock.json lists each one, with its version.
What builds and checks Thermite
Section titled “What builds and checks Thermite”TypeScript (Microsoft, Apache-2.0), Biome (MIT OR Apache-2.0), Node.js’s type definitions (MIT), and gitleaks (MIT) for the secret scan. CI uses GitHub’s own actions (MIT) and Docker’s (Apache-2.0).
What builds the documentation site
Section titled “What builds the documentation site”| Library | By | Licence |
|---|---|---|
| Astro and Starlight | The Astro project; Chris Swithinbank | MIT |
| Pagefind (search), Expressive Code and Shiki (code blocks) | Their projects | MIT |
| Mermaid and astro-mermaid (diagrams) | Knut Sveidqvist and contributors; Jose Sebastian | MIT. Mermaid’s diagrams use DOMPurify, MPL-2.0 OR Apache-2.0, in the reader’s browser |
| starlight-links-validator and starlight-llms-txt | HiDeoo; Chris Swithinbank | MIT |
| sharp (images) | Lovell Fuller | Apache-2.0; its libvips binaries are LGPL-3.0-or-later, used only to build the site |
| Lightning CSS, through Vite | The Parcel project | MPL-2.0, used only to build the site |
docs/_site/package-lock.json lists every package, with its licence and version.
Design
Section titled “Design”- The dashboard’s look follows Magnesium (MIT), the maintainers’ agent dashboard, which is a fork of T3 Code (MIT, © 2026 T3 Tools Inc.): its design tokens, its status words, its tiles and its session board. The colour values are those of Tailwind CSS’s palette (MIT).
- The icons and the flame are Thermite’s own.
Standards and guides
Section titled “Standards and guides”| Work | By | Licence | How Thermite uses it |
|---|---|---|---|
| Diátaxis | Daniele Procida | © Daniele Procida; its source is CC BY-SA 4.0 | The documentation site’s four kinds of page |
| ASD-STE100 Simplified Technical English, Issue 9 | ASD’s Simplified Technical English Maintenance Group | © ASD, all rights reserved; a trademark of ASD; its notice forbids redistributing the standard without the group’s written permission | The dashboard’s decision cards and the reports are written after it. A research run’s final paper is written in it, and checked against it by a checker the deployment provides (THERMITE_STE_CHECKER), whose guide the final writer reads when it has one; without a checker, the writer gets short rules in Thermite’s own words. Thermite ships no checker, none of the standard’s vocabulary and none of its text |
| Contributor Covenant 2.1 | The Organization for Ethical Source | CC BY 4.0 | Thermite’s code of conduct, adopted by reference |
| Model Context Protocol | Anthropic and contributors | See the MCP TypeScript SDK, above | Control’s MCP server, and the MCP servers a campaign’s agents use |
| llms.txt | Jeremy Howard, Answer.AI | No licence stated on the page; its repository is Apache-2.0 | The site’s llms.txt and llms-full.txt |
| SPDX license expressions and OCI image annotations | The Linux Foundation; the Open Container Initiative | CC BY 3.0; Apache-2.0 | The licence labels on the published images |
| Semantic Versioning | Tom Preston-Werner | CC BY 3.0 | The release’s version tags |
| IETF RFCs: Ed25519 (RFC 8032), HKDF (RFC 5869), PKCE (RFC 7636), dynamic client registration (RFC 7591), timestamps (RFC 3339), private addresses (RFC 1918), robots.txt (RFC 9309) | The IETF | The IETF Trust’s licence | Signed commands, sealed secrets, MCP sign-in, and the research fetcher |
| Public Suffix List | Mozilla and its contributors | MPL-2.0 | The idea of a registrable domain, and a short table of its suffixes of more than one label (such as co.uk and github.io), written in Thermite’s code, so that a research run’s corroboration counts the sites claims come from, not their hosts. Thermite ships no copy of the list |
| AES-256-GCM (NIST SP 800-38D) | NIST | A U.S. government work | Sealed secrets |
| Container Device Interface (CDI) | The CNCF’s Container Orchestrated Devices working group | Apache-2.0 | How Podman gives a rig’s harness its NVIDIA GPUs, as nvidia.com/gpu devices: on machines that control sets rigs up on, and in the local stack’s compose.gpu.yaml |
Services Thermite works with
Section titled “Services Thermite works with”- Model providers: the APIs of Anthropic and OpenAI, Claude and ChatGPT subscriptions, OpenRouter and Nous Portal (whose model lists give prices), OpenCode Zen, and any server with an OpenAI-compatible API, such as Ollama, vLLM or LiteLLM.
- Compute and files: RunPod, through its REST API and proxy; Hugging Face, for model files.
- A knowledge base, as an example of an MCP server: GBrain (Garry Tan, MIT).
- The project: GitHub, for the repository, Actions, the container registry, Dependabot and private vulnerability reports; Cloudflare Pages, which serves the documentation site; Fathom Analytics, which counts the site’s visits without cookies; Discord, for the community; shields.io, for the badges.
- Images: Docker Hub for the base images, and Quay for a test image.
Tools Thermite is tested with
Section titled “Tools Thermite is tested with”Podman, Docker and their compose tools; Kubernetes and kind (Apache-2.0 each), with systemd’s Quadlet units for rigs on machines; NVIDIA’s device plugin and DRA driver (Apache-2.0); NVIDIA’s container toolkit (Apache-2.0), which gives containers the GPUs, through its runtime for Docker and its CDI spec for Podman, and which thermite doctor and thermite local init check for; Fedora’s and Debian’s images as stand-in machines; uv (Apache-2.0 OR MIT) to run the statistics reference script; and Chrome, which takes the documentation’s screenshots. A manual long-run test starts its research from two Wikipedia articles (CC BY-SA 4.0), which it fetches when it runs.
The maintainers’ own public projects
Section titled “The maintainers’ own public projects”- Magnesium (MIT): the dashboard’s design, above, and its notes on Claude and Codex sign-in, read for subscriptions.
- skills (MIT): the maintainers’ skills for coding agents, among them the ones for Simplified Technical English and for writing documentation.
What this repository holds from others
Section titled “What this repository holds from others”Thermite’s repository holds no code, text or data copied from another project, except:
- the licence texts it ships with programs in its images:
containers/control/kubectl/LICENSE(Apache-2.0, from Kubernetes),containers/harness/opencode/LICENSE(MIT, © 2025 opencode), andcontainers/harness/codex/LICENSEandNOTICE(Apache-2.0, © 2025 OpenAI, with the Ratatui notice above); - the dashboard’s colour tokens, from T3 Code through Magnesium, above;
- the statistics tests’ reference values, numbers computed with SciPy (
src/testing/data/stats-reference.json).
The maintainers’ own tooling in .agents/ carries its own notices, such as Matt Pocock’s skills (MIT).