# Download

## Install with apt

Debian 12 or later and Ubuntu 22.04 or later, on amd64 and arm64
(including AWS Graviton). Needs `curl`:

```sh
sudo curl -fsSLo /etc/apt/keyrings/siftp.gpg https://apt.siftp.org/siftp-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/siftp.gpg] https://apt.siftp.org stable main" | sudo tee /etc/apt/sources.list.d/siftp.list
sudo apt update && sudo apt install siftpd
```

The repository is signed with an Ed25519 key, fingerprint
`705C FD11 EA2D 784D 8110 F551 B34A 5D63 8C91 9943`. Compare it with
`gpg --show-keys /etc/apt/keyrings/siftp.gpg`. The package starts the
service with the hardened systemd unit; what it sets up and how to add
users: [Operations](/docs/operations.html#debian-or-ubuntu-package).

## Releases

Each release has, for Linux x86_64 and aarch64:

| File | Contents |
| --- | --- |
| `siftpd-<version>-<arch>-linux.tar.gz` | Binary, example config, systemd unit, logrotate and Prometheus files, licenses |
| `siftpd_<version>-1_<arch>.deb` | Debian/Ubuntu package with a hardened systemd unit |
| `siftpd-<version>-<arch>.cdx.json` | CycloneDX SBOM |
| `SHA256SUMS` | Checksums for all files |
| `*.sig`, `*.pem` | Sigstore signatures and certificates |

Plus a multi-arch container image, signed with cosign. How to verify:
[Operations](/docs/operations.html#verify-a-release).

The binaries link glibc 2.35 or newer (Ubuntu 22.04, Debian 12, RHEL 9
and later).

## Build from source

```sh
cargo build --release -p siftpd                     # assembly kernels on
cargo build --release -p siftpd --features io-uring # plus the io_uring data path (Linux)
cargo build --release -p siftpd --no-default-features # pure Rust
```

Requirements: Rust 1.89 or newer and a C compiler (for `ring` and the
assembly kernels). Packages:

```sh
cargo deb -p siftpd                                  # .deb (cargo install cargo-deb)
docker build -f packaging/container/Dockerfile -t siftp .
```

## Platforms

| Platform | Status |
| --- | --- |
| Linux x86_64, aarch64 | Supported; all fast paths |
| macOS (Apple silicon, Intel) | Supported for small deployments; pooled data path; launchd plist in `packaging/launchd/` |
| Other Unix | Builds with the pure-Rust paths; not tested in CI |
| Windows | Builds (CI lane, `tests/windows/cross-check.sh`) and passes a smoke test under Wine. Not supported for deployment: no service integration, and secret files do not get owner-only permissions |

## Verify a build

```sh
cargo test --workspace
tests/interop/run.sh target/release/siftpd     # needs curl, lftp, OpenSSH, python3
bench/run.sh --quick                           # needs Docker
```

MIT or Apache-2.0, at your option.
