{"id":50310411,"url":"https://github.com/mudler/universal-ml-intern","last_synced_at":"2026-05-28T20:30:49.344Z","repository":{"id":352966618,"uuid":"1217394553","full_name":"mudler/universal-ml-intern","owner":"mudler","description":"A universal ml-intern implementation that works just with SKILLS and AGENTS.md for any agent harness","archived":false,"fork":false,"pushed_at":"2026-04-21T22:27:24.000Z","size":78,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T23:32:30.019Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mudler.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-21T20:58:03.000Z","updated_at":"2026-04-21T22:27:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mudler/universal-ml-intern","commit_stats":null,"previous_names":["mudler/universal-ml-intern"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mudler/universal-ml-intern","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mudler%2Funiversal-ml-intern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mudler%2Funiversal-ml-intern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mudler%2Funiversal-ml-intern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mudler%2Funiversal-ml-intern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mudler","download_url":"https://codeload.github.com/mudler/universal-ml-intern/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mudler%2Funiversal-ml-intern/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33626136,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-28T20:30:49.265Z","updated_at":"2026-05-28T20:30:49.334Z","avatar_url":"https://github.com/mudler.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# universal-ml-intern\n\nA rework of Hugging Face's [ml-intern](https://github.com/huggingface/ml-intern) that drops the bespoke agent loop and lets **any agentic harness** drive the same autonomous-ML-research workflow — Claude Code, Codex, Cursor, Aider, or anything else that honors the [AGENTS.md](https://agents.md) convention.\n\nml-intern ships a complete custom stack: its own agentic loop, LLM client, MCP client, sandbox, context manager, doom-loop detector, approval flow, and terminal UI. Modern agentic CLIs already provide all of that. This project keeps the parts of ml-intern that *aren't* reinventable — the system-prompt discipline, the skill set, the ported research/jobs/repos tooling — and repackages them as plain scripts + skill markdown + a standard `AGENTS.md` contract.\n\nIn short: **same ML-intern behavior, no custom harness.** You bring the agent; this brings the prompts, skills, and tools.\n\n## What this is and isn't\n\n**Is:** `AGENTS.md` + skill definitions + ported Python scripts for paper search, citation graphs, GitHub code discovery, HF docs/datasets/jobs/repos. Designed to be cloned into *any* project and loaded by any harness that reads `AGENTS.md` at repo root. A `CLAUDE.md` symlink is included so Claude Code also picks it up automatically as project memory.\n\n**Isn't:** an agent loop, a sandbox, a chat UI, or a bespoke LLM client. Those already exist in your harness — we don't re-implement them.\n\n## Layout\n\n```\nuniversal-ml-intern/\n├── AGENTS.md                 # the contract — read this first\n├── README.md\n├── pyproject.toml            # Python deps (httpx, bs4, huggingface_hub, …)\n├── bootstrap.sh              # uv sync + optional skills symlink (Claude Code: ~/.claude/skills)\n├── CLAUDE.md → AGENTS.md     # symlink so Claude Code auto-loads the same contract\n├── .env.example              # HF_TOKEN, GITHUB_TOKEN, S2_API_KEY\n│\n├── skills/                   # markdown skill definitions, one dir per skill\n│   ├── hf-papers/SKILL.md\n│   ├── github-code/SKILL.md\n│   ├── hf-docs/SKILL.md\n│   ├── hf-datasets/SKILL.md\n│   ├── hf-jobs/SKILL.md\n│   ├── hf-repos/SKILL.md\n│   ├── research-subagent/SKILL.md\n│   └── ml-research-loop/SKILL.md\n│\n└── scripts/                  # the actual tool implementations\n    ├── papers.py             # 11 ops: trending, search, read_paper, citation_graph, …\n    ├── find_examples.py      # fuzzy file-search in GitHub repos\n    ├── read_file.py          # GitHub file read with line ranges + ipynb→md\n    ├── list_repos.py         # list+sort user/org repos\n    ├── hf_docs.py            # explore + fetch HF library docs\n    ├── inspect_dataset.py    # one-shot HF dataset inspector\n    ├── hf_jobs.py            # submit / monitor HF jobs\n    ├── hf_repo_files.py      # list / read / upload / delete on HF repos\n    └── hf_repo_git.py        # branches / tags / PRs / repo mgmt on HF repos\n```\n\n## The `program.md` convention\n\nAGENTS.md defines the generic contract. Each specific experiment run defines its own `program.md` at the working directory root — goal, metrics, keep/discard criteria, output format. AGENTS.md tells the agent to honor it if present.\n\nMinimal example:\n\n```markdown\n# program.md — quantization sweep, june-run-1\n\n## Goal\nFind a quantization scheme that beats Q4_K_M perplexity on wikitext-2\nat ≤80% of its file size, on Qwen3.5-35B-A3B.\n\n## Output\nAppend each experiment to `results.tsv` with columns:\ncommit  perplexity  size_mb  tokens_per_sec  quant_type  status  description\n```\n\nThe agent reads AGENTS.md for the loop protocol and `program.md` for *this run's* task.\n\n## Install\n\n```bash\ngit clone git@github.com:mudler/universal-ml-intern.git\ncd universal-ml-intern\nbash bootstrap.sh                    # installs deps, creates .env, smoke-tests scripts\n$EDITOR .env                         # fill in HF_TOKEN, GITHUB_TOKEN\n```\n\nOr skip manual setup and let the agent bootstrap itself — just open your agentic CLI in the cloned repo and ask it to read `AGENTS.md`. The `Bootstrap` section of AGENTS.md instructs the agent to detect a missing environment and run `bash bootstrap.sh` on its own. You'll still need to provide the tokens.\n\n### Running against a task\n\n```bash\n# In your project root (wherever the experiment code lives):\n#   1. Create a program.md describing the task, metrics, and output format.\n#   2. Point your agent at the AGENTS.md contract:\n@AGENTS.md at /path/to/universal-ml-intern/AGENTS.md\n```\n\n### Skills are used in-place — no install needed\n\nThe skill definitions live in this repo under `skills/\u003cname\u003e/SKILL.md`. AGENTS.md lists every skill with its purpose and a relative path, and the agent loads them on demand via its file-reading tool. **Nothing to install for this to work** — any harness that honors `AGENTS.md` is ready as soon as the repo is cloned and `bootstrap.sh` has been run.\n\nIf your harness auto-loads a per-project memory file, the `CLAUDE.md` symlink (pointing to `AGENTS.md`) means Claude Code picks up the contract without explicit instruction. Codex, Cursor, Aider, and similar harnesses read `AGENTS.md` directly.\n\n### Optional: register skills for harness auto-discovery\n\nOnly useful if your harness has a separate *auto-discovery* mechanism for skills (Claude Code does: skills under `~/.claude/skills/` or `\u003cproject\u003e/.claude/skills/` are auto-invoked by description match). This is a UX convenience, **not a requirement** — the agent can already find and use every skill from the repo tree.\n\nPick one scope:\n\n```bash\n# Per-project (recommended — scoped to one working directory):\nbash bootstrap.sh --link-skills --target /path/to/your/project/.claude/skills\n\n# User-wide (applies to every project):\nbash bootstrap.sh --link-skills                  # → ~/.claude/skills\n```\n\n## Credit\n\nAll tool implementations are adapted from [huggingface/ml-intern](https://github.com/huggingface/ml-intern) (Apache 2.0). The AGENTS.md discipline section is distilled from ml-intern's `system_prompt_v3.yaml`. This repo removes the bespoke agent loop, MCP client, sandbox, and UI — any AGENTS.md-compatible harness provides those for free.\n\n## License\n\nMIT for the harness-agnostic repackaging. Upstream scripts retain ml-intern's Apache 2.0 license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmudler%2Funiversal-ml-intern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmudler%2Funiversal-ml-intern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmudler%2Funiversal-ml-intern/lists"}