> For the complete documentation index, see [llms.txt](https://firestonevm.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://firestonevm.gitbook.io/docs/install.md).

# Install

Getting the Firestone executable onto a Linux x86\_64 host, from the release or from source.

The published release is a standalone x86\_64 musl executable:

```sh
curl -fsSL https://raw.githubusercontent.com/0xchasercat/firestone/main/install.sh | sh
```

To place the executable yourself instead, download the release asset and install it:

```sh
install -Dm0755 firestone-v*-x86_64-unknown-linux-musl "$HOME/.local/bin/firestone"
firestone version
```

The asset is named for its release, so substitute the version you downloaded when the glob matches more than one file. `version` reports the embedded `passt` and `qemu-img` payload hashes, which Firestone verifies again before it materializes them under its own data directory.

You need at least 5 GB free on the filesystem holding Firestone's data directory, and an OpenSSH client on the host. Install only the client package:

```sh
# Ubuntu 24.04
sudo apt-get install openssh-client

# Fedora 44
sudo dnf install openssh-clients

# Arch Linux
sudo pacman -S openssh
```

## Build from source

Rust 1.85 or newer builds the workspace. A plain `cargo build` is a development build. It keeps a PATH fallback for the helper binaries, so you can develop against your own `passt` or `qemu-img`.

```sh
cargo build --release
```

For the standalone release build, which embeds the pinned helpers and refuses a missing or mismatched input, use the release script:

```sh
scripts/build-release.sh --target x86_64-unknown-linux-musl
```

## Uninstall

`firestone uninstall` removes the executable you ran it with and keeps everything else:

```sh
firestone uninstall
```

It lists what it will remove, asks once, and then prints where your machines and images still live. Pass `--yes` to answer ahead of time. A run with no terminal, or one with `--json`, has nowhere to ask the question, so it stops and tells you to pass `--yes`.

To delete the data too, add `--purge`:

```sh
firestone uninstall --purge
```

That removes the config, data and runtime directories, which deletes every machine, image and snapshot on this host. It is confirmed twice, and refused while a machine is running: stop them first.

Uninstall removes only files this installation owns. If you installed Firestone with a package manager, the executable lives under `/usr` or `/opt` and uninstall refuses it, because that copy belongs to the package manager; remove it with the same tool that installed it.

Next: [check the host and boot your first machine](/docs/quickstart.md). The full page list is in the [documentation index](/docs/readme.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://firestonevm.gitbook.io/docs/install.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
