Files and repositories
What is on the machine before the agent starts.
Two kinds, and both really happen. There is no third state where something is listed as attached but nothing is put anywhere.
A repository
Press Add repository on the Files page and give it a git URL. Before the
agent’s first token it is cloned into the workspace — --depth 1, because an
experiment cares about the tree rather than the history — into a directory named
after it.
The Files table spells out exactly what the agent will find:
billing-api/ — cloned from github.com/you/billing-api. You can override the
directory name when you add it; by default it is the repository’s own.
An uploaded file
Press Upload a file, or drop one onto the dialog. A CSV, a config, a PDF, a fixture, a zip — anything the task needs to read. Up to 100 MB per file by default.
It is written into the machine’s working directory under its own name (cleaned
of anything that could climb out of that directory), so a task can say “read
orders.csv” and the agent will find it. The bytes travel in exactly as they
left: a PDF or a zip arrives byte-identical.
You can open what was uploaded again from the table, and the file’s size is the real one.
Where files attach
| Attach to | When |
|---|---|
| A task | The file is part of what the task means — “fix the bug in this repository”. Pick it in the task dialog. |
| An experiment | The file belongs to this particular launch. Pick it in the builder’s Files row. |
A run gets both sets, merged and de-duplicated: the same repository picked in both places is one clone, not two.
For your own agent
An agent connected with redline dev runs on your computer, and these files are
not on it. They are placed on the run’s container, which your agent reaches with
the machine_run tool:
machine_run({ command: "head -20 orders.csv" })
The builder says so inline when you have both a file and one of your own agents selected. See Machines.
Limits
The 100 MB ceiling is about memory rather than disk: every byte is read, encoded and pushed into the container in one go, so the machine’s tens of gigabytes are not the constraint. The dialog checks the size before the upload starts, so a file that is too large is refused immediately rather than after the wait.