# Run Ouroboros on a Prized box

> Install Ouroboros on a Prized box, so its interview, Seed and build loop drives Claude Code on a cloud Linux machine and keeps going with your laptop closed.

URL: https://prized.dev/docs/ouroboros

[Ouroboros](https://github.com/Q00/ouroboros) turns a vague goal into a spec it calls a Seed, then has Claude Code, Codex or another agent build it and check the result. On a Prized box, a run keeps going when you close your laptop.

## 1. Start a box [#1-start-a-box]

Sign up at [prized.dev](https://prized.dev/sign-in) and follow the tour: it starts a box on $30 of free credit with no card, and the command it shows installs the CLI and adds the box to your SSH config ([Quickstart](https://prized.dev/docs/quickstart)). Replace `mango` with your box's name.

## 2. Sign Claude Code in on the box [#2-sign-claude-code-in-on-the-box]

```bash
prized agents handoff claude --gh
```

## 3. Install Ouroboros [#3-install-ouroboros]

```bash
prized ssh mango
```

Then, on the box:

```bash title="you@box"
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.local/bin/env
curl -fsSL https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.sh | bash
```

Install uv first: without it, the Ouroboros installer falls back to `pip --user`, which Ubuntu 24.04 refuses. The installer finds Claude Code, installs the `ouroboros` command, and adds the `ooo` commands to Claude Code.

## 4. Run a goal [#4-run-a-goal]

In a git repository on the box (`git init` in an empty folder is enough):

```bash title="you@box ~/code/myproject"
ouroboros auto "A stdlib-only Python CLI, wordfreq.py, that prints the N most frequent words in a text file, with pytest tests"
```

Ouroboros answers its own interview, writes a Seed, has Claude Code build it, and reports on each acceptance criterion; this goal took about 6 minutes. `prized ssh` put you in a tmux session on the box, so the run keeps going when you close the laptop, and `prized ssh mango` takes you back to it.

## 5. Open the dashboard [#5-open-the-dashboard]

Ouroboros prints a dashboard address such as `http://localhost:43809`. The dashboard listens only on the box's own localhost, on a port that changes each time, so forward it over SSH from a terminal on your machine, then open the address there:

```bash
ssh -N -L 43809:localhost:43809 mango
```

![The Ouroboros dashboard served from the box, open on a laptop: all five acceptance criteria of the wordfreq goal done](https://prized.dev/docs/ouroboros/dashboard.webp)

## When the box sleeps [#when-the-box-sleeps]

On the free credit, a box pauses after 2 hours idle, but never in its first 24 hours ([Auto-pause](https://prized.dev/docs/boxes#auto-pause)). To keep it up while a long run works:

```bash
prized box auto-pause mango off
```

## Or give each goal a sandbox [#or-give-each-goal-a-sandbox]

A [sandbox](https://prized.dev/docs/sandboxes) is a fresh machine per goal, which you delete afterwards. Nothing is signed in there, so pass your Anthropic API key, or with a Claude subscription `CLAUDE_CODE_OAUTH_TOKEN` from `claude setup-token`:

```bash
ID=$(prized sandbox create --template prized-agent-v1 --env ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" --max-runtime 1h)
prized sandbox exec $ID -- 'curl -LsSf https://astral.sh/uv/install.sh | sh && export PATH="$HOME/.local/bin:$PATH" && curl -fsSL https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.sh | bash'
```

Run the goal; the output arrives when it ends:

```bash
prized sandbox exec $ID --timeout 1h -- 'export PATH="$HOME/.local/bin:$PATH" && mkdir wordfreq && cd wordfreq && git init -q && ouroboros auto "A stdlib-only Python CLI, wordfreq.py, that prints the N most frequent words in a text file, with pytest tests"'
```

Copy out what it built:

```bash
prized sandbox exec $ID -- 'tar czf wordfreq.tgz wordfreq'
prized sandbox cp $ID:wordfreq.tgz .
```

Once `wordfreq.tgz` is on your machine, delete the sandbox:

```bash
prized sandbox rm $ID
```
