@evolvingmachines/evolve 0.0.65 → 0.0.67-train-harness-wave-2026-09-25.20260926.e00a8a6d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/{chunk-DK2MGUPB.js → chunk-DI6LPW2B.js} +2 -2
  2. package/dist/cli/index.cjs +29 -29
  3. package/dist/cli/index.d.cts +3 -3
  4. package/dist/cli/index.d.ts +3 -3
  5. package/dist/cli/index.js +18 -18
  6. package/dist/index.cjs +64 -60
  7. package/dist/index.d.cts +297 -18
  8. package/dist/index.d.ts +297 -18
  9. package/dist/index.js +48 -44
  10. package/dist/{types-B_qmzlMk.d.cts → types-Dj0iMl5V.d.cts} +70 -90
  11. package/dist/{types-B_qmzlMk.d.ts → types-Dj0iMl5V.d.ts} +70 -90
  12. package/harness-capabilities.json +285 -0
  13. package/package.json +9 -6
  14. package/skills/create-adapter/SKILL.md +71 -26
  15. package/skills/create-task/SKILL.md +124 -66
  16. package/skills/evolve/SKILL.md +37 -20
  17. package/skills/evolve-evals/SKILL.md +142 -69
  18. package/skills/evolve-evals/references/cli-reference/agent.md +76 -0
  19. package/skills/evolve-evals/references/cli-reference/analysis.md +78 -0
  20. package/skills/evolve-evals/references/cli-reference/analyze.md +97 -0
  21. package/skills/evolve-evals/references/cli-reference/auth.md +96 -0
  22. package/skills/evolve-evals/references/cli-reference/check.md +157 -0
  23. package/skills/evolve-evals/references/cli-reference/dataset.md +154 -0
  24. package/skills/evolve-evals/references/cli-reference/filesystem.md +168 -0
  25. package/skills/evolve-evals/references/cli-reference/index.md +149 -0
  26. package/skills/evolve-evals/references/cli-reference/job.md +198 -0
  27. package/skills/evolve-evals/references/cli-reference/run.md +188 -0
  28. package/skills/evolve-evals/references/cli-reference/secrets.md +77 -0
  29. package/skills/evolve-evals/references/cli-reference/session.md +56 -0
  30. package/skills/evolve-evals/references/cli-reference/skill.md +52 -0
  31. package/skills/evolve-evals/references/cli-reference/skills.md +85 -0
  32. package/skills/evolve-evals/references/cli-reference/trial.md +115 -0
  33. package/skills/evolve-evals/references/cli-reference/upload.md +72 -0
  34. package/skills/evolve-evals/references/core-concepts/agents.md +101 -0
  35. package/skills/evolve-evals/references/core-concepts/analyze.md +143 -0
  36. package/skills/evolve-evals/references/core-concepts/check.md +116 -0
  37. package/skills/evolve-evals/references/core-concepts/compatibility.md +39 -0
  38. package/skills/evolve-evals/references/core-concepts/compose.md +103 -0
  39. package/skills/evolve-evals/references/core-concepts/datasets.md +234 -0
  40. package/skills/evolve-evals/references/core-concepts/index.md +52 -0
  41. package/skills/evolve-evals/references/core-concepts/jobs.md +223 -0
  42. package/skills/evolve-evals/references/core-concepts/models.md +73 -0
  43. package/skills/evolve-evals/references/core-concepts/multi-step.md +93 -0
  44. package/skills/evolve-evals/references/core-concepts/rewardkit.md +341 -0
  45. package/skills/evolve-evals/references/core-concepts/sandboxes.md +73 -0
  46. package/skills/evolve-evals/references/core-concepts/secrets.md +86 -0
  47. package/skills/evolve-evals/references/core-concepts/sharing.md +81 -0
  48. package/skills/evolve-evals/references/core-concepts/skills.md +100 -0
  49. package/skills/evolve-evals/references/core-concepts/task-config.md +169 -0
  50. package/skills/evolve-evals/references/core-concepts/task-environment.md +127 -0
  51. package/skills/evolve-evals/references/core-concepts/task-reference.md +191 -0
  52. package/skills/evolve-evals/references/core-concepts/task-verifiers.md +209 -0
  53. package/skills/evolve-evals/references/core-concepts/tasks.md +90 -0
  54. package/skills/evolve-evals/references/core-concepts/teams.md +128 -0
  55. package/skills/evolve-evals/references/core-concepts/trial-outputs.md +225 -0
  56. package/skills/evolve-evals/references/core-concepts/trials.md +129 -0
  57. package/skills/evolve-evals/references/core-concepts/upload-sdk-session.md +240 -0
  58. package/skills/evolve-evals/references/core-concepts/upload.md +166 -0
  59. package/skills/evolve-evals/references/dashboard/checks.md +54 -0
  60. package/skills/evolve-evals/references/dashboard/datasets.md +65 -0
  61. package/skills/evolve-evals/references/dashboard/jobs.md +106 -0
  62. package/skills/evolve-evals/references/dashboard/traces.md +54 -0
  63. package/skills/evolve-evals/references/dashboard/trial-viewer.md +77 -0
  64. package/skills/evolve-evals/references/getting-started/first-task.md +228 -0
  65. package/skills/evolve-evals/references/getting-started/installation.md +79 -0
  66. package/skills/evolve-evals/references/getting-started/quick-start.md +100 -0
  67. package/skills/evolve-evals/references/index.md +58 -0
  68. package/skills/evolve-evals/references/sdk/http.md +110 -0
  69. package/skills/evolve-evals/references/sdk/python.md +108 -0
  70. package/skills/evolve-evals/references/sdk/typescript.md +104 -0
  71. package/skills/evolve-evals/references/sdk-reference/agents.md +75 -0
  72. package/skills/evolve-evals/references/sdk-reference/analyses.md +125 -0
  73. package/skills/evolve-evals/references/sdk-reference/auth.md +171 -0
  74. package/skills/evolve-evals/references/sdk-reference/checks.md +146 -0
  75. package/skills/evolve-evals/references/sdk-reference/datasets.md +170 -0
  76. package/skills/evolve-evals/references/sdk-reference/error-codes.md +231 -0
  77. package/skills/evolve-evals/references/sdk-reference/errors.md +98 -0
  78. package/skills/evolve-evals/references/sdk-reference/filesystem.md +166 -0
  79. package/skills/evolve-evals/references/sdk-reference/index.md +161 -0
  80. package/skills/evolve-evals/references/sdk-reference/jobs.md +250 -0
  81. package/skills/evolve-evals/references/sdk-reference/meta.md +54 -0
  82. package/skills/evolve-evals/references/sdk-reference/methods/agents.md +154 -0
  83. package/skills/evolve-evals/references/sdk-reference/methods/analyses.md +211 -0
  84. package/skills/evolve-evals/references/sdk-reference/methods/auth.md +257 -0
  85. package/skills/evolve-evals/references/sdk-reference/methods/checks.md +462 -0
  86. package/skills/evolve-evals/references/sdk-reference/methods/datasets.md +687 -0
  87. package/skills/evolve-evals/references/sdk-reference/methods/filesystem.md +527 -0
  88. package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +1023 -0
  89. package/skills/evolve-evals/references/sdk-reference/methods/meta.md +213 -0
  90. package/skills/evolve-evals/references/sdk-reference/methods/secrets.md +157 -0
  91. package/skills/evolve-evals/references/sdk-reference/methods/skills.md +125 -0
  92. package/skills/evolve-evals/references/sdk-reference/methods/trials.md +371 -0
  93. package/skills/evolve-evals/references/sdk-reference/secrets.md +104 -0
  94. package/skills/evolve-evals/references/sdk-reference/skills.md +66 -0
  95. package/skills/evolve-evals/references/sdk-reference/trials.md +164 -0
  96. package/skills/evolve-evals/references/sdk-reference/types.md +1255 -0
  97. package/skills/publish/SKILL.md +103 -79
  98. package/skills/rewardkit/SKILL.md +78 -23
  99. package/spec/openapi.yaml +164 -160
  100. package/skills/evolve-evals/references/cli-reference/agent.mdx +0 -79
  101. package/skills/evolve-evals/references/cli-reference/analysis.mdx +0 -160
  102. package/skills/evolve-evals/references/cli-reference/analyze.mdx +0 -84
  103. package/skills/evolve-evals/references/cli-reference/auth.mdx +0 -133
  104. package/skills/evolve-evals/references/cli-reference/check.mdx +0 -263
  105. package/skills/evolve-evals/references/cli-reference/dataset.mdx +0 -151
  106. package/skills/evolve-evals/references/cli-reference/index.mdx +0 -108
  107. package/skills/evolve-evals/references/cli-reference/job.mdx +0 -278
  108. package/skills/evolve-evals/references/cli-reference/run.mdx +0 -204
  109. package/skills/evolve-evals/references/cli-reference/secrets.mdx +0 -95
  110. package/skills/evolve-evals/references/cli-reference/skill.mdx +0 -61
  111. package/skills/evolve-evals/references/cli-reference/skills.mdx +0 -81
  112. package/skills/evolve-evals/references/cli-reference/trial.mdx +0 -181
  113. package/skills/evolve-evals/references/cli-reference/upload.mdx +0 -36
  114. package/skills/evolve-evals/references/core-concepts/agents.mdx +0 -106
  115. package/skills/evolve-evals/references/core-concepts/analyze.mdx +0 -86
  116. package/skills/evolve-evals/references/core-concepts/check.mdx +0 -64
  117. package/skills/evolve-evals/references/core-concepts/datasets.mdx +0 -138
  118. package/skills/evolve-evals/references/core-concepts/index.mdx +0 -42
  119. package/skills/evolve-evals/references/core-concepts/jobs.mdx +0 -151
  120. package/skills/evolve-evals/references/core-concepts/models.mdx +0 -68
  121. package/skills/evolve-evals/references/core-concepts/sandboxes.mdx +0 -52
  122. package/skills/evolve-evals/references/core-concepts/secrets.mdx +0 -41
  123. package/skills/evolve-evals/references/core-concepts/sharing.mdx +0 -35
  124. package/skills/evolve-evals/references/core-concepts/skills.mdx +0 -42
  125. package/skills/evolve-evals/references/core-concepts/tasks.mdx +0 -216
  126. package/skills/evolve-evals/references/core-concepts/teams.mdx +0 -36
  127. package/skills/evolve-evals/references/core-concepts/trial-outputs.mdx +0 -117
  128. package/skills/evolve-evals/references/core-concepts/trials.mdx +0 -103
  129. package/skills/evolve-evals/references/core-concepts/upload.mdx +0 -93
  130. package/skills/evolve-evals/references/dashboard/checks.mdx +0 -21
  131. package/skills/evolve-evals/references/dashboard/datasets.mdx +0 -24
  132. package/skills/evolve-evals/references/dashboard/jobs.mdx +0 -65
  133. package/skills/evolve-evals/references/dashboard/traces.mdx +0 -17
  134. package/skills/evolve-evals/references/dashboard/trial-viewer.mdx +0 -30
  135. package/skills/evolve-evals/references/getting-started/installation.mdx +0 -56
  136. package/skills/evolve-evals/references/getting-started/quick-start.mdx +0 -94
  137. package/skills/evolve-evals/references/index.mdx +0 -48
  138. package/skills/evolve-evals/references/sdk/python.mdx +0 -161
  139. package/skills/evolve-evals/references/sdk/typescript.mdx +0 -163
  140. package/skills/evolve-evals/references/sdk-reference/agents.mdx +0 -108
  141. package/skills/evolve-evals/references/sdk-reference/analyses.mdx +0 -222
  142. package/skills/evolve-evals/references/sdk-reference/auth.mdx +0 -116
  143. package/skills/evolve-evals/references/sdk-reference/checks.mdx +0 -300
  144. package/skills/evolve-evals/references/sdk-reference/datasets.mdx +0 -346
  145. package/skills/evolve-evals/references/sdk-reference/errors.mdx +0 -210
  146. package/skills/evolve-evals/references/sdk-reference/index.mdx +0 -60
  147. package/skills/evolve-evals/references/sdk-reference/jobs.mdx +0 -822
  148. package/skills/evolve-evals/references/sdk-reference/meta.mdx +0 -52
  149. package/skills/evolve-evals/references/sdk-reference/skills.mdx +0 -69
  150. package/skills/evolve-evals/references/sdk-reference/trials.mdx +0 -302
  151. package/skills/evolve-evals/references/sdk-reference/types.mdx +0 -274
  152. package/skills/evolve-evals/references/snippets/global-options.mdx +0 -13
  153. package/skills/evolve-evals/references/snippets/list-flags.mdx +0 -23
@@ -1,65 +0,0 @@
1
- ---
2
- title: "Jobs"
3
- description: "Start a job from the browser, follow it, and read its results."
4
- ---
5
-
6
- The Jobs page lists your jobs, newest first. A task quality check is a job too, so the list holds both: the KIND column tells them apart, and a check row opens the [check's page](/dashboard/checks#the-check-page).
7
-
8
- {/* retake after the UI pass, from a non-admin account */}
9
- <Frame caption="The jobs list">
10
- <img src="/images/jobs.png" alt="The Jobs page: a NEW JOB button, a search box, a status filter, and a table of jobs and checks with kind, status, datasets, agents, trials, cost and creation time." />
11
- </Frame>
12
-
13
- Search by name, and filter by status: ALL, QUEUED, RUNNING, CANCELLING, COMPLETED, CANCELLED or FAILED. A job row shows its datasets, its agents with their models, how many trials have settled out of the total, what it has spent, and when it started; a check row shows what was checked, the checker's model and effort, how many task checks have settled out of the total, the checker's cost, and when it started. Tick rows to cancel live jobs or delete finished ones; a check row cannot be ticked, its verbs live on its page.
14
-
15
- ## New job
16
-
17
- NEW JOB opens the form. It takes the same choices as `evolve run`.
18
-
19
- {/* retake after the UI pass, from a non-admin account */}
20
- <Frame caption="The New job form">
21
- <img src="/images/new-job.png" alt="The New job form: a Sources list of datasets to tick, an Agents section with agent, model and reasoning effort, an ADD AGENT button, and a Summary rail with LAUNCH and VALIDATE buttons." />
22
- </Frame>
23
-
24
- - **Sources**: tick one or more datasets, cap the task count, and narrow the tasks with include and exclude patterns over their names.
25
- - **Agents**: one arm per entry, with its agent, its model (required) and its reasoning effort. Arm options hold the version pin, a preset, a config file and skills. ADD AGENT adds another arm.
26
- - **Secrets**: attach a secret from your vault, or save and attach a one-off value.
27
- - **Job settings**: job name, attempts per task, parallel trials, auto-retries, and the spend cap per trial.
28
- - **Advanced**, collapsed by default: the sandbox provider, the timeout multipliers, the judge overrides for the verifier, and the exceptions to retry on.
29
-
30
- The Summary rail counts datasets × agents × attempts. VALIDATE checks the whole form without starting anything. LAUNCH starts the job and opens its page.
31
-
32
- ## One job
33
-
34
- {/* retake after the UI pass, from a non-admin account */}
35
- <Frame caption="A job's page, on its OVERVIEW tab">
36
- <img src="/images/job.png" alt="A job's page: the job id and status in the header, CANCEL, RESUME, DOWNLOAD and RE-RUN JOB buttons, tiles for trials, errors, average reward, cost and max cost, and the OVERVIEW tab with a progress bar and a per-agent table." />
37
- </Frame>
38
-
39
- The header carries the job id and its status. CANCEL stops a running job. RESUME runs a finished job's failed or stopped trials again as a new job. Both appear for the job's creator and the organization's members; a job shared with you by address opens without them.
40
-
41
- DOWNLOAD saves a finished job's results as a `.tar.gz` in the standard job layout; while the job runs it is disabled, with the reason on hover. RE-RUN JOB opens the New job form filled in with this job's choices.
42
-
43
- Five tiles sum the job up: trials settled out of the total, errors, average reward, cost so far, and the most the job can cost. The average reward shows a value for a job with one agent and one dataset; with more, it shows a dash and the OVERVIEW rows carry the means. Below them, five tabs.
44
-
45
- - **OVERVIEW**: a progress bar by trial status, and one row per agent and dataset with its scored trials, errors, mean reward and pass@k.
46
- - **TRIALS**: every trial, with ALL or ERRORS, its task, agent, status, reward, cost, duration and token counts. Click a row to open the [trial viewer](/dashboard/trial-viewer).
47
- - **ANALYZE**: the trace analyses of the job's trials, below.
48
- - **CHECK**: the task quality checks of the job's datasets. See [checks](/dashboard/checks).
49
- - **CONFIG**: the stored job record as JSON: its id, status, counts, stats and resolved settings.
50
-
51
- {/* retake after the UI pass, from a non-admin account */}
52
- <Frame caption="The TRIALS tab">
53
- <img src="/images/job-trials.png" alt="The TRIALS tab: ALL and ERRORS filters and a table of trials with task, agent, status, reward, cost, duration, input tokens and output tokens." />
54
- </Frame>
55
-
56
- ## The ANALYZE tab
57
-
58
- {/* retake after the UI pass, from a non-admin account */}
59
- <Frame caption="The ANALYZE tab after every trial was analyzed">
60
- <img src="/images/job-analyze.png" alt="The ANALYZE tab: tiles for completed, failed and pending analyses and the analyzer's cost, the policy with model, effort and criteria, and a table of pass, fail, not applicable and unknown counts per criterion." />
61
- </Frame>
62
-
63
- The tab counts completed, failed and pending analyses and the analyzer's own spend. The policy block names the analyzer's model, its reasoning effort and the rubric's criteria. The first table counts, per criterion, how many analyses ruled pass, fail, not applicable or unknown.
64
-
65
- Below it, one row per trial carries its label, its verdicts, the analyzer's spend and its summary; click a row to open the analysis in the trial viewer. Start analyses with `evolve analyze <job-id>` or with `--analyze` on `evolve run`, see [analyze](/core-concepts/analyze).
@@ -1,17 +0,0 @@
1
- ---
2
- title: "Traces"
3
- description: "Every recorded run in one list."
4
- ---
5
-
6
- The Traces page lists every run of the workspace you are in, newest first: the trials of its jobs, their regrades, analyses and checks, and the managed-agent sessions the platform recorded, which these pages do not cover. In a team it is one list of every member's runs, with a CREATED BY column after the trace tag. In your personal workspace it has two tabs: MINE, your own runs in any team, and SHARED WITH ME, what teammates made plus runs shared with you by email.
7
-
8
- {/* retake after the UI pass, from a non-admin account */}
9
- <Frame caption="The traces list">
10
- <img src="/images/traces.png" alt="The Traces page: a search box and a table of runs with a trace tag, the sandbox provider, the sandbox id, the agent and model, the start time, the cost and the status." />
11
- </Frame>
12
-
13
- Each row carries a tag naming the kind of run (EVAL for a trial, AGENT for a managed-agent session, REGRADE, ANALYZE, or CHECK), the task or session name, the dataset, the reward when there is one, the sandbox provider and sandbox id, the agent and model, when it started, what it spent, and its status. Search by name. Tick rows to stop running ones or delete finished ones; in a team's list and under SHARED WITH ME only the rows you created can be ticked, since stop and delete are the creator's.
14
-
15
- Click a row to open it in the [trial viewer](/dashboard/trial-viewer).
16
-
17
- A managed-agent session shares the two ways a [job](/core-concepts/jobs#share) does: `evolve session share <id> --link` turns on an unlisted link that opens the session, its transcript and its trace file without signing in, and `--email alice@example.org` shares it with a person by address. `evolve session shares <id>` prints the link and the addresses again, `evolve session unshare <id> --link` kills the link at once, and a session shared with you appears under `evolve session list --scope shared`. Sharing is read-only: neither the link nor an address can stop the session, and a link never reaches the session's file system or its browser replay.
@@ -1,30 +0,0 @@
1
- ---
2
- title: "Trial viewer"
3
- description: "Read one trial's trace event by event, its tool calls, its spend, and download its artifacts."
4
- ---
5
-
6
- Click a trial on a job's TRIALS tab, or a row on the Traces page, to open it.
7
-
8
- {/* retake after the UI pass, from a non-admin account */}
9
- <Frame caption="A scored trial in the viewer">
10
- <img src="/images/trial.png" alt="The trial viewer: a header with the task, agent, model, sandbox id, cost and status, a progress bar with previous and next event controls, an EVENTS list on the left, and the selected event's content on the right." />
11
- </Frame>
12
-
13
- The header names the run: its kind (EVAL for a trial, AGENT for a managed-agent session, REGRADE, ANALYZE, or CHECK), its task, its agent and model, its sandbox id, what it spent, and its status.
14
-
15
- BACK returns to where you came from. RETRY runs a settled trial again as a new one-trial job. STOP ends a run that is still going; its creator can stop it.
16
-
17
- DOWNLOAD on a trial offers the parsed trace, the ATIF trajectory, the raw stdout, the raw stderr, the agent home folder, the verifier log, or everything at once; on an analysis or a check it offers the verdict document, the raw stdout, the raw stderr, the agent home folder, or everything.
18
-
19
- Under the header, the reward and the event navigation: previous, next, and a progress bar you can drag. Type `/` to search the events.
20
-
21
- The EVENTS list runs down the left: the prompt, each assistant message and thought, each tool call and its result, and the gateway's own records: one per model call with its tokens and cost, and a run total at the end. Click an event to read it in full on the right. A running trial keeps appending events while you watch.
22
-
23
- {/* retake after the UI pass, from a non-admin account */}
24
- <Frame caption="An analysis run, with the TOOLS panel open">
25
- <img src="/images/trial-analysis.png" alt="The trial viewer on an analysis run: a TOOLS summary with the number of calls, the success rate and a bar per tool, then the events list and the selected event's content." />
26
- </Frame>
27
-
28
- The panel above the events has two tabs. TOOLS counts the run's tool calls, its success rate and how many failed, with a bar per tool. SPEND shows what the run spent. The gateway meter at the end of the run states the prompt, cached, cache-write and completion tokens and the cost in dollars.
29
-
30
- An analysis, a check or a regrade is read the same way. An analysis's events are the analyzer's own trace, and its verdict document is on the DOWNLOAD menu.
@@ -1,56 +0,0 @@
1
- ---
2
- title: "Installation"
3
- description: "Install the evolve command and the SDKs, and set your API key."
4
- ---
5
-
6
- ## The CLI
7
-
8
- The `evolve` command ships inside the npm package `@evolvingmachines/evolve`.
9
-
10
- ```bash
11
- npm install -g @evolvingmachines/evolve
12
- evolve --version
13
- ```
14
-
15
- Inside a project that has the package, `npx evolve` runs it. For a one-off without installing, name the package: `npx --package=@evolvingmachines/evolve evolve --help`. A bare `npx evolve` fetches an unrelated package of that name from the public registry.
16
-
17
- ## The SDKs
18
-
19
- The same surface is available as a library in TypeScript and in Python.
20
-
21
- <CodeGroup>
22
-
23
- ```bash TypeScript
24
- npm install @evolvingmachines/evolve
25
- ```
26
-
27
- ```bash Python
28
- pip install evolvingmachines-evolve
29
- ```
30
-
31
- </CodeGroup>
32
-
33
- The Python package needs Python 3.10 or newer. The hosted clients on these pages talk to the platform directly. Node.js and npm are needed only to run agents on your own machine through `run()`, which these pages do not cover.
34
-
35
- ## Your API key
36
-
37
- Create a key on the dashboard's [API keys page](https://dashboard.evolvingmachines.ai/api-keys), then export it. Every command and every SDK client reads `EVOLVE_API_KEY`.
38
-
39
- ```bash
40
- export EVOLVE_API_KEY="<your key>"
41
- evolve auth status
42
- ```
43
-
44
- `auth status` prints who the platform thinks you are and which key is in use. The key itself is never printed back. To use a different key for one call, pass `--api-key <key>` on the command line, or `{ apiKey }` to an SDK client.
45
-
46
- ## Your coding agent
47
-
48
- ```bash
49
- evolve skills install
50
- ```
51
-
52
- One small skill, `evolve`, lands in the skill folder of every coding agent on your machine: Claude Code, Codex, Cursor, Copilot, Gemini CLI and OpenCode. From then on, when you mention Evolve, evals, datasets, jobs or tasks, the agent reads the manual from the command itself, `evolve skills get evals`, one page at a time. The manual ships inside the package, so it always matches the version you installed. See [evolve skills](/cli-reference/skills).
53
-
54
- <Card title="Quick start" icon="play" href="/getting-started/quick-start">
55
- Start your first job.
56
- </Card>
@@ -1,94 +0,0 @@
1
- ---
2
- title: "Quick start"
3
- description: "Start your first job, watch it run, and download a trial."
4
- ---
5
-
6
- This page takes you from an empty terminal to a downloaded trial: one API key, any harness, any model, any sandbox provider, and every trial's trace streamed live. A trial is one agent's attempt at one task. A job is a set of trials: the tasks of one or more datasets, run by one or more agents.
7
-
8
- <Steps>
9
- <Step title="Install the CLI and set your key">
10
- ```bash
11
- npm install -g @evolvingmachines/evolve
12
- export EVOLVE_API_KEY="<your key>"
13
- evolve auth status
14
- ```
15
-
16
- Create a key on the dashboard's [API keys page](https://dashboard.evolvingmachines.ai/api-keys), then export it. See [installation](/getting-started/installation) for the SDKs.
17
- </Step>
18
-
19
- <Step title="Give your coding agent the manual">
20
- ```bash
21
- evolve skills install
22
- ```
23
-
24
- Your agent then reads these docs with `evolve skills get evals`, and the `create-task`, `rewardkit`, `create-adapter` and `publish` skills by name. [The five skills](/cli-reference/skills).
25
- </Step>
26
-
27
- <Step title="Pick a dataset">
28
- The catalog lists every dataset you can run, with its versions.
29
-
30
- ```bash
31
- evolve dataset list
32
- evolve dataset show terminal-bench-4@4.0
33
- ```
34
-
35
- `dataset show` prints the version's tasks and, for each task, which sandbox providers can run it.
36
- </Step>
37
-
38
- <Step title="Start a job and watch it">
39
- Name a dataset, an agent, and a model. `--watch` streams the job's events until it finishes; `-l 5` caps the run at five tasks and `--max-trial-spend 1` caps what each trial may spend on the model, so the first job is small.
40
-
41
- ```bash
42
- evolve run \
43
- -d terminal-bench-4@4.0 \
44
- -a codex \
45
- -m gpt-6-astra \
46
- -l 5 \
47
- --max-trial-spend 1 \
48
- --watch
49
- ```
50
-
51
- The final block prints the job id, how many trials landed in each status, and what the trials spent. Without `--watch` the command returns the id at once and the job keeps running.
52
- </Step>
53
-
54
- <Step title="Read the result">
55
- ```bash
56
- evolve job show <job-id>
57
- evolve job trials <job-id>
58
- evolve trial show <trial-id>
59
- ```
60
-
61
- `job show` is the whole job: how many trials landed in each status, the rewards, the spend. `job trials` lists the trials one per line with their ids. `trial show` is one trial in full, with its reward and, when it failed, why.
62
- </Step>
63
-
64
- <Step title="Download the trial">
65
- A trial downloads as a trial tree: the trajectory, the agent's stdout and stderr, the verifier log, and the reward.
66
-
67
- ```bash
68
- evolve trial download <trial-id> -o trials/
69
- ```
70
-
71
- To read one artifact without saving anything, stream it instead.
72
-
73
- ```bash
74
- evolve trial download <trial-id> --stream verifier
75
- ```
76
- </Step>
77
- </Steps>
78
-
79
- ## Next, by what you want to do
80
-
81
- <Columns cols={2}>
82
- <Card title="Port a benchmark" icon="arrow-right-left" href="/core-concepts/tasks">
83
- `evolve skills get create-adapter` turns it into Harbor-format tasks.
84
- </Card>
85
- <Card title="Write a task" icon="file-plus" href="/core-concepts/tasks">
86
- `evolve skills get create-task`, and `rewardkit` for its verifier.
87
- </Card>
88
- <Card title="Publish a dataset" icon="upload" href="/core-concepts/datasets">
89
- `evolve skills get publish`, then `evolve dataset publish`.
90
- </Card>
91
- <Card title="Upload a job you ran elsewhere" icon="folder-up" href="/core-concepts/upload">
92
- `evolve upload <job dir>` brings a Harbor job into the dashboard.
93
- </Card>
94
- </Columns>
@@ -1,48 +0,0 @@
1
- ---
2
- title: "Evolve documentation"
3
- description: "Environment-driven agent evaluations: any model, any harness, any sandbox, one API key. Every task versioned and checked, every trajectory analyzed."
4
- ---
5
-
6
- Evolve is hosted evaluation for agents: bring your own tasks or pick a public dataset, and run any model on any agent harness against them, in parallel, in cloud sandboxes. Each task is pinned to one versioned environment, so every run starts from the same place today or next month. Every trial returns its reward, its live trace, its files and its logs, with a quality verdict on any task before you spend on it and a judged analysis of any trajectory after.
7
-
8
- - **One API key.** Any model with `-m`, any agent harness with `-a`, any sandbox provider with `-e`; no provider keys to manage.
9
- - **Task quality control.** `evolve check` runs each task and judges it against a rubric before you spend a job on it.
10
- - **Full observability.** Every trial streams its trace live; its files, artifacts, agent logs and verifier logs are yours to read and download when it ends.
11
- - **Trace analysis after every trial.** `evolve analyze` judges every trial's trace against a rubric, cheap and scalable.
12
-
13
- ```bash
14
- export EVOLVE_API_KEY="<your key>" # from https://dashboard.evolvingmachines.ai/api-keys
15
- evolve run \
16
- -d terminal-bench-4@4.0 \
17
- -a codex \
18
- -m gpt-6-astra \
19
- -l 5 \
20
- --watch
21
- ```
22
-
23
- New here? The [quick start](/getting-started/quick-start) takes five minutes.
24
-
25
- ## The whole process
26
-
27
- 1. [Get tasks](/core-concepts/tasks): a public dataset, your own, or a converted benchmark.
28
- 2. [Check](/core-concepts/check) each task against a rubric before you run it.
29
- 3. [Publish](/core-concepts/datasets) the tasks as a versioned dataset.
30
- 4. [Run](/core-concepts/jobs) any agent and model on it; every trial streams live.
31
- 5. [Read](/core-concepts/trial-outputs) every trial's tree and [analyze](/core-concepts/analyze) its trace.
32
-
33
- A coding agent does all five from the same CLI with the [skills](/cli-reference/skills).
34
-
35
- <Columns cols={2}>
36
- <Card title="Quick start" icon="play" href="/getting-started/quick-start">
37
- Install the CLI, start a job, read its result.
38
- </Card>
39
- <Card title="Core concepts" icon="layers" href="/core-concepts">
40
- How tasks, jobs, trials, agents and sandboxes fit together.
41
- </Card>
42
- <Card title="CLI reference" icon="terminal" href="/cli-reference">
43
- Every verb and flag of the `evolve` command.
44
- </Card>
45
- <Card title="Dashboard" icon="layout-dashboard" href="/dashboard/datasets">
46
- Datasets, jobs and the trial viewer in the browser.
47
- </Card>
48
- </Columns>
@@ -1,161 +0,0 @@
1
- ---
2
- title: "Python SDK"
3
- description: "Start a job, wait for it, read the result, and download it from Python."
4
- ---
5
-
6
- ```bash
7
- pip install evolvingmachines-evolve
8
- ```
9
-
10
- The hosted surface is a set of clients, one per noun. Each one reads `EVOLVE_API_KEY` from the environment, or takes a `HostedClientConfig(api_key=..., base_url=...)`. Create a key on the dashboard's [API keys page](https://dashboard.evolvingmachines.ai/api-keys).
11
-
12
- Every call is a coroutine, and every client is an async context manager with `close()`. A request never follows a redirect: the client refuses every 3xx and raises it as an error, so the key only reaches the host you configured.
13
-
14
- ```python
15
- import asyncio
16
- from evolve import jobs, trials, datasets
17
-
18
- evals = jobs()
19
- ```
20
-
21
- ## Start a job
22
-
23
- ```python
24
- job = await evals.start(
25
- datasets=[{"name": "terminal-bench-4", "version": "4.0", "n_tasks": 5}],
26
- agents=[{"name": "codex", "model_name": "gpt-6-astra"}],
27
- n_attempts=1,
28
- n_concurrent_trials=4,
29
- max_trial_spend_usd=25,
30
- )
31
-
32
- print(job.id, job.status) # "QUEUED"
33
- ```
34
-
35
- `datasets` is a list of selectors, as dicts or `DatasetSelector` dataclasses. A bare `name` resolves to the active version; `task_names`, `exclude_task_names` and `n_tasks` narrow the task set. Every arm in `agents`, a dict or an `AgentArm`, names a `model_name`, and `version`, `reasoning_effort`, `kwargs`, `preset` and `skills` are optional.
36
-
37
- `sandbox_provider` picks `"e2b"`, `"daytona"` or `"modal"`. The retry policy is a `JobRetryConfigInput` dict and comes back resolved as `JobRetryConfig`. The fields are the same ones a `-c` config file takes on the CLI.
38
-
39
- Results are dataclasses with the wire's `snake_case` names and `Literal` vocabularies for every closed set. Four keys the wire spells in camelCase are mapped: `next_cursor`, `has_more`, `by_status` and `task_matrix`. A refused request raises `EvolveAPIError`; see [errors](/sdk-reference/errors).
40
-
41
- ## Wait for it
42
-
43
- `watch()` returns a handle you either await, for the final job, or iterate, for each event. Pick one form per call.
44
-
45
- ```python
46
- final = await evals.watch(job.id)
47
- print(final.status, final.trials.by_status, final.stats.get("cost_usd"))
48
- ```
49
-
50
- ```python
51
- async for event in evals.watch(job.id):
52
- if event.type == "trial.settled":
53
- print(event.data["task_name"], event.data["status"], event.data.get("reward"))
54
- ```
55
-
56
- The stream replays from the beginning, so attaching late loses nothing, and it resumes on its own after a disconnect. `event.data` is a plain dict; branch on `event.type` and read it by key.
57
-
58
- ## Read the result
59
-
60
- ```python
61
- detail = await evals.get(job.id)
62
-
63
- async for trial in evals.trials(job.id):
64
- print(trial.task_name, trial.agent_info.name, trial.status, trial.reward)
65
-
66
- failures = await evals.trials(
67
- job.id,
68
- status=["INFRASTRUCTURE_ERROR", "SCORING_ERROR"],
69
- )
70
- ```
71
-
72
- Every list on this surface works the same way: await it for one page, iterate it to walk every page. `pass_at_k(job)` reads a finished job's pass@k out of its stats as sorted numbers.
73
-
74
- A trial id is global, so `trials()` reaches one without the job.
75
-
76
- ```python
77
- t = trials()
78
-
79
- trial = await t.get(trial_id)
80
- print(trial.reward, trial.exception_info and trial.exception_info.exception_type)
81
-
82
- verifier_log = await t.artifact(trial_id, "verifier") # str | None
83
- home = await t.artifact(trial_id, "agent-home") # dict[str, str] | None
84
-
85
- async for event in t.trace_events(trial_id):
86
- print(event.seq, event.type)
87
- ```
88
-
89
- `artifact()` takes the same names as `evolve trial download --stream`. None means the trial never stored that artifact; it is a normal answer, not an error.
90
-
91
- ## Download
92
-
93
- ```python
94
- path = await evals.download(
95
- job.id,
96
- to="./results",
97
- ) # the saved file's path
98
- data = await evals.download(job.id) # bytes
99
- ```
100
-
101
- The archive is the standard job directory, the same tree `evolve job download` unpacks.
102
-
103
- ## Analyze
104
-
105
- ```python
106
- await evals.analyze(
107
- job.id,
108
- failing=True,
109
- n_trials=20,
110
- )
111
- analyzed = await evals.watch_analysis(job.id)
112
- ```
113
-
114
- `analyze()` enqueues one analysis per trial and returns at once. `watch_analysis()` follows the batch of analyses to its end.
115
-
116
- ## The catalog
117
-
118
- ```python
119
- catalog = datasets()
120
-
121
- async for dataset in catalog.list():
122
- print(dataset.name, dataset.active_version and dataset.active_version.version)
123
-
124
- version = await catalog.get("terminal-bench-4@4.0")
125
- ```
126
-
127
- ## Browse the run's files
128
-
129
- Every trial has a file system you can read while the box runs and after it is gone, plus its sandbox logs and process list. `filesystem(id)` returns one object for all of it.
130
-
131
- ```python
132
- fs = t.filesystem(trial_id)
133
- print((await fs.status()).state) # "live" | "captured" | "capturing" | "none"
134
-
135
- folder = await fs.list(path="/app/work")
136
- main = (await fs.read("/app/work/main.py")).decode()
137
- hits = await fs.search("permission denied", path="/app/work")
138
- changed = await fs.changes()
139
- await fs.archive(path="/app/work", to="./archives")
140
-
141
- async for frame in fs.events():
142
- if frame.event == "fs":
143
- print(frame.data["type"], frame.data["path"])
144
- agent_log = await fs.logs("agent")
145
- ```
146
-
147
- Analysis runs (`analyses().filesystem(id)`) and task checks (`checks().task_filesystem(check_id, task_check_id)`) have the same surface; a published task's own files are `datasets().task_files("name@version", task)`.
148
-
149
- ## Everything else
150
-
151
- `analyses()`, `checks()`, `skills()`, `agents()`, `auth()` and `orgs()` are built the same way. `meta()` fetches the platform's capability document, the live list of harnesses, models and limits, and needs no key. `hosted()` builds every client from one configuration.
152
-
153
- ```python
154
- from evolve import hosted
155
-
156
- evolve = hosted()
157
- doc = await evolve.meta()
158
- job = await evolve.jobs.start(...)
159
- ```
160
-
161
- Run any of the snippets above inside an `async def main()` and start it with `asyncio.run(main())`.
@@ -1,163 +0,0 @@
1
- ---
2
- title: "TypeScript SDK"
3
- description: "Start a job, wait for it, read the result, and download it from TypeScript."
4
- ---
5
-
6
- ```bash
7
- npm install @evolvingmachines/evolve
8
- ```
9
-
10
- The hosted surface is a set of clients, one per noun. Each one reads `EVOLVE_API_KEY` from the environment, or takes `{ apiKey, baseUrl }`. Create a key on the dashboard's [API keys page](https://dashboard.evolvingmachines.ai/api-keys).
11
-
12
- ```ts
13
- import { jobs, trials, datasets } from "@evolvingmachines/evolve";
14
-
15
- const evals = jobs();
16
- ```
17
-
18
- ## Start a job
19
-
20
- ```ts
21
- const job = await evals.start({
22
- datasets: [{ name: "terminal-bench-4", version: "4.0", n_tasks: 5 }],
23
- agents: [{ name: "codex", model_name: "gpt-6-astra" }],
24
- n_attempts: 1,
25
- n_concurrent_trials: 4,
26
- max_trial_spend_usd: 25,
27
- });
28
-
29
- console.log(job.id, job.status); // "QUEUED"
30
- ```
31
-
32
- `datasets` is a list of selectors. A bare `name` resolves to the active version; `task_names`, `exclude_task_names` and `n_tasks` narrow the task set.
33
-
34
- Every arm in `agents` names a `model_name`, and `version`, `reasoning_effort`, `kwargs`, `preset` and `skills` are optional. `sandbox_provider` picks `"e2b"`, `"daytona"` or `"modal"`. The fields are the same ones a `-c` config file takes on the CLI.
35
-
36
- ## Wait for it
37
-
38
- `watch()` returns a handle you either await, for the final job, or iterate, for each event. Pick one form per call.
39
-
40
- ```ts
41
- const final = await evals.watch(job.id);
42
- console.log(final.status, final.trials.byStatus, final.stats.cost_usd);
43
- ```
44
-
45
- ```ts
46
- for await (const event of evals.watch(job.id)) {
47
- if (event.type === "trial.settled") {
48
- console.log(event.data.task_name, event.data.status, event.data.reward);
49
- }
50
- }
51
- ```
52
-
53
- The stream replays from the beginning, so attaching late loses nothing, and it resumes on its own after a disconnect. `event.type` narrows `event.data`, so the fields above are typed.
54
-
55
- ## Read the result
56
-
57
- ```ts
58
- const detail = await evals.get(job.id);
59
-
60
- for await (const trial of evals.trials(job.id)) {
61
- console.log(trial.task_name, trial.agent_info.name, trial.status, trial.reward);
62
- }
63
-
64
- const failures = await evals.trials(job.id, {
65
- status: ["INFRASTRUCTURE_ERROR", "SCORING_ERROR"],
66
- });
67
- ```
68
-
69
- Every list on this surface works the same way: await it for one page, iterate it to walk every page. `passAtK(job)` reads a finished job's pass@k out of its stats as sorted numbers. A refused request throws `EvolveApiError`; see [errors](/sdk-reference/errors).
70
-
71
- A trial id is global, so `trials()` reaches one without the job.
72
-
73
- ```ts
74
- const t = trials();
75
-
76
- const trial = await t.get(trialId);
77
- console.log(trial.reward, trial.exception_info?.exception_type);
78
-
79
- const verifierLog = await t.artifact(trialId, "verifier"); // string | null
80
- const home = await t.artifact(
81
- trialId,
82
- "agent-home",
83
- ); // Record<string, string> | null
84
-
85
- for await (const event of t.traceEvents(trialId)) {
86
- console.log(event.seq, event.type);
87
- }
88
- ```
89
-
90
- `artifact()` takes the same names as `evolve trial download --stream`. Null means the trial never stored that artifact; it is a normal answer, not an error.
91
-
92
- ## Download
93
-
94
- ```ts
95
- const path = await evals.download(
96
- job.id,
97
- { to: "./results" },
98
- ); // the saved file's path
99
- const bytes = await evals.download(job.id); // a Buffer
100
- ```
101
-
102
- The archive is the standard job directory, the same tree `evolve job download` unpacks.
103
-
104
- ## Analyze
105
-
106
- ```ts
107
- await evals.analyze(
108
- job.id,
109
- {
110
- failing: true,
111
- n_trials: 20,
112
- },
113
- );
114
- const analyzed = await evals.watchAnalysis(job.id);
115
- ```
116
-
117
- `analyze()` enqueues one analysis per trial and returns at once. `watchAnalysis()` follows the batch of analyses to its end.
118
-
119
- ## The catalog
120
-
121
- ```ts
122
- const catalog = datasets();
123
-
124
- for await (const dataset of catalog.list()) {
125
- console.log(dataset.name, dataset.active_version?.version);
126
- }
127
-
128
- const version = await catalog.get("terminal-bench-4@4.0");
129
- ```
130
-
131
- ## Browse the run's files
132
-
133
- Every trial has a file system you can read while the box runs and after it is gone, plus its sandbox logs and process list. `filesystem(id)` returns one object for all of it.
134
-
135
- ```ts
136
- const fs = t.filesystem(trialId);
137
- console.log((await fs.status()).state); // "live" | "captured" | "capturing" | "none"
138
-
139
- const folder = await fs.list({ path: "/app/work" });
140
- const main = (await fs.read("/app/work/main.py")).toString("utf8");
141
- const hits = await fs.search({ q: "permission denied", path: "/app/work" });
142
- const changed = await fs.changes();
143
- await fs.archive({ path: "/app/work", to: "./archives" });
144
-
145
- for await (const frame of fs.events()) {
146
- if (frame.event === "fs") console.log(frame.data.type, frame.data.path);
147
- }
148
- const agentLog = await fs.logs({ stream: "agent" });
149
- ```
150
-
151
- Analysis runs (`analyses().filesystem(id)`) and task checks (`checks().taskFilesystem(checkId, taskCheckId)`) have the same surface; a published task's own files are `datasets().taskFiles("name@version", task)`.
152
-
153
- ## Everything else
154
-
155
- `analyses()`, `checks()`, `skills()`, `agents()`, `auth()` and `orgs()` are built the same way. `meta()` fetches the platform's capability document, the live list of harnesses, models and limits, and needs no key. `hosted()` builds every client from one configuration.
156
-
157
- ```ts
158
- import { hosted } from "@evolvingmachines/evolve";
159
-
160
- const evolve = hosted({ apiKey: process.env.EVOLVE_API_KEY });
161
- const doc = await evolve.meta();
162
- const job = await evolve.jobs.start({ /* … */ });
163
- ```