AI-powered autonomous ML research framework — agent runs experiments against frozen evaluation contracts on your existing pipelines.
Project description
🥋 Dojo — An AI-powered autonomous ML research framework.
Run controlled, reproducible ML experiments on your existing pipelines and build a memory of what actually works.
What is Dojo?
You define a domain — a research area pointing at your data with a fixed evaluation contract. An AI agent runs experiments inside that contract: writing training code, calling frozen load_data and evaluate tools, logging metrics, and recording findings as durable knowledge atoms.
The agent owns the training code. The framework owns evaluation. That separation is what makes the metrics trustworthy run-over-run, and what makes it safe to leave the agent unsupervised.
What's a domain?
A domain is a frozen research contract: one load_data + one evaluate + one workspace. Many experiments live inside it.
- Create a new domain when the data source, target variable, or evaluation metric changes.
- Don't create a new domain when you want to try a new model, hyperparameter, or feature — that's an experiment, and experiments are the agent's job.
⚠️ Proof of Concept — under active development. Single-tenant, local-first, open source. Today only
RegressionTaskis supported; more task types are coming once regression is solid.
Quickstart — recommended path
The recommended way to onboard a real project is the dojo-onboard Claude Code skill. It reads your code, asks a few targeted questions about the data + evaluation, writes PROGRAM.md + SETUP.md from the conversation, and drives the framework to generate + verify + freeze the contract.
uv tool install dojoml # one-time
dojo skill install dojo-onboard # one-time, requires Claude Code
cd path/to/your/python/project
claude # in Claude Code, run: /dojo-onboard
dojo run # after the skill finishes
Prerequisites:
- Python 3.13+
- Claude Code installed (for the skill path)
- The
claudeCLI logged in — Dojo shells out to it for agent runs (noANTHROPIC_API_KEYneeded)
Fallback — dojo onboard (no Claude Code)
If you don't have Claude Code, the built-in Typer wizard does the same setup interactively:
uv tool install dojoml
cd path/to/your/python/project
dojo onboard # interactive prompts
dojo run
For scripted / CI use, dojo onboard --non-interactive --name my-project writes default PROGRAM.md + SETUP.md templates and stops; edit the files, then run dojo domain setup.
Try a preset (tire-kicker)
To see Dojo work end-to-end on a canned dataset with no existing project:
mkdir housing && cd housing
dojo onboard --preset california_housing
dojo run --max-turns 30
Configuration
.dojo/config.yaml in your project root:
agent:
backend: claude # "stub" (no LLM, deterministic) or "claude"
tracking:
backend: file # "file" or "mlflow"
Env-var overrides use double underscore for nested fields: DOJO_AGENT__BACKEND=stub, DOJO_TRACKING__BACKEND=mlflow.
Pointers
- CLAUDE.md — architecture, directory map, conventions, recipes.
- docs/ARTIFACTS.md — per-run artifacts and how tracking forwards them.
- docs/HTTP_API.md — HTTP API surface (also discoverable at
/docswhendojo startis running). - docs/MASTER_PLAN.md — vision and design.
- docs/RELEASING.md — release flow.
Development
Clone, then:
just dev # install backend (uv sync) + frontend (npm install)
just test # pytest -v
just lint # ruff check + format check
Full server + web UI dev loop: just run-stub (or just run-claude). Backend at http://localhost:8000, frontend at http://localhost:5173. The React frontend is not bundled in the PyPI release yet — run it from a checkout.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dojoml-0.0.21.tar.gz.
File metadata
- Download URL: dojoml-0.0.21.tar.gz
- Upload date:
- Size: 116.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41017dbca08d29d68fa5a84123bc882d437e6ba641fefbf9c6c277655fd439fb
|
|
| MD5 |
bdaae40bc2fa4a55a6099c735dc92e1e
|
|
| BLAKE2b-256 |
676d790adc0082122f832267b060bd726eab706b07d5c3ab58e324f65df43840
|
Provenance
The following attestation bundles were made for dojoml-0.0.21.tar.gz:
Publisher:
release.yml on Garsdal/Dojo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dojoml-0.0.21.tar.gz -
Subject digest:
41017dbca08d29d68fa5a84123bc882d437e6ba641fefbf9c6c277655fd439fb - Sigstore transparency entry: 1534624858
- Sigstore integration time:
-
Permalink:
Garsdal/Dojo@e86b6718869a2c3ce696ededbeabbd7cf898eb77 -
Branch / Tag:
refs/tags/v0.0.21 - Owner: https://github.com/Garsdal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e86b6718869a2c3ce696ededbeabbd7cf898eb77 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dojoml-0.0.21-py3-none-any.whl.
File metadata
- Download URL: dojoml-0.0.21-py3-none-any.whl
- Upload date:
- Size: 161.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0404c4f41a0dbc7463facc6bb0cda3a021b9220619313949cc0d864b190c488a
|
|
| MD5 |
a030d2198bf51bf8906c30c82b8b9754
|
|
| BLAKE2b-256 |
7e45422c83451d77a40c6beea63808cc595078c74719124b9a1131d146bb03d0
|
Provenance
The following attestation bundles were made for dojoml-0.0.21-py3-none-any.whl:
Publisher:
release.yml on Garsdal/Dojo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dojoml-0.0.21-py3-none-any.whl -
Subject digest:
0404c4f41a0dbc7463facc6bb0cda3a021b9220619313949cc0d864b190c488a - Sigstore transparency entry: 1534624971
- Sigstore integration time:
-
Permalink:
Garsdal/Dojo@e86b6718869a2c3ce696ededbeabbd7cf898eb77 -
Branch / Tag:
refs/tags/v0.0.21 - Owner: https://github.com/Garsdal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e86b6718869a2c3ce696ededbeabbd7cf898eb77 -
Trigger Event:
push
-
Statement type: