# Silos

> Start and supervise cloud computers for coding and desktop agents, inspect their work, and handle machine access and files safely.

A Silo is a cloud computer for an agent. It can hold a repository checkout, the agent's tools, a terminal, and a browser desktop. Builds, Automations, Twice, Estelle CI, and desktop tasks can use Silos, so their work continues without tying up your computer.

[Estelle Cloud](https://app.fatelabs.ca/dashboard/silo) is where you supervise those machines and their sessions. Use [Orchestra](https://docs.fatelabs.ca/orchestra) for a build's plan and [Sessions](https://docs.fatelabs.ca/sessions) for its code review.

## When to use a Silo

- Delegate a coding task that should run independently of your laptop.
- Run a browser or desktop workflow that needs a cloud machine.
- Watch an agent work, answer a question, or take control of its desktop.
- Keep a working environment available while you move between tasks.

A Silo reaches the public internet. Estelle opens no tunnel into a private network, and `localhost` inside a Silo is the Silo itself, so a Silo cannot reach an app that only runs on your laptop or behind your firewall. Give it the repository instead, so it builds and runs its own copy.

A running machine and a ready agent are different states. Wait for the session to show that the agent received its task before treating the launch as working.

## Start an agent

The usual route is to describe the work in [Agent mode](https://docs.fatelabs.ca/agent-mode) and allow its proposal. To start one yourself:

### Open the launcher

Open **Estelle Cloud → Machines** and choose **Start a fresh agent**.

### Set the work and environment

Enter the task and repository as `owner/name`, then choose the available agent and **Keep** setting. Where the launcher offers model or spend-cap settings, review them before starting.

Choose **saved** when you want an environment that can retain its filesystem, installed tools, and browser state while it remains available. Choose **ephemeral** for a machine that is discarded when its work finishes. Saved retention is not a backup: a stopped machine's uncommitted files are not a safe place to keep the only copy of your work.

### Start and follow the session

Choose **Start**. The launcher reports capacity or setup refusals before a machine starts when it can. Follow the new session from the Board, and read its own status for agent readiness and task delivery.

You can also start from a Prism finding or failed check with **Fix with AI**, from an Automation, or from your editor with `estelle_launch_agent`.

### Launch from your editor over MCP

Ask your coding agent to launch a cloud agent with `estelle_launch_agent`. Its main fields are:

| Field | Meaning |
|---|---|
| `repo` | Repository as `owner/name` |
| `harness` | `codex` or `claude-code` |
| `task` | What the cloud agent should do |
| `launch_key` | Your 8–128 character identifier for this launch; reusing it attaches to the existing launch instead of creating a second machine |
| `retention` | `saved` (the default) or `ephemeral` |
| `ref` | Optional branch, tag, or commit to check out |

You can also pass relevant file paths, decisions, commands, and open questions from the current session. The launch uses credits. Read the reply for both machine state and whether the agent and task are ready.

## Supervise work

The **Board** groups agents by whether they need you, are working, are idle, or have settled. Open a card to inspect its session. If an agent is waiting for an answer, reply on its card. Other available controls let you message, wake, recall, or stop the machine; the result says whether the action was confirmed.

The **Session** view has five tabs:

| Tab | Use it for |
|---|---|
| **Worklog** | The operations recorded for the session. Move between entries or return to the latest. |
| **Git** | Any session diff available here. For pull-request diffs and code review, use Sessions instead. |
| **Desktop** | The machine's screen, when the session is bound to a running Silo. |
| **Terminal** | A read-only view of the agent's current terminal. Send messages from the Board rather than typing here. |
| **Files** | Any file content available here. Sessions is the fuller file-review and editing surface. |

Estelle Cloud can report that no session diff or file contents are available. That means the data was not read; it does not prove the agent made no changes.

### Use a desktop safely

Choose **Open the desktop**, then **Take control** only when you need to operate the machine. Coordinate with the agent first so your input does not conflict with its current action.

**Limit:**

Treat a desktop URL as a secret. It carries no separate password, anyone holding it can reach the machine while it runs, and stopping the machine is the only way to revoke that access. Watch-only is advisory, not a security boundary.

Do not paste a desktop URL into chat, tickets, or other shared places. Do not enter production credentials into a machine unless that access is necessary for the task.

## Repository setup

A Silo reads the repository's declared Python and Node requirements during setup:

- Python uses declarations such as `.python-version`, `runtime.txt`, and project metadata. Only CPython is supported.
- Node uses declarations such as `.nvmrc`, `.node-version`, and `package.json`. Node 18, 20, 22, and 24 are available.
- Go and Rust requirements can be detected and reported, but those toolchains are not installed.

If a required Python or Node version cannot be provided, setup reports `TOOLCHAIN-BLOCKED` and does not start the agent. Fix the declaration or provide a compatible project setup rather than treating later test failures as code failures.

## Pause, stop, and retain work

A paused machine retains its recorded state and stops using compute credits; wake it to continue. A stopped machine is shut down. Its session history and anything already pushed remain available, but uncommitted files and machine-local state do not.

Finished runs normally shut down their machines unless another step already needs the environment. The session, branch, commits, and pull request are the durable record of the work. Save important changes to a branch rather than relying on a Silo as permanent storage.

Running Silo time and the agent's work can appear as separate usage. The launcher shows current capacity and retention restrictions before you start. See [Plans and credits](https://docs.fatelabs.ca/plans).

## Related

- [Agent mode](https://docs.fatelabs.ca/agent-mode): Delegate a task and approve its launch.
- [Orchestra](https://docs.fatelabs.ca/orchestra): Follow plans and control builds.
- [Sessions](https://docs.fatelabs.ca/sessions): Inspect changes, pull requests, and terminal records.
