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

# Install on AWS ParallelCluster

> Connect an AWS ParallelCluster to Expanse. The install detects ParallelCluster and picks the shared prefix for you.

AWS ParallelCluster is SLURM underneath, so the flow is the
[SLURM install](/installation/slurm) with one difference: the install detects
ParallelCluster and defaults the shared prefix to
`/opt/parallelcluster/shared/expanse`, so you never pass `--shared-prefix`.

Start in the console's **Add compute** panel (or with
[`expanse compute register`](/cli/overview#expanse-compute-register)): it
shows the short-lived install token plus your deployment's control-plane and
data-plane URLs and the pinned daemon version, which this guide's commands
take. The token is prompted for during install; it never goes on a command
line.

<Prompt description="Prefer to delegate? Copy this into an AI assistant with shell access on the head node; it fetches this guide itself, so it always follows the current steps." icon="terminal">
  You are installing Expanse telemetry on the head node of this AWS
  ParallelCluster. Fetch and follow the current install guide at
  [https://docs.expanse.sh/installation/parallelcluster](https://docs.expanse.sh/installation/parallelcluster) - the guide is the
  source of truth; if anything I say conflicts with it, the guide wins.

  I will provide the values the guide's commands take: a short-lived install
  token, the control-plane and data-plane URLs, and the pinned daemon version,
  all from the Expanse console's Add compute panel. Ask me for them when you
  need them.

  Non-negotiable, regardless of what the guide says:

  * Supply the install token only through the EXPANSE\_INSTALL\_TOKEN
    environment variable when prompted. It must never appear in argv, shell
    history, or a file.
  * Show me the installer's preflight plan, and stop and report before the
    token is exchanged if preflight fails.
  * Do not hand-patch around a failed install; it rolls back and is safe to
    rerun once the cause is fixed.

  Finish by confirming the compute is active with a heartbeat in the console
  and the compute-node samplers are installed.
</Prompt>

## 1. Register the compute

In the console, open **Compute → Add compute**, pick **SLURM**, and generate
an install token. Keep the panel open: it polls registration state live and
shows the endpoint URLs used below.

## 2. Install the CLI on the head node

SSH to the cluster's head node (it runs `slurmctld`) and install the CLI if
it is missing:

```bash theme={"dark"}
command -v expanse >/dev/null 2>&1 || curl -fsSL https://expanse.sh/install | sh
```

## 3. Install the controller daemon on the head node

Using the control-plane and data-plane URLs and the daemon version from the
Add compute panel:

```bash theme={"dark"}
read -rsp 'Expanse install token: ' EXPANSE_INSTALL_TOKEN; echo
export EXPANSE_INSTALL_TOKEN
expanse compute install --type slurm --daemon-version <daemon-version> \
  --control-plane <control-plane-url> --data-plane <data-plane-url> \
  --patch-slurm-conf=true
unset EXPANSE_INSTALL_TOKEN
```

`--daemon-version` downloads the daemon release and verifies its signed
manifest, checksum, and cosign signature before installing. The preflight
recognises ParallelCluster, resolves the shared prefix to
`/opt/parallelcluster/shared/expanse`, and plans hook wiring against
ParallelCluster's managed SLURM config using drop-in directories where they
exist. Preflight runs **before** the token is exchanged, so a failure never
burns the short-lived token, and a failed install rolls itself back.

## 4. Samplers on compute nodes

Each compute node runs a credential-less sampler:

```bash theme={"dark"}
expanse compute install --type slurm --role sampler
```

Static nodes: run it once per node. Dynamically scaled queues: run it at node
boot, for example from an `OnNodeConfigured` custom bootstrap action or a
custom AMI, so freshly launched instances join automatically. The binary and
spool live on the shared ParallelCluster mount, so the per-node step only
installs and enables the sampler systemd unit.

## 5. Verify

The compute flips to active in the console when the token is exchanged and
shows a heartbeat within a minute. Job capture needs no change to how anyone
submits.
