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

# Deploy a Compose App

> Get up and running with Compose in under 5 minutes.

### 1. Install the Compose CLI Extension

If you already have the Goldsky CLI installed, you'll just need to install the Compose extension.

```bash theme={"dark"}
goldsky compose install
```

If you don't already have the Goldsky CLI installed you'll need to start by installing that, then run the above command.

If you run any `goldsky compose <verb>` before installing the extension, it prints an install hint and exits; it no longer auto-installs.

**For macOS/Linux:**

```shell theme={"dark"}
curl https://goldsky.com | sh
```

**For Windows:**

```shell theme={"dark"}
npm install -g @goldskycom/cli
```

<Note>Windows users need to have Node.js and npm installed first. Download from [nodejs.org](https://nodejs.org) if not already installed.</Note>

### 2. Create your app

Create a new Compose project with a working Bitcoin oracle example:

```bash theme={"dark"}
goldsky compose init
```

This command will:

* Prompt you for a project name and create the app under that directory
* Scaffold a complete example app with a working Bitcoin oracle
  ```bash theme={"dark"}
  demo-app/
    compose.yaml              # the app manifest
    tsconfig.json             # TypeScript configuration
    .env                      # local environment variables
    .gitignore
    src/
      tasks/
        bitcoin-oracle.ts     # example task
      lib/
        utils.ts              # shared utilities
  ```

### 3. Start the app locally

`cd` into the project directory that was just created:

```bash theme={"dark"}
cd <your-project-name>
```

Start the app:

```bash theme={"dark"}
goldsky compose start --fork-chains
```

`--fork-chains` lets you run a smart wallet locally. You can also use a private key wallet for your local Compose app. See more [here](/compose/secrets).

Your Compose application is now running! The server starts on port 4000 by default. If 4000 is taken, `start` walks up to port 4009 and prints `Port 4000 is in use, using <port> instead.`. To pin an exact port, pass `-p, --port <port>`; `start` fails fast if that port is taken.

You can test triggering a task like so:

```bash theme={"dark"}
goldsky compose callTask bitcoin_oracle '{}' --env local
```

## Updating the CLI

To update to the latest version, run the update command:

```bash theme={"dark"}
goldsky compose update
```


## Related topics

- [Compose app manifest configuration reference](/compose/app-configuration.md)
- [Deploying and Monitoring](/compose/deploy-monitor.md)
- [Debugging](/compose/debugging.md)
- [Build a Polymarket copy-trader](/compose/guides/build-a-polymarket-copy-trader.md)
- [App Lifecycle](/compose/app-lifecycle.md)
