# Forks

A fork is a new computer that starts from another computer's files and configuration. The computer you fork keeps working as it was, and the two change separately from then on.

## Fork a computer

Name the computer to fork as the new computer's `source` in `NewComputer`:

```rust
let source = Source::Fork { computer: id };
```

Fork as often as you need: several agents can each take a fork and try a different approach from the same files, and you keep the one that works.

## What a fork keeps

A fork starts with the files on the computer's disk and its supported configuration. It does not take over what was running: commands, live streams, open connections and the credentials they used stay with the computer you forked.

A computer's source never changes, so a fork stays a fork of the computer it came from.

## Storage

A fork's storage counts the bytes it inherits, and `create` refuses a source larger than the storage you give the fork. Inherited bytes cost 40% less than the fork's own. See [Pricing](https://elios.ai/pricing).

## Next steps

* [Templates](/computer/concepts/templates): prepare computers before an agent starts
* [Commands](/computer/concepts/commands): run shell commands on a computer
