# Aspire quickstart

A NetScript workspace is never one process — it is a Fresh app, oRPC services, plugin APIs, background processors, a database, and a cache. Aspire is how we make that whole fleet start with **one command**, wired together, with a real dashboard from the first run. This page is the shortest path to seeing it; the [main Quickstart](https://rickylabs.github.io/netscript/quickstart/) covers installing the CLI and the scaffold in more detail.

> Alpha
>
> NetScript is alpha software and the API is subject to change. Pin versions in real projects.

## What you get

- **One workspace, one command up.** `aspire start` boots the database, the cache, every service, every plugin API, and every background processor — in dependency order, no docker-compose to babysit.
- **Multi-resource wiring, resolved for you.** Connection strings and neighbour endpoints are computed and injected as environment variables before each process starts, so nothing has to discover anything at runtime.
- **The Aspire dashboard.** Live resource list, per-process console logs, and distributed traces in one place — `aspire start` prints its URL and a one-time login token.
- **A TypeScript AppHost — not .NET authoring.** The orchestrator entry point is a generated TypeScript program at `aspire/apphost.mts`, running on an isolated Node runtime inside `aspire/` so it never leaks into your Deno workspace. You write no C#.

> Prerequisites
>
> [Deno](https://docs.deno.com) 2.x
>
> and the
>
> netscript
>
> CLI (install steps in the
>
> Quickstart
>
> ), the external
>
> [.NET Aspire](https://learn.microsoft.com/dotnet/aspire/) CLI
>
> , and a running
>
> Docker
>
> daemon — Aspire provisions Postgres and Redis as local containers.

## The commands

Scaffold a workspace, then bring it up. The Aspire layer lives in its own `aspire/` folder; restore its SDK modules once, then start:

```bash
netscript init my-app --db postgres

cd my-app/aspire
aspire restore   # one-time: downloads the AppHost SDK modules
aspire start     # boots Postgres + Redis + services, prints the dashboard URL
```

When boot settles, open the dashboard URL `aspire start` printed (conventionally `https://localhost:18888`) and paste the login token. Every resource, its logs, and its traces are one click away.

> Database commands come after
>
> netscript db init
>
> ,
>
> db generate
>
> , and
>
> db seed
>
> run from the
>
> workspace root
>
> only once
>
> aspire start
>
> is up — they provision the database
>
> through
>
> the running AppHost. With no Aspire up there is no Postgres for them to reach.

## Prefer no orchestration?

Aspire is the default, not a requirement. Scaffold with `--no-aspire` to skip the orchestration layer entirely — no `aspire/` folder, no dashboard — and start the Fresh app directly:

```bash
netscript init my-app --db postgres --no-aspire
deno task --cwd apps/dashboard dev
```

You take over infrastructure and wiring yourself: bring your own Postgres and cache, hand each process its connection strings. When that trade is the right call — and what exactly you give up — is covered in [Orchestration with Aspire](https://rickylabs.github.io/netscript/netscript/explanation/aspire/).

## Where next

- **Step-by-step recipe:** [Deploy locally with Aspire](https://rickylabs.github.io/netscript/netscript/orchestration-runtime/how-to/deploy-local-aspire/) — the full local flow, including the database sequence and first-run footguns.
- **Why it works this way:** [Orchestration with Aspire](https://rickylabs.github.io/netscript/netscript/explanation/aspire/) — the AppHost, plugin contributions, and the resource graph.
- **Exact symbols and the port map:** [the Aspire reference](https://rickylabs.github.io/netscript/netscript/reference/aspire/) and the [CLI reference](https://rickylabs.github.io/netscript/netscript/cli-reference/).
