# Install AIP

This guide installs the AIP daemon and operator CLI from a source checkout. AIP
does not currently document a public binary distribution, so a reproducible
source build is the supported installation path.

## Supported Development Platforms

- Linux and macOS are part of the current repository test matrix.
- Rust 1.88 or newer is required.
- Windows has not completed the public-release qualification matrix.

Install Rust with `rustup`, then select a compatible stable toolchain. The
workspace declares Rust 1.88 as its minimum supported version and selects the
moving `stable` channel in `rust-toolchain.toml`; it does not pin an exact Rust
patch release.

## Build from Source

From the repository root:

```sh
cargo build --locked -p aipd -p aipctl
```

The development binaries are written to `target/debug/aipd` and
`target/debug/aipctl` unless `CARGO_TARGET_DIR` is set.

Verify that both command surfaces are available:

```sh
target/debug/aipd --help
target/debug/aipctl --help
```

## Install into the Cargo Binary Directory

To make the commands available through `PATH`:

```sh
cargo install --locked --path crates/aipd
cargo install --locked --path crates/aipctl
```

Cargo normally installs into `$HOME/.cargo/bin`. Ensure that directory is in
`PATH`, then run:

```sh
aipd --help
aipctl --help
```

Use `--locked` so dependency resolution matches the reviewed `Cargo.lock`.

## Optional Runtime Dependencies

The basic quickstart needs no external service. Add infrastructure only for the
deployment features you use:

| Dependency | Needed for |
|---|---|
| PostgreSQL | Shared durable state and multi-replica worker ownership |
| NATS | Native request/reply routing and queue-group consumers |
| Docker | Repository qualification stacks and isolated product tests |
| External product | The connector that targets that product |

PostgreSQL, NATS, and product credentials are not required to run the local
health capability.

## Build Profiles and Disk Use

Rust all-feature builds and Docker qualification images can consume substantial
disk space. Use one deliberate target directory per checkout and inspect it
before deletion:

```sh
du -sh target 2>/dev/null || true
docker system df
```

`cargo clean` removes this checkout's Rust artifacts. Docker cleanup affects
shared machine state and must be reviewed separately; do not run broad Docker
prune commands on a host that contains retained images or volumes.

## Release Identity

Before qualification or deployment, record:

```sh
git rev-parse HEAD
git status --short
cargo metadata --no-deps --format-version 1
```

A clean tag, a built image, and a running deployment are different evidence.
Qualify the exact artifact that will receive traffic.

Continue with the [Quickstart](quickstart.md). For deployment dependencies and
security boundaries, read [Production Deployment](../guides/production-deployment.md).
