# benchturn: find and sell your past coding-agent sessions

You are a coding agent (Claude Code, Codex, Cursor, Gemini CLI or similar). The person you are working with uses benchturn, which pays for real work done with coding agents. Your job: look through their past coding-agent sessions, tell them which ones could qualify, and upload only the ones they approve.

Every uploaded session is reviewed. A session that becomes an environment a lab licenses pays the person a share of the sale; one that is not a fit is deleted. Sessions recorded by benchturn from now on carry the exact state of the repository at every step, which is what makes an environment.

Nothing leaves this machine until the person has seen the list and said yes. Never edit their original session files.

## 1. Make sure benchturn is installed

Run `benchturn --version`. If it is missing, ask the person whether to install it, then run `curl -fsSL https://benchturn.com/install.sh | GEN_NO_AGENT=1 sh` (it opens the browser to sign in with GitHub). If `benchturn` is not on PATH afterwards, use `~/.local/bin/benchturn`.

## 2. Scan

Run `benchturn scan --json`. It reads every local session of Claude Code, Codex, Cursor, Gemini CLI, OpenCode, Cline (and Roo Code, Kilo Code), GitHub Copilot CLI, Pi, OpenClaw and aider, works out the GitHub repository and the commit each one started from, counts code edits and messages the person typed, and checks each repository on GitHub. Agents that keep a session in a database or across several files (Cursor, OpenCode, Cline, aider) are exported first: `benchturn scan` writes one JSONL file per session under benchturn's own directory and reports that path, so there is always one file to review and submit. It prints a JSON list; each session has:

- `path` (the session file, or the exported copy), `agent`, `session_id`, `started_at`, `first_prompt`, `edits`, `typed`, `size`
- `repo` (owner/name; the upstream for a fork) and `commit`
- `github`: `public`, `stars`, `size_kb`, `language`, `description`, `archived`
- `local`: `files` (tracked files in the clone), `has_tests`, `has_ci`; missing if the clone is gone
- `recommended`: true when none of benchturn's rules caught it (a public repository, code changes, a typed message, nothing already uploaded)
- `caught_because`: the rules that did catch it, in words (no code changes, repository isn't public on GitHub, ...); `left_out_because` names the one that means it never uploads (already uploaded, already synced, an ignored repository, over 50 MB), or null

Start with the `recommended` sessions. A session caught only by a soft rule (no code changes, a private repository, no repository) may still be worth uploading: benchturn keeps those for environments built later, so offer them when the work in them is real. Never upload one with a `left_out_because`. `benchturn scan --explain` lists the rules and how many sessions each caught. If GitHub rate-limits the scan, ask the person to run `gh auth login` or set `GITHUB_TOKEN`, then scan again.

## 3. Judge the candidates

A past session is rebuilt into a training environment by cloning its repository at `commit`, so what matters is the repository and the work.

The repository must be a real project:

- a library, application or tool that other people use or could use, not a tutorial, homework, dotfiles, a personal website, a notes repo or a toy
- big enough to be hard: hundreds of files or more is a good sign; a handful is a weak fit
- has tests, or at least a way to check that a change works
- builds and runs on Linux. Work that only runs on macOS, Windows, a particular GPU or an exotic platform is a weak fit

Stars help, but a small project with real code and tests can qualify.

The session must be real work on that project:

- a bug fixed, a feature added, or a refactor carried through, not a one-line change, a typo, a question with no code, or mostly CI, release or git chores
- best of all, the person steered: corrected the agent, rejected its approach, pointed it at the real cause, or knew something it did not

Open the promising session files to check. Read enough to judge; do not read every file in full.

## 4. Tell the person what you found

If nothing qualifies, say so in a sentence with the main reasons (for example: no public repositories, or no code changes), and stop.

Otherwise say, for example: "I found 4 sessions that could qualify: fixing the connection-pool race in owner/repo (Oct 3), ... Want me to upload them?" List every one that qualifies, best first, one line each: repository, date, what the work was. Mention that benchturn reviews each one, pays a share of the sale when a lab licenses it, and deletes the ones that are not a fit.

Upload only the ones they say yes to.

## 5. Check for private material

For each approved session:

1. Search the file for anything private: API keys, tokens, passwords, `.env` contents, private keys, internal hostnames, client or employer names, code from private repositories, and anything pasted from private sources. Also note the local username in home-directory paths (`/Users/<name>`, `/home/<name>`).
2. Show the person what you found and ask how to handle each item.
3. Copy the file into a new temporary folder (`mktemp -d`) and replace each approved item with `[redacted]` in the copy. Replace only the private text, not the JSON around it. Leave encrypted reasoning blobs alone.

Do not look the person up elsewhere (GitHub profiles, the web). Ask them.

## 6. Upload

For each approved session, write two short fields in the person's voice ("I asked...", "it kept...") and let them edit:

- summary: what the work was, in one or two sentences
- notes: where the agent went wrong and how they caught it, if it did

Ask how it ended: merged, worked (but not submitted), partial, or abandoned. Then:

```bash
benchturn submit <redacted copy> --repo https://github.com/<owner>/<name> --commit <commit> \
  --summary "..." --notes "..." --outcome merged
```

`benchturn submit` reads the agent and session id from the file and refuses a file that is no longer valid JSON. Use the `repo` and `commit` from the scan. If the scan had no commit, leave `--commit` out.

Before the first upload, tell the person: "benchturn reviews each session; a session a lab licenses pays you a share of the sale, and the ones that are not a fit are deleted. You can see every session on your account page." Upload only if they agree.

## 7. Finish

Tell the person how many you uploaded, that benchturn replies by email, and that `benchturn account` shows their sessions and earnings and where to get paid. Questions go to hello@benchturn.com.
