Skip to content
Redline
Esc
navigateopen⌘Jpreview
On this page

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.

Was this page helpful?