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

# CLI reference

> Commands and flags for volumes, mounts, branches, and snapshots.

The `amulet` CLI uses the API key in `AMULET_API_KEY` and mounts storage through
the Linux FUSE client.

```bash theme={null}
amulet --help
amulet --version
```

## Volume references

Use a volume name by itself or add `@branch`:

```text theme={null}
volume
volume@branch
```

Names are 1–63 characters, start and end with a letter or number, and may
contain `.`, `_`, or `-` internally. Commands that accept a branch also provide
`--branch <name>` as an alternative to `@branch`.

## `amulet create`

Create a volume without mounting it:

```bash theme={null}
amulet create <volume>
```

`amulet mount` also creates a missing volume automatically.

## `amulet mount`

Mount a volume, branch, or snapshot:

```bash theme={null}
amulet mount <volume>[@<branch>] [path]
```

If `path` is omitted, Amulet uses `./<volume>`. A missing volume or branch is
created automatically.

| Flag                         | Purpose                                                                        |
| ---------------------------- | ------------------------------------------------------------------------------ |
| `--branch <name>`            | Select a branch without using `@branch`.                                       |
| `--from <branch>`            | Create a missing target branch from another branch.                            |
| `--from-snapshot <snapshot>` | Create a missing target branch from a snapshot name, ID, or immutable version. |
| `--snapshot <snapshot>`      | Mount a snapshot by name, ID, or immutable version. The mount is read-only.    |
| `--ro`                       | Mount a live volume or branch read-only.                                       |

Examples:

```bash theme={null}
# Writable volume
amulet mount corpus ./corpus

# Writable branch from the volume head
amulet mount corpus@experiment ./experiment

# Writable branch from another branch
amulet mount corpus@review ./review --from experiment

# Writable branch from a volume snapshot
amulet mount corpus@retry ./retry --from-snapshot baseline

# Read-only snapshot
amulet mount corpus ./baseline --snapshot baseline
```

The mount command stays in the foreground until the filesystem is unmounted.

## `amulet unmount`

Unmount a local path:

```bash theme={null}
amulet unmount [path]
```

If `path` is omitted, Amulet uses the current directory.

## `amulet list`

List volumes in the API key's organization:

```bash theme={null}
amulet list
```

## `amulet branches`

List branches belonging to a volume:

```bash theme={null}
amulet branches <volume>
```

## `amulet snapshot`

Save the current state of a volume or branch:

```bash theme={null}
amulet snapshot <volume>[@<branch>] [--name <name>]
```

| Flag              | Purpose                                  |
| ----------------- | ---------------------------------------- |
| `--name <name>`   | Assign an optional name to the snapshot. |
| `--branch <name>` | Select a branch without using `@branch`. |

The command prints the immutable storage version.

## `amulet snapshots`

List snapshots for a volume or branch:

```bash theme={null}
amulet snapshots <volume>[@<branch>]
```

Use `--branch <name>` as an alternative to `@branch`.

## `amulet delete`

Delete a branch, or delete an entire volume with `--force`:

```bash theme={null}
amulet delete <volume>[@<branch>]
```

| Flag              | Purpose                                  |
| ----------------- | ---------------------------------------- |
| `--branch <name>` | Select a branch without using `@branch`. |
| `--force`         | Required when deleting an entire volume. |
| `--yes`, `-y`     | Skip the volume-deletion confirmation.   |

Examples:

```bash theme={null}
# Delete one branch
amulet delete corpus@experiment

# Delete a volume and all of its branches and snapshots
amulet delete corpus --force
```

<Warning>
  Deletion cannot be undone. `--yes` is intended only for reviewed,
  non-interactive workflows.
</Warning>
