quilt-cli 0.29.1

Command-line interface for Quilt data packages
# quilt-cli

Command-line interface for [Quilt](https://docs.quilt.bio/) data packages.
Thin wrapper around [`quilt-rs`](../quilt-rs/) — see
[`docs/architecture.md`](../docs/architecture.md) for what each command does
under the hood.

The binary is named `quilt`.

## Install

Recommended (downloads a prebuilt binary):

```sh
cargo binstall quilt-cli
```

Prebuilt binaries are currently published for macOS (x86_64, aarch64)
and Linux (x86_64-gnu). On other platforms, or if `cargo-binstall` is
not installed, build from source:

```sh
cargo install quilt-cli
```

## Commands

| Command     | Purpose                                          |
| ----------- | ------------------------------------------------ |
| `browse`    | Fetch and inspect a remote manifest              |
| `create`    | Create a new local-only package                  |
| `install`   | Install a remote package locally                 |
| `status`    | Show working-directory changes                   |
| `commit`    | Commit a new package revision                    |
| `push`      | Upload a local revision to the remote            |
| `pull`      | Fetch the latest remote revision                 |
| `list`      | List installed packages                          |
| `uninstall` | Remove a package from local tracking             |
| `login`     | Authenticate against a Quilt stack               |

Run `quilt <command> --help` for arguments.

## Global flags

- `--domain <path>` — local domain directory (stores credentials and
  package metadata). Defaults to
  `~/.local/share/com.quiltdata.quilt-rs/`.
- `--home <path>` — directory where packages keep their working files.
  Required on the first invocation against a domain (every command
  validates that a home is set); afterward it is persisted in the
  domain lineage and may be omitted.

## Example

```sh
quilt --home ~/QuiltHome login --host open.quiltdata.com
quilt install quilt+s3://quilt-example#package=akarve/cord19 \
    --namespace akarve/cord19
quilt status --namespace akarve/cord19
```

`--home` is needed once to initialize the domain; the later commands pick
it up from the saved lineage.

URIs follow the [Quilt+ URI format](https://docs.quilt.bio/quilt-platform-catalog-user/uri).

## Fully local workflow

No login or remote is required to create, edit, and version a package
entirely on disk:

```sh
# --home is only needed on the first invocation against a domain
quilt --home ~/QuiltHome create --namespace me/local-pkg \
    --message "Initial revision"

# Package files live under <home>/<namespace>; add/edit them directly
mkdir -p ~/QuiltHome/me/local-pkg
echo "a,b,c" > ~/QuiltHome/me/local-pkg/data.csv

quilt status --namespace me/local-pkg
quilt commit --namespace me/local-pkg --message "Add data.csv" --no-workflow

quilt list
```

Add `--source <dir>` to `create` to populate the package from an existing
directory instead of starting empty. The package stays local-only — usable
with `status`, `commit`, and `uninstall` — until a `push` (which then
requires `--bucket`/`--origin` for the first push) sends a revision to a
remote.