---
name: platformplatform-aspire-restart
description: "Start or restart the .NET Aspire AppHost via the developer CLI. Always use this, never the developer CLI's `run` command, `aspire run`, or `aspire restart`."
license: "MIT"
metadata:
  decimalai-skill-id: "977fcb59-f832-4030-a87b-7fd86f3890f6"
  decimalai-version-id: "a6febb2c-1935-49c5-9014-15c0e9bdc26a"
  decimalai-version: "1"
  decimalai-body-sha256: "0b663d433eb2d6ac3531a107bd438e57bd86ede2cf3f30f75c7a3ce511eb40c6"
  decimalai-name: "platformplatform/aspire-restart"
  decimalai-format: "1"
  decimalai-invocation: "model"
  decimalai-category: "devops"
  decimalai-source: "https://app.decimal.ai/s/platformplatform-aspire-restart@1/SKILL.md"
---
# Restart Aspire

```bash
dotnet run --project developer-cli -- restart
```

Use `developer-cli` exactly as written - do not expand to an absolute worktree path.

Stops any running Aspire AppHost and starts a fresh instance. Detached by default - the CLI returns immediately while Aspire keeps running.

Always use `restart`, even when nothing is running yet. It is a no-op when Aspire is not up, and the safe default in every other case. Never use the developer CLI's `run` command, `aspire run`, or `aspire restart`.

- `--public-url <url>` - set `PUBLIC_URL` (e.g. an ngrok URL)

## When to use

- After backend or frontend changes - `restart` is the safe default; it works whether Aspire is up or not.
- To run database migrations.
- When hot reload breaks or stops picking up changes.
- Before running e2e tests on a fresh stack.

## Port allocation

Fully automatic. On a fresh checkout the developer CLI bootstraps `.workspace/port.txt`: the root gets the default base port; worktrees scan a fixed list of candidates and pick the first one whose ports are all free. Once written, the file is the authoritative allocation for the lifetime of the checkout.

## Output is fire-and-forget

The CLI prints `Aspire is restarting on https://app.dev.localhost:<port>` and exits before Aspire is fully ready.

## Stopping Aspire

To stop without restarting, run `dotnet run --project developer-cli -- stop`. Rarely needed - prefer `restart` for everyday use.
