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

# Deploy to Production

> Choose the right production deployment shape for a Redop HTTP server and then follow a platform-specific guide.

Redop is runtime-agnostic. The same MCP app can run on Bun (`.listen()`), Node (`listenNode`), Cloudflare Workers (`cloudflare`), or Vercel (`vercel`).

## Choose a platform

| Platform           | Best for                                                             | Recommended transport            | `create-redop-app` preset                | Fit today             |
| ------------------ | -------------------------------------------------------------------- | -------------------------------- | ---------------------------------------- | --------------------- |
| Railway            | Fastest hosted Bun setup                                             | `http` + `.listen()`             | `railway`                                | Recommended           |
| Fly.io             | Always-on Docker deployment                                          | `http` + `.listen()`             | `fly-io`                                 | Recommended           |
| Docker             | Self-hosting or custom infra                                         | `http` + `.listen()`             | `fly-io` gives you a starting Dockerfile | Recommended           |
| Unkey              | Docker deployment with preview environments, rollbacks, and Sentinel | `http` + `.listen()`             | `unkey`                                  | Supported             |
| Node.js            | Long-lived Node hosts                                                | `http` via `@redopjs/redop/node` | none                                     | Supported             |
| Cloudflare Workers | Edge/stateless MCP                                                   | fetch adapter                    | `cloudflare`                             | Supported (stateless) |
| Vercel / Edge      | Function/stateless MCP                                               | fetch adapter                    | `vercel`                                 | Supported (stateless) |

## Redop hosting model

* Use `http` for hosted MCP servers.
* Bun default: bind to `0.0.0.0`, read `PORT`, expose `/mcp` via `.listen(...)`.
* Adapter targets: export `cloudflare(app)`, `vercel(app)`, or call `listenNode(app)`.
* Prefer MCP `2026-07-28` on serverless/edge.
* If your platform wants a separate health route, enable one with `health: true` or `health: { path: "/health" }`.

`stdio` is for local MCP host integrations. It is not the normal production path for a hosted Redop HTTP server.

## Quick verification shape

```sh theme={null}
curl -i -X POST http://localhost:3000/mcp \
  -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"manual-check","version":"1.0.0"}}}'
```

For serverless/edge, prefer:

```sh theme={null}
curl -i -X POST https://your-host/mcp \
  -H 'Content-Type: application/json' \
  -H 'MCP-Protocol-Version: 2026-07-28' \
  -H 'Mcp-Method: server/discover' \
  --data '{"jsonrpc":"2.0","id":0,"method":"server/discover","params":{}}'
```

## Recommended paths

* [Deploy to Railway](/docs/guides/deploy/railway) for the shortest hosted Bun path
* [Deploy to Fly.io](/docs/guides/deploy/fly-io) for Docker always-on
* [Deploy with Docker](/docs/guides/deploy/docker) for self-hosting
* [Deploy to Unkey](/docs/guides/deploy/unkey) for Docker + previews / Sentinel
* [Deploy on Node.js](/docs/guides/deploy/node) for long-lived Node
* [Deploy to Cloudflare Workers](/docs/guides/deploy/cloudflare) for Workers
* [Deploy to Vercel](/docs/guides/deploy/vercel) for Vercel / Edge
* [Runtime adapters reference](/docs/reference/runtime-adapters)
