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

# Deploy

> Deploy your App and share it to your users

You can deploy your Skybridge App as a Node.js server on any compatible infrastructure provider, or to Cloudflare Workers via the `nodejs_compat` runtime.

Below are some easy options closely integrated with Skybridge.

## Alpic Cloud platform

### Instant deploy to Alpic

**[Alpic](https://alpic.ai)** is a developer-friendly cloud platform for deploying and hosting MCP Apps. It is also the company behind Skybridge :)

To deploy your App on Alpic you can:

1. Create a free account on [app.alpic.ai](https://app.alpic.ai)
2. Deploy your App either by:
   * Pushing your App to Github, and connecting it to Alpic for automatic deployment at each commit.
   * Using the [Alpic CLI](https://docs.alpic.ai/cli/overview):

<CodeGroup>
  ```bash npm theme={null}
  npm run deploy
  ```

  ```bash pnpm theme={null}
  pnpm deploy
  ```

  ```bash yarn theme={null}
  yarn deploy
  ```

  ```bash bun theme={null}
  bun run deploy
  ```
</CodeGroup>

Once your App is deployed, you will be able to access specific MCP analytics, logs, and test your app remotely in the Alpic Playground.

Learn more about deploying to Alpic in the [Alpic documentation](https://docs.alpic.ai/).

### Alpic MCP App

Alpic also provides its own [MCP App](https://docs.alpic.ai/features/mcp-server) that lets you manage your apps directly from your favorite MCP Client. Connect to the Alpic MCP Server using:

```
https://mcp.alpic.ai/mcp
```

## Cloudflare Workers

Skybridge runs on Cloudflare Workers via [Wrangler](https://developers.cloudflare.com/workers/wrangler/install-and-update/) and the `nodejs_compat` runtime. Static assets (your built views) are served by Cloudflare's edge directly; the worker handles `/mcp` traffic and any other dynamic routes.

### Configure

Add a `wrangler.jsonc` at your project root:

```jsonc theme={null}
{
  "name": "your-skybridge-app",
  "main": "dist/server.js",
  "compatibility_date": "2025-09-01",
  "compatibility_flags": ["nodejs_compat"],
  "assets": { "directory": "dist/assets" },
  "define": {
    "process.env.NODE_ENV": "\"production\""
  }
}
```

Each setting is load-bearing:

* **`compatibility_date >= 2025-09-01`** + **`nodejs_compat`** — enables `cloudflare:node`'s `httpServerHandler`, which Skybridge uses to bridge the Express app to the Workers fetch event.
* **`assets.directory`** — points at the views built by `skybridge build`. Cloudflare serves these at the edge before requests reach your worker.
* **`define.process.env.NODE_ENV`** — forces production mode even under `wrangler dev`. Without it, wrangler defaults to `development` locally and Skybridge's dev tooling (Vite, the devtools server) gets pulled into the worker bundle, where neither runs.

### Build and deploy

<CodeGroup>
  ```bash npm theme={null}
  npm run build
  npx wrangler deploy
  ```

  ```bash pnpm theme={null}
  pnpm build
  pnpm dlx wrangler deploy
  ```

  ```bash yarn theme={null}
  yarn build
  yarn dlx wrangler deploy
  ```

  ```bash bun theme={null}
  bun run build
  bunx wrangler deploy
  ```
</CodeGroup>

### Test locally

`wrangler dev` runs your worker in workerd on your machine — the same runtime as production, not a Node.js fallback:

<CodeGroup>
  ```bash npm theme={null}
  npm run build
  npx wrangler dev
  ```

  ```bash pnpm theme={null}
  pnpm build
  pnpm dlx wrangler dev
  ```

  ```bash yarn theme={null}
  yarn build
  yarn dlx wrangler dev
  ```

  ```bash bun theme={null}
  bun run build
  bunx wrangler dev
  ```
</CodeGroup>

<Note>
  Skybridge's local dev server (`skybridge dev`) and the Cloudflare path are independent. Use `skybridge dev` for fast iteration on Node with HMR; use `wrangler dev` to validate the production worker bundle before shipping.
</Note>

## Docker

Projects created with the [Skybridge scaffolder](/quickstart/create-new-app#scaffold-your-project) include a multi-stage `Dockerfile` so you can self-host on any container platform:

<CodeGroup>
  ```bash npm theme={null}
  npm install
  docker build -t my-app .
  docker run -p 3000:3000 my-app
  ```

  ```bash pnpm theme={null}
  pnpm install
  docker build -t my-app .
  docker run -p 3000:3000 my-app
  ```

  ```bash yarn theme={null}
  yarn install
  docker build -t my-app .
  docker run -p 3000:3000 my-app
  ```
</CodeGroup>

<Note>
  The package manager is detected from the lockfile (`package-lock.json`, `yarn.lock`, or `pnpm-lock.yaml`). Bun and Deno are not supported yet: you'll need to adapt the build stage inside the Dockerfile.
</Note>

## What's Next?

<CardGroup cols={2}>
  <Card title="Core Concepts" icon="lightbulb" href="/concepts">
    Learn how Skybridge extends the raw APIs with React hooks
  </Card>

  <Card title="API Reference" icon="book" href="/api-reference">
    Browse the complete API documentation
  </Card>
</CardGroup>
