Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
246 changes: 246 additions & 0 deletions apps/docs/content/docs/compute/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
---
title: Prisma Compute
description: One-page internal reference for deploying apps to Prisma Compute during EA.
badge: early-access
url: /compute
metaTitle: Prisma Compute
metaDescription: Internal one-page reference for deploying Next.js and Bun apps to Prisma Compute, managing environment variables, and streaming logs.
---

App hosting for Next.js and Bun, driven from the CLI. Two CLIs are usable today, pick whichever you prefer:

- [`@looma/prisma-cli`](https://www.npmjs.com/package/@looma/prisma-cli): new unified `prisma app` surface.
- [`@prisma/compute-cli`](https://www.npmjs.com/package/@prisma/compute-cli): original `compute` surface.

## Quickstart

Pick your starter and run the steps below.

<Tabs items={['Next.js', 'Bun']}>

<Tab value="next.js">

```bash
pnpm create next-app@latest my-app --yes
cd my-app
```

Enable standalone output in `next.config.ts`:

```typescript
const nextConfig = { output: "standalone" };
export default nextConfig;
```

</Tab>

<Tab value="bun">

```bash
mkdir my-app && cd my-app && bun init --yes
```

Replace `index.ts`:

```typescript
Bun.serve({
port: Number(process.env.PORT ?? 3000),
fetch() {
return new Response("Hello from Compute");
},
});
```

</Tab>

</Tabs>

Authenticate, then deploy:

<CodeBlockTabs defaultValue="looma">
<CodeBlockTabsList>
<CodeBlockTabsTrigger value="looma">@looma/prisma-cli</CodeBlockTabsTrigger>
<CodeBlockTabsTrigger value="compute">@prisma/compute-cli</CodeBlockTabsTrigger>
</CodeBlockTabsList>
<CodeBlockTab value="looma">

```bash
npx @looma/prisma-cli auth login
npx @looma/prisma-cli app deploy --app my-app --http-port 3000
```

</CodeBlockTab>
<CodeBlockTab value="compute">

```bash
bunx @prisma/compute-cli login
bunx @prisma/compute-cli deploy --service-name my-app --http-port 3000
```

</CodeBlockTab>
</CodeBlockTabs>

The first deploy bootstraps project context. Re-deploys reuse the saved selection, so `app deploy` (or `deploy`) is enough.

In CI, set `PRISMA_API_TOKEN` instead of running `auth login`.

## Inspect a deployment

<CodeBlockTabs defaultValue="looma">
<CodeBlockTabsList>
<CodeBlockTabsTrigger value="looma">@looma/prisma-cli</CodeBlockTabsTrigger>
<CodeBlockTabsTrigger value="compute">@prisma/compute-cli</CodeBlockTabsTrigger>
</CodeBlockTabsList>
<CodeBlockTab value="looma">

```bash
npx @looma/prisma-cli app list-deploys
npx @looma/prisma-cli app show-deploy <deployment-id>
```

</CodeBlockTab>
<CodeBlockTab value="compute">

```bash
bunx @prisma/compute-cli versions list
bunx @prisma/compute-cli versions show <version-id>
```

</CodeBlockTab>
</CodeBlockTabs>

## Environment variables

Set them inline on a deploy, or update without rebuilding (cuts a new version).

**During a deploy**, repeat `--env` per variable:

<CodeBlockTabs defaultValue="looma">
<CodeBlockTabsList>
<CodeBlockTabsTrigger value="looma">@looma/prisma-cli</CodeBlockTabsTrigger>
<CodeBlockTabsTrigger value="compute">@prisma/compute-cli</CodeBlockTabsTrigger>
</CodeBlockTabsList>
<CodeBlockTab value="looma">

```bash
npx @looma/prisma-cli app deploy \
--env DATABASE_URL=postgresql://example \
--env NODE_ENV=production
```

</CodeBlockTab>
<CodeBlockTab value="compute">

```bash
bunx @prisma/compute-cli deploy \
--env DATABASE_URL=postgresql://example \
--env NODE_ENV=production
```

</CodeBlockTab>
</CodeBlockTabs>

**Without rebuilding**: same flag shape, dedicated command. Old version stays live until the new one is healthy.

<CodeBlockTabs defaultValue="looma">
<CodeBlockTabsList>
<CodeBlockTabsTrigger value="looma">@looma/prisma-cli</CodeBlockTabsTrigger>
<CodeBlockTabsTrigger value="compute">@prisma/compute-cli</CodeBlockTabsTrigger>
</CodeBlockTabsList>
<CodeBlockTab value="looma">

```bash
npx @looma/prisma-cli app update-env --env STRIPE_KEY=sk_live_xxx
npx @looma/prisma-cli app list-env
```

</CodeBlockTab>
<CodeBlockTab value="compute">

```bash
bunx @prisma/compute-cli env update --env STRIPE_KEY=sk_live_xxx
bunx @prisma/compute-cli env update --unset-env LEGACY_FLAG
```

</CodeBlockTab>
</CodeBlockTabs>

## Logs

Stream logs for a specific compute version (or deployment):

<CodeBlockTabs defaultValue="compute">
<CodeBlockTabsList>
<CodeBlockTabsTrigger value="compute">@prisma/compute-cli</CodeBlockTabsTrigger>
<CodeBlockTabsTrigger value="looma">@looma/prisma-cli</CodeBlockTabsTrigger>
</CodeBlockTabsList>
<CodeBlockTab value="compute">

```bash
bunx @prisma/compute-cli logs <compute-version-id>
bunx @prisma/compute-cli logs <compute-version-id> --tail 200
bunx @prisma/compute-cli logs <compute-version-id> --from-start
bunx @prisma/compute-cli logs <compute-version-id> --cursor <byte-offset>
```

</CodeBlockTab>
<CodeBlockTab value="looma">

```bash
npx @looma/prisma-cli app logs
npx @looma/prisma-cli app logs --deployment <deployment-id>
npx @looma/prisma-cli app logs --tail 200
```

</CodeBlockTab>
</CodeBlockTabs>

EA log limits: ~10-min stream cap (reconnect with `--cursor`), one concurrent stream per version.

## Limitations

- Next.js apps must use `output: "standalone"`.
- First-class support for **Next.js** and **Bun/Hono** only.
- `env update` / `app update-env` cuts a new compute version. The old version stays live until the new one is healthy.
- No bulk `.env` import yet, repeat `--env KEY=VALUE` for each variable.
- Logs: 10-min stream cap, one concurrent stream per version.

## Useful CLI inventory

<CodeBlockTabs defaultValue="looma">
<CodeBlockTabsList>
<CodeBlockTabsTrigger value="looma">@looma/prisma-cli</CodeBlockTabsTrigger>
<CodeBlockTabsTrigger value="compute">@prisma/compute-cli</CodeBlockTabsTrigger>
</CodeBlockTabsList>
<CodeBlockTab value="looma">

```bash
prisma auth login | logout | whoami
prisma project ...
prisma app build | run | deploy | update-env | list-env
prisma app show | open | logs
prisma app list-deploys | show-deploy <id> | promote <id> | rollback | remove
```

</CodeBlockTab>
<CodeBlockTab value="compute">

```bash
compute login | logout
compute deploy [--project --service --service-name --region --path
--entrypoint --build-type auto|bun|nextjs --http-port
--env KEY=VALUE --unset-env KEY
--skip-build --skip-promote --destroy-old-version --json]
compute logs <version-id> [--tail --from-start --cursor --json]
compute env update [--env --unset-env --http-port]
compute versions list | show | start | stop | promote | delete | destroy
compute services list
compute projects list
```

</CodeBlockTab>
</CodeBlockTabs>

Need a flag that isn't here? Run `--help` on the relevant command. Both CLIs have stable, browsable help output.

Questions or breakage during EA: `#product-compute`.
6 changes: 6 additions & 0 deletions apps/docs/content/docs/compute/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"title": "Compute",
"root": true,
"icon": "Cpu",
"pages": ["index"]
}
1 change: 1 addition & 0 deletions apps/docs/content/docs/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"(index)",
"orm",
"postgres",
"compute",
"cli",
"guides",
"studio",
Expand Down
5 changes: 5 additions & 0 deletions apps/docs/src/lib/layout.shared.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ export const links: LinkItemTypeWithActivePaths[] = [
url: "/postgres",
active: "nested-url",
},
{
text: "Compute",
url: "/compute",
active: "nested-url",
},
{
text: "CLI",
url: "/cli",
Expand Down
Loading