> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oqoqo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Machines and files

> Attach a machine and files to a task so every run of that work starts the same way. Upload or import from GitHub.

**Machines** and **Files** attach to a **task**. See [Core concepts](/core-concepts).

Create them under Manage, then attach them on the task. They are not treatments, and you do not pick them as separate launch peers.

When you compare treatments, only the treatment should change. The work, the files, and the machine stay the same. That keeps lift comparable.

## Files

Files are folders you attach to a task: a repo, sample data, or fixtures.

1. Create them under **Manage → Files**.
2. Open the task **Files** tab and attach what you need. Each attachment mounts at a path in the machine.

Before a run starts, Oqoqo mounts those folders. Every run of the task begins from the same starting files.

<img className="block dark:hidden" src="https://mintcdn.com/oqoqo/0N1ap2mLLIECv0P4/images/screenshots/task-files-light.png?fit=max&auto=format&n=0N1ap2mLLIECv0P4&q=85&s=abaf4f9e7e1471060be1101001869c44" alt="Task Files tab with attached folders and the attach control. Personal details are blurred." width="2270" height="340" data-path="images/screenshots/task-files-light.png" />

<img className="hidden dark:block" src="https://mintcdn.com/oqoqo/0N1ap2mLLIECv0P4/images/screenshots/task-files-dark.png?fit=max&auto=format&n=0N1ap2mLLIECv0P4&q=85&s=cb4fa4f8f01f99b75e76700c5bf4d02d" alt="Task Files tab with attached folders and the attach control. Personal details are blurred." width="2270" height="340" data-path="images/screenshots/task-files-dark.png" />

Keep secrets out of Files when you can. Prefer Variables on the machine, or dashboard connections that enter secrets securely.

### Upload or import from GitHub

When you add files or folders, choose **Upload** or **From GitHub**.

* **Upload** — add local folders
* **From GitHub** — paste a public `github.com` URL; Oqoqo snapshots at the resolved commit

Later, use **Check for updates** on a GitHub-sourced folder to replace the live record with a newer snapshot. Private-repo import is not available.

Skills support the same GitHub import pattern. See [Assets](/experiments/assets#import-from-github).

## Machines

A machine is the environment a run executes in: a realistic developer setup for the person you are testing for. Machines run on a standard Ubuntu image today. You set:

* **Packages** — tools and dependencies you expect the user to have
* **Services** — anything that runs alongside the agent, such as a database or a local copy of your product
* **Variables** — values the agent needs, such as an API key

Create machines under **Manage → Machines**. On the task **Machine** tab, pin one, or leave the **Standard Dev Machine**.

<img className="block dark:hidden" src="https://mintcdn.com/oqoqo/0N1ap2mLLIECv0P4/images/screenshots/task-machine-light.png?fit=max&auto=format&n=0N1ap2mLLIECv0P4&q=85&s=41b6b3f06142ca61ff70241cf6ab7082" alt="Task Machine tab with the selected machine and change control. Personal details are blurred." width="2270" height="420" data-path="images/screenshots/task-machine-light.png" />

<img className="hidden dark:block" src="https://mintcdn.com/oqoqo/0N1ap2mLLIECv0P4/images/screenshots/task-machine-dark.png?fit=max&auto=format&n=0N1ap2mLLIECv0P4&q=85&s=219e4f1c8df5ccd305809eb07ccc77da" alt="Task Machine tab with the selected machine and change control. Personal details are blurred." width="2270" height="420" data-path="images/screenshots/task-machine-dark.png" />

Each run gets a fresh machine. Nothing carries over between runs.

For an example with Redis on a custom machine, start from the [Redis template](/experiments/templates).

## At launch

Oqoqo snapshots the machine and files from each selected task. Later edits in Manage do not change runs already launched.

Runs of the same task share that snapshot across every treatment and agent. You measure treatment, agent, and model.

## Recommendation

Start with the Standard Dev Machine and only the files the task needs. Add a custom machine when the work needs packages, services, or variables that the default does not provide.
