[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-xai-neon":3,"mdc--9q8l8l-key":39,"related-repo-xai-neon":2972,"related-org-xai-neon":3004},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":28,"repoUrl":29,"updatedAt":30,"license":31,"forks":32,"topics":33,"repo":34,"sourceUrl":37,"mdContent":38},"neon","build applications with Neon platform","Overview of the Neon platform for apps and agents, spanning Postgres, Auth, Data API, and the new services: Object Storage, Compute Functions, and AI Gateway. Use whenever \"Neon\" is mentioned for an overview of how to work with Neon and how to get started. Otherwise, the individual capabilities are the triggers: \"object storage\" or \"S3-compatible storage\", \"serverless functions\", \"background jobs\", or \"run code near my database\", \"AI gateway\", \"LLM proxy\", \"model routing\", or \"call an LLM\" → AI Gateway; \"database\", \"Postgres\", or \"authentication\" → Postgres and Auth.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"xai","xAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fxai.png","xai-org",[13,16,19,22,25],{"name":14,"slug":4,"type":15},"Neon","tag",{"name":17,"slug":18,"type":15},"Database","database",{"name":20,"slug":21,"type":15},"PostgreSQL","postgresql",{"name":23,"slug":24,"type":15},"Storage","storage",{"name":26,"slug":27,"type":15},"Serverless","serverless",78,"https:\u002F\u002Fgithub.com\u002Fxai-org\u002Fplugin-marketplace","2026-07-18T05:46:44.419956",null,58,[],{"repoUrl":29,"stars":28,"forks":32,"topics":35,"description":36},[],"Official xAI plugin marketplace","https:\u002F\u002Fgithub.com\u002Fxai-org\u002Fplugin-marketplace\u002Ftree\u002FHEAD\u002Fexternal_plugins\u002Fneon\u002Fskills\u002Fneon","---\nname: neon\ndescription: >-\n  Overview of the Neon platform for apps and agents, spanning Postgres, Auth,\n  Data API, and the new services: Object Storage, Compute Functions, and AI\n  Gateway. Use whenever \"Neon\" is mentioned for an overview of how to work with Neon and how to get started. Otherwise, the individual capabilities are the triggers: \"object storage\" or \"S3-compatible\n  storage\", \"serverless functions\", \"background jobs\", or\n  \"run code near my database\", \"AI gateway\", \"LLM proxy\",\n  \"model routing\", or \"call an LLM\" → AI Gateway; \"database\", \"Postgres\", or\n  \"authentication\" → Postgres and Auth.\n---\n\n# Neon\n\nImportant: Neon is no longer just a Serverless Postgres provider. Neon is the backend for apps and agents with Serverless Postgres, Auth, Functions, Storage, and an AI Gateway: instant, branchable, serverless.\n\nUse this skill as the starting point for anything Neon: get an overview of its capabilities, find your way around the Neon agent skills and documentation, and follow best practices for getting started and for branch-first development workflows.\n\n## Platform Services\n\nNeon bundles several backend primitives for building apps and agents that all branch together with your project:\n\n- **Postgres** — Serverless Postgres that scales and branches with your app. _Generally available._\n- **Auth** — Managed authentication with users and sessions stored in Postgres. _Generally available._\n- **Object Storage** — S3-compatible object storage that branches with your projects. _Preview \u002F early access._\n- **Compute Functions** — Long-running serverless functions running close to your database — for WebSocket servers, long agent HTTP streams, APIs, and server-sent event servers. _Preview \u002F early access._\n- **AI Gateway** — One API for all frontier and open-source models, with routing, logging, and cost controls, powered by Databricks. _Preview \u002F early access._\n\n### Preview Service Availability\n\nObject Storage, Compute Functions, and AI Gateway are preview (early access) features.\n\nEarly access features are only available on net-new projects created in the `us-east-2` region; they cannot be enabled on existing projects for now. Before guiding a user through any of these services, confirm they are working with a new project in `us-east-2`. If not, they will need to create a new project in that region. Then confirm the user already has early access; otherwise, point them to the private beta sign-up: https:\u002F\u002Fneon.com\u002Fblog\u002Fwere-building-backends#access.\n\n## Neon Documentation\n\nThe Neon documentation is the source of truth for all Neon-related information. Always verify claims against the official docs before responding. Neon features and APIs evolve, so prefer fetching current docs over relying on training data.\n\n### Fetching Docs as Markdown\n\nAny Neon doc page can be fetched as markdown in two ways:\n\n1. **Append `.md` to the URL** (simplest): https:\u002F\u002Fneon.com\u002Fdocs\u002Fintroduction\u002Fbranching.md\n2. **Request `text\u002Fmarkdown`** on the standard URL: `curl -H \"Accept: text\u002Fmarkdown\" https:\u002F\u002Fneon.com\u002Fdocs\u002Fintroduction\u002Fbranching`\n\nBoth return the same markdown content. Use whichever method your tools support.\n\n### Finding the Right Page\n\nThe docs index lists every available page with its URL and a short description:\n\n```\nhttps:\u002F\u002Fneon.com\u002Fdocs\u002Fllms.txt\n```\n\nCommon doc URLs are organized in the topic links below. If you need a page not listed here, search the docs index: https:\u002F\u002Fneon.com\u002Fdocs\u002Fllms.txt. Don't guess URLs.\n\n## Choosing the Right Skill\n\n- Working with the database, connections, branching, autoscaling, or the CLI\u002FMCP\u002FAPI → `neon-postgres` (and `neon-postgres-branches` for branch workflows).\n\nDedicated skills for Object Storage, Compute Functions, and AI Gateway are coming as those preview services roll out.\n\n### Installing the Right Skill\n\nFirst check whether the target skill is already installed and accessible (for example, it appears in the available skills list or its `SKILL.md` is present). If it is, use it directly. If it is not installed, install it via the `skills` CLI with `npx`\u002F`bunx`:\n\n```bash\nnpx skills add neondatabase\u002Fagent-skills -s \u003Cskill-name>\n```\n\nReplace `\u003Cskill-name>` with the skill you need (for example, `neon-postgres` or `neon-postgres-branches`). Useful flags:\n\n- `-g` — install globally instead of into the current project.\n- `-y` — non-interactive mode (skip prompts).\n- `-a \u003Cagent-name>` — pick the target agent(s) for non-interactive mode.\n\nFor example, to install the Postgres skill globally for a specific agent without prompts:\n\n```bash\nnpx skills add neondatabase\u002Fagent-skills -s neon-postgres -g -y -a \u003Cagent-name>\n```\n\n## Getting Started with Neon\n\nUse this section when guiding a user through first-time Neon setup, or when adding a new Neon service (Auth, object storage, functions, and so on) to a project that is already onboarded (for example, one already using Neon Postgres).\n\n### Check Status Quo\n\nBefore starting setup, inspect the user's codebase and environment:\n\n- Existing database connection code\n- Existing `.neon` or `neon.ts` files in the workspace\n- Existing Neon MCP server or Neon CLI configuration\n- Existence of a `.env` file and `DATABASE_URL` environment variable\n- Existing ORM (Prisma, Drizzle, TypeORM) configuration\n\n### Self-Driving Setup With Neon's CLI or MCP Server\n\nOffer to inspect existing connected Neon projects or create new ones using the Neon CLI or MCP server. If neither is set up yet, run `npx -y neonctl init`. Use `npx -y` to skip the package install prompt. Auth is handled automatically. If the user is not logged in, it opens their browser for OAuth and waits for completion before proceeding.\n\n```bash\nnpx -y neonctl@latest init\n```\n\nThis installs the Neon CLI and MCP server globally, installs the VSCode extension (for Cursor\u002FVS Code), and adds the `neon` and `neon-postgres` agent skills to the project.\n\nIf `init` is not suitable, the individual steps can be run non-interactively, using the user's preferred package manager (npm, bun, pnpm):\n\n- **CLI:** `npm i -g neonctl`\n- **Extension:** `cursor --install-extension databricks.neon-local-connect`\n- **MCP server:** `npx -y add-mcp https:\u002F\u002Fmcp.neon.tech\u002Fmcp -g -n Neon -y -a \u003Cagent-name>`\n- **Agent skill:** `npx skills add neondatabase\u002Fagent-skills --skill neon-postgres --skill neon --agent \u003Cagent-name> -y`\n\nPrefer the CLI over the MCP server unless the user instructs otherwise, since it provides more capabilities, including deploying Neon Functions. For full CLI installation options, see https:\u002F\u002Fneon.com\u002Fdocs\u002Freference\u002Fcli-install.md\n\n### Setup Flow\n\nOnce the CLI, MCP server, and agent skills are installed, ensure the local workspace is linked to a Neon project through the `neonctl init` flow. If it isn't, run `npx -y neonctl link` to let the user interactively link a project. This produces a `.neon` file pointing to the organization, project, and branch the user wants to work with.\n\nFor Postgres-specific setup, consult the `neon-postgres` skill (and `neon-postgres-branches` for branch workflows). Dedicated skills for the other services are coming as they roll out.\n\n### Resume Support\n\nIf resuming setup, check what's already configured (MCP connection, `.env` with `DATABASE_URL`, dependencies, schema) and continue from the next incomplete step.\n\n### Security Reminders\n\nRemind users to use environment variables for credentials, never commit connection strings, and use least-privilege database roles.\n\n## Branch-First Dev Flow\n\nDefault to a branch-first loop that mirrors `git`: one isolated Neon branch per feature, so nothing leaks between features and there are no shared connection strings to copy around. Two commands drive it — `link` once per project, then `checkout` per feature — and a third, `env pull`, runs automatically under the hood so the branch you pin is immediately usable:\n\n- `neonctl link` — Interactively links the workspace to a Neon org, project, and branch, writing the IDs to a git-ignored `.neon` file. Run once per project. Once linked, project- and branch-scoped commands no longer need `--project-id` or `--branch` (for example, `neonctl branch list`).\n- `neonctl checkout \u003Cbranch-name>` — Creates the branch if it doesn't exist, or checks out the existing one, by updating only the branch pointer in `.neon`. Run without a name for an interactive picker. It does not touch code or local Postgres.\n- `neonctl env pull` — Fetches the current branch's Neon environment variables (`DATABASE_URL`, …) into your existing `.env`, or `.env.local` if you don't have one (override the target with `--file`). No branch ID needed; it reads `.neon`. **`link` and `checkout` run this for you by default**, so you rarely call it directly.\n\nRun `link` once when starting on a project, then `checkout` per feature:\n\n```bash\nneonctl link                     # once; also pulls the linked branch's env\nneonctl checkout dev-add-search  # per feature; also pulls the branch's env\n```\n\nBecause `link` and `checkout` pull env by default, the branch's `DATABASE_URL` lands in your local `.env` automatically — build against it, then `checkout` the next branch and repeat. As the agent, drive this loop yourself: run `checkout` between tasks to get a fresh, isolated database per feature with no shared state to corrupt.\n\n### Updating `.neon` without interactive prompts\n\nPlain `neonctl link` \u002F `neonctl checkout` prompt interactively, which an agent can't answer. Use one of these non-interactive paths instead:\n\n- **`neonctl link --agent`** — a JSON state machine for agents. Each call returns a single JSON object with a `status` (`needs_org` → `needs_project` → `needs_project_details` → `linked`, or `error`), the available `options`, and the exact `next_command_template` to run next. Drive it step by step until `status: \"linked\"`. (Errors also come back as JSON with exit code 1, so you can always parse the result.)\n- **`neonctl set-context --project-id \u003Cid> --org-id \u003Cid> --branch-id \u003Cid>`** — when you already know the IDs, write all three into `.neon` in one shot. This is a **destructive write**: it replaces the file's contents entirely with exactly these fields, so it's the most direct way to point `.neon` at a specific org \u002F project \u002F branch.\n\nBoth avoid prompts entirely; reach for `set-context` when you have the IDs and `link --agent` when you need to discover them.\n\n### Opting out of local env vars\n\nIf env vars are injected at runtime instead of written to disk — or you simply don't want secrets in the working tree — pass `--no-env-pull` to `link` \u002F `checkout` and supply the env another way:\n\n- `neon-env run -- \u003Cyour dev command>` (from `@neondatabase\u002Fenv`) fetches the branch's vars from your `neon.ts` and injects them into the child process at runtime — no `.env` file needed. This is the runtime counterpart to the on-disk `env pull`.\n- `neon-env export` (from `@neondatabase\u002Fenv`) prints the branch's env to stdout as dotenv lines or, with `--format json`, JSON — for piping into another env manager rather than running a command. For example, [varlock](https:\u002F\u002Fvarlock.dev) can bulk-load it from a `.env.schema` with `@setValuesBulk(exec(\"neon-env export --format json\"), format=json)`.\n- `fetchEnv` from `@neondatabase\u002Fenv` is the programmatic version of the same thing: resolve the branch's env in code at runtime instead of shelling out to `neon-env run`.\n- `neonctl dev` injects the same vars into your local dev server — it's part of Neon Functions local development (a private preview feature).\n\nWhen an agent should not write a local `.env`, instruct it (for example in your `AGENTS.md`) to run `neonctl checkout \u003Cbranch> --no-env-pull` and rely on runtime injection.\n\nFor reading env you *already* have on disk (typed and validated against your `neon.ts`), use `parseEnv` — see [Neon Infrastructure as Code](#neon-infrastructure-as-code) below.\n\n## Neon Infrastructure as Code\n\n`neon.ts` is Neon's branch config and infrastructure-as-code file: declare which Neon services your project's branches should have, get type-safe env vars, and program branch settings — all in TypeScript. It's the config layer for Neon as a platform, and it composes with the branch-first loop above. Add it with `@neondatabase\u002Fconfig`:\n\n```bash\nnpm i @neondatabase\u002Fconfig\n```\n\n```typescript\n\u002F\u002F neon.ts\nimport { defineConfig } from \"@neondatabase\u002Fconfig\u002Fv1\";\n\nexport default defineConfig({\n  auth: true,\n  dataApi: true,\n});\n```\n\n### Provision services with neonctl config\n\nEvery project ships with serverless Postgres; `neon.ts` lets you also declare Neon Auth and the Data API today (Functions, buckets, and the AI Gateway are landing under a `preview` block). Reconcile the declaration from the CLI — the Neon equivalent of `terraform status` \u002F `plan` \u002F `apply`:\n\n```bash\nneonctl config status   # print the branch's live config\nneonctl config plan     # dry-run diff of what apply would change\nneonctl config apply    # provision the declared services\nneonctl deploy          # alias for `neonctl config apply`\n```\n\n### Type-safe env vars with parseEnv\n\n`@neondatabase\u002Fenv`'s `parseEnv` takes your `neon.ts` config object and returns a parsed, typed env object, validated against the services you declared. The shape of `env` follows your config — enable `auth` and you get `env.auth`, enable `dataApi` and you get `env.dataApi` — and missing variables are flagged with clear errors (for you and your agents). Use it to read env you already have (typically pulled into `.env` by `checkout` \u002F `env pull`); for fetching env at runtime without a file, reach for `fetchEnv` \u002F `neon-env run` instead.\n\n```bash\nnpm i @neondatabase\u002Fenv\n```\n\n```typescript\nimport { parseEnv } from \"@neondatabase\u002Fenv\u002Fv1\";\nimport config from \".\u002Fneon\";\n\nconst env = parseEnv(config);\n\nconsole.log(env.postgres.databaseUrl);\nconsole.log(env.auth.baseUrl);\n```\n\n### How checkout composes with neon.ts\n\nWhen a `neon.ts` is present, `neonctl checkout` applies your policy as it **creates** a branch, so a fresh branch comes up with its declared settings and services already in place. Checking out an *existing* branch never reconciles it — apply config changes to it explicitly with `neonctl config apply` (or `neonctl deploy`). The bundled `env pull` also checks `neon.ts` against the linked branch and fails fast if the branch is missing a declared service, pointing you at `neonctl deploy` to provision it, so your local env and the remote branch never drift apart silently.\n\n### Branch configuration\n\nBeyond services, `neon.ts` can program what configuration *new* branches receive via the `branch` property — a function of the branch being evaluated that returns its settings:\n\n```typescript\n\u002F\u002F neon.ts\nimport { defineConfig } from \"@neondatabase\u002Fconfig\u002Fv1\";\n\nexport default defineConfig({\n  auth: true,\n  dataApi: true,\n  branch: (branch) => {\n    if (branch.exists) {\n      \u002F\u002F leave existing branches untouched\n      return {};\n    }\n    if (branch.name.startsWith(\"dev\")) {\n      return {\n        ttl: \"7d\", \u002F\u002F clean up the branch after 7 days\n        postgres: {\n          computeSettings: {\n            autoscalingLimitMinCu: 0.25, \u002F\u002F scale to zero\n            autoscalingLimitMaxCu: 1, \u002F\u002F keep it cheap\n            suspendTimeout: \"5m\",\n          },\n        },\n      };\n    }\n    return {};\n  },\n});\n```\n\nThe `branch` function receives the target branch (its `name`, whether it `exists` yet, whether it's the default, and more) and returns the tuning you want. Here new `dev-*` branches get a 7-day TTL so they clean themselves up, plus a cheap scale-to-zero compute profile, while existing branches and everything else fall through to the defaults. Because `neonctl checkout` applies this policy on create, a fresh `dev-*` branch comes up with these settings already in place.\n",{"data":40,"body":41},{"name":4,"description":6},{"type":42,"children":43},"root",[44,51,57,62,69,74,153,160,165,196,202,207,213,218,268,273,279,284,296,309,315,339,344,350,387,450,477,513,518,585,591,596,602,607,666,672,693,721,740,753,817,828,834,862,881,887,906,912,917,923,960,1088,1107,1156,1202,1215,1235,1356,1377,1383,1409,1535,1563,1598,1603,1620,1645,1814,1820,1861,1949,1955,2051,2074,2286,2292,2362,2368,2395,2918,2966],{"type":45,"tag":46,"props":47,"children":48},"element","h1",{"id":4},[49],{"type":50,"value":14},"text",{"type":45,"tag":52,"props":53,"children":54},"p",{},[55],{"type":50,"value":56},"Important: Neon is no longer just a Serverless Postgres provider. Neon is the backend for apps and agents with Serverless Postgres, Auth, Functions, Storage, and an AI Gateway: instant, branchable, serverless.",{"type":45,"tag":52,"props":58,"children":59},{},[60],{"type":50,"value":61},"Use this skill as the starting point for anything Neon: get an overview of its capabilities, find your way around the Neon agent skills and documentation, and follow best practices for getting started and for branch-first development workflows.",{"type":45,"tag":63,"props":64,"children":66},"h2",{"id":65},"platform-services",[67],{"type":50,"value":68},"Platform Services",{"type":45,"tag":52,"props":70,"children":71},{},[72],{"type":50,"value":73},"Neon bundles several backend primitives for building apps and agents that all branch together with your project:",{"type":45,"tag":75,"props":76,"children":77},"ul",{},[78,96,110,125,139],{"type":45,"tag":79,"props":80,"children":81},"li",{},[82,88,90],{"type":45,"tag":83,"props":84,"children":85},"strong",{},[86],{"type":50,"value":87},"Postgres",{"type":50,"value":89}," — Serverless Postgres that scales and branches with your app. ",{"type":45,"tag":91,"props":92,"children":93},"em",{},[94],{"type":50,"value":95},"Generally available.",{"type":45,"tag":79,"props":97,"children":98},{},[99,104,106],{"type":45,"tag":83,"props":100,"children":101},{},[102],{"type":50,"value":103},"Auth",{"type":50,"value":105}," — Managed authentication with users and sessions stored in Postgres. ",{"type":45,"tag":91,"props":107,"children":108},{},[109],{"type":50,"value":95},{"type":45,"tag":79,"props":111,"children":112},{},[113,118,120],{"type":45,"tag":83,"props":114,"children":115},{},[116],{"type":50,"value":117},"Object Storage",{"type":50,"value":119}," — S3-compatible object storage that branches with your projects. ",{"type":45,"tag":91,"props":121,"children":122},{},[123],{"type":50,"value":124},"Preview \u002F early access.",{"type":45,"tag":79,"props":126,"children":127},{},[128,133,135],{"type":45,"tag":83,"props":129,"children":130},{},[131],{"type":50,"value":132},"Compute Functions",{"type":50,"value":134}," — Long-running serverless functions running close to your database — for WebSocket servers, long agent HTTP streams, APIs, and server-sent event servers. ",{"type":45,"tag":91,"props":136,"children":137},{},[138],{"type":50,"value":124},{"type":45,"tag":79,"props":140,"children":141},{},[142,147,149],{"type":45,"tag":83,"props":143,"children":144},{},[145],{"type":50,"value":146},"AI Gateway",{"type":50,"value":148}," — One API for all frontier and open-source models, with routing, logging, and cost controls, powered by Databricks. ",{"type":45,"tag":91,"props":150,"children":151},{},[152],{"type":50,"value":124},{"type":45,"tag":154,"props":155,"children":157},"h3",{"id":156},"preview-service-availability",[158],{"type":50,"value":159},"Preview Service Availability",{"type":45,"tag":52,"props":161,"children":162},{},[163],{"type":50,"value":164},"Object Storage, Compute Functions, and AI Gateway are preview (early access) features.",{"type":45,"tag":52,"props":166,"children":167},{},[168,170,177,179,184,186,194],{"type":50,"value":169},"Early access features are only available on net-new projects created in the ",{"type":45,"tag":171,"props":172,"children":174},"code",{"className":173},[],[175],{"type":50,"value":176},"us-east-2",{"type":50,"value":178}," region; they cannot be enabled on existing projects for now. Before guiding a user through any of these services, confirm they are working with a new project in ",{"type":45,"tag":171,"props":180,"children":182},{"className":181},[],[183],{"type":50,"value":176},{"type":50,"value":185},". If not, they will need to create a new project in that region. Then confirm the user already has early access; otherwise, point them to the private beta sign-up: ",{"type":45,"tag":187,"props":188,"children":192},"a",{"href":189,"rel":190},"https:\u002F\u002Fneon.com\u002Fblog\u002Fwere-building-backends#access",[191],"nofollow",[193],{"type":50,"value":189},{"type":50,"value":195},".",{"type":45,"tag":63,"props":197,"children":199},{"id":198},"neon-documentation",[200],{"type":50,"value":201},"Neon Documentation",{"type":45,"tag":52,"props":203,"children":204},{},[205],{"type":50,"value":206},"The Neon documentation is the source of truth for all Neon-related information. Always verify claims against the official docs before responding. Neon features and APIs evolve, so prefer fetching current docs over relying on training data.",{"type":45,"tag":154,"props":208,"children":210},{"id":209},"fetching-docs-as-markdown",[211],{"type":50,"value":212},"Fetching Docs as Markdown",{"type":45,"tag":52,"props":214,"children":215},{},[216],{"type":50,"value":217},"Any Neon doc page can be fetched as markdown in two ways:",{"type":45,"tag":219,"props":220,"children":221},"ol",{},[222,246],{"type":45,"tag":79,"props":223,"children":224},{},[225,238,240],{"type":45,"tag":83,"props":226,"children":227},{},[228,230,236],{"type":50,"value":229},"Append ",{"type":45,"tag":171,"props":231,"children":233},{"className":232},[],[234],{"type":50,"value":235},".md",{"type":50,"value":237}," to the URL",{"type":50,"value":239}," (simplest): ",{"type":45,"tag":187,"props":241,"children":244},{"href":242,"rel":243},"https:\u002F\u002Fneon.com\u002Fdocs\u002Fintroduction\u002Fbranching.md",[191],[245],{"type":50,"value":242},{"type":45,"tag":79,"props":247,"children":248},{},[249,260,262],{"type":45,"tag":83,"props":250,"children":251},{},[252,254],{"type":50,"value":253},"Request ",{"type":45,"tag":171,"props":255,"children":257},{"className":256},[],[258],{"type":50,"value":259},"text\u002Fmarkdown",{"type":50,"value":261}," on the standard URL: ",{"type":45,"tag":171,"props":263,"children":265},{"className":264},[],[266],{"type":50,"value":267},"curl -H \"Accept: text\u002Fmarkdown\" https:\u002F\u002Fneon.com\u002Fdocs\u002Fintroduction\u002Fbranching",{"type":45,"tag":52,"props":269,"children":270},{},[271],{"type":50,"value":272},"Both return the same markdown content. Use whichever method your tools support.",{"type":45,"tag":154,"props":274,"children":276},{"id":275},"finding-the-right-page",[277],{"type":50,"value":278},"Finding the Right Page",{"type":45,"tag":52,"props":280,"children":281},{},[282],{"type":50,"value":283},"The docs index lists every available page with its URL and a short description:",{"type":45,"tag":285,"props":286,"children":290},"pre",{"className":287,"code":289,"language":50},[288],"language-text","https:\u002F\u002Fneon.com\u002Fdocs\u002Fllms.txt\n",[291],{"type":45,"tag":171,"props":292,"children":294},{"__ignoreMap":293},"",[295],{"type":50,"value":289},{"type":45,"tag":52,"props":297,"children":298},{},[299,301,307],{"type":50,"value":300},"Common doc URLs are organized in the topic links below. If you need a page not listed here, search the docs index: ",{"type":45,"tag":187,"props":302,"children":305},{"href":303,"rel":304},"https:\u002F\u002Fneon.com\u002Fdocs\u002Fllms.txt",[191],[306],{"type":50,"value":303},{"type":50,"value":308},". Don't guess URLs.",{"type":45,"tag":63,"props":310,"children":312},{"id":311},"choosing-the-right-skill",[313],{"type":50,"value":314},"Choosing the Right Skill",{"type":45,"tag":75,"props":316,"children":317},{},[318],{"type":45,"tag":79,"props":319,"children":320},{},[321,323,329,331,337],{"type":50,"value":322},"Working with the database, connections, branching, autoscaling, or the CLI\u002FMCP\u002FAPI → ",{"type":45,"tag":171,"props":324,"children":326},{"className":325},[],[327],{"type":50,"value":328},"neon-postgres",{"type":50,"value":330}," (and ",{"type":45,"tag":171,"props":332,"children":334},{"className":333},[],[335],{"type":50,"value":336},"neon-postgres-branches",{"type":50,"value":338}," for branch workflows).",{"type":45,"tag":52,"props":340,"children":341},{},[342],{"type":50,"value":343},"Dedicated skills for Object Storage, Compute Functions, and AI Gateway are coming as those preview services roll out.",{"type":45,"tag":154,"props":345,"children":347},{"id":346},"installing-the-right-skill",[348],{"type":50,"value":349},"Installing the Right Skill",{"type":45,"tag":52,"props":351,"children":352},{},[353,355,361,363,369,371,377,379,385],{"type":50,"value":354},"First check whether the target skill is already installed and accessible (for example, it appears in the available skills list or its ",{"type":45,"tag":171,"props":356,"children":358},{"className":357},[],[359],{"type":50,"value":360},"SKILL.md",{"type":50,"value":362}," is present). If it is, use it directly. If it is not installed, install it via the ",{"type":45,"tag":171,"props":364,"children":366},{"className":365},[],[367],{"type":50,"value":368},"skills",{"type":50,"value":370}," CLI with ",{"type":45,"tag":171,"props":372,"children":374},{"className":373},[],[375],{"type":50,"value":376},"npx",{"type":50,"value":378},"\u002F",{"type":45,"tag":171,"props":380,"children":382},{"className":381},[],[383],{"type":50,"value":384},"bunx",{"type":50,"value":386},":",{"type":45,"tag":285,"props":388,"children":392},{"className":389,"code":390,"language":391,"meta":293,"style":293},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx skills add neondatabase\u002Fagent-skills -s \u003Cskill-name>\n","bash",[393],{"type":45,"tag":171,"props":394,"children":395},{"__ignoreMap":293},[396],{"type":45,"tag":397,"props":398,"children":401},"span",{"class":399,"line":400},"line",1,[402,407,413,418,423,428,434,439,445],{"type":45,"tag":397,"props":403,"children":405},{"style":404},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[406],{"type":50,"value":376},{"type":45,"tag":397,"props":408,"children":410},{"style":409},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[411],{"type":50,"value":412}," skills",{"type":45,"tag":397,"props":414,"children":415},{"style":409},[416],{"type":50,"value":417}," add",{"type":45,"tag":397,"props":419,"children":420},{"style":409},[421],{"type":50,"value":422}," neondatabase\u002Fagent-skills",{"type":45,"tag":397,"props":424,"children":425},{"style":409},[426],{"type":50,"value":427}," -s",{"type":45,"tag":397,"props":429,"children":431},{"style":430},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[432],{"type":50,"value":433}," \u003C",{"type":45,"tag":397,"props":435,"children":436},{"style":409},[437],{"type":50,"value":438},"skill-nam",{"type":45,"tag":397,"props":440,"children":442},{"style":441},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[443],{"type":50,"value":444},"e",{"type":45,"tag":397,"props":446,"children":447},{"style":430},[448],{"type":50,"value":449},">\n",{"type":45,"tag":52,"props":451,"children":452},{},[453,455,461,463,468,470,475],{"type":50,"value":454},"Replace ",{"type":45,"tag":171,"props":456,"children":458},{"className":457},[],[459],{"type":50,"value":460},"\u003Cskill-name>",{"type":50,"value":462}," with the skill you need (for example, ",{"type":45,"tag":171,"props":464,"children":466},{"className":465},[],[467],{"type":50,"value":328},{"type":50,"value":469}," or ",{"type":45,"tag":171,"props":471,"children":473},{"className":472},[],[474],{"type":50,"value":336},{"type":50,"value":476},"). Useful flags:",{"type":45,"tag":75,"props":478,"children":479},{},[480,491,502],{"type":45,"tag":79,"props":481,"children":482},{},[483,489],{"type":45,"tag":171,"props":484,"children":486},{"className":485},[],[487],{"type":50,"value":488},"-g",{"type":50,"value":490}," — install globally instead of into the current project.",{"type":45,"tag":79,"props":492,"children":493},{},[494,500],{"type":45,"tag":171,"props":495,"children":497},{"className":496},[],[498],{"type":50,"value":499},"-y",{"type":50,"value":501}," — non-interactive mode (skip prompts).",{"type":45,"tag":79,"props":503,"children":504},{},[505,511],{"type":45,"tag":171,"props":506,"children":508},{"className":507},[],[509],{"type":50,"value":510},"-a \u003Cagent-name>",{"type":50,"value":512}," — pick the target agent(s) for non-interactive mode.",{"type":45,"tag":52,"props":514,"children":515},{},[516],{"type":50,"value":517},"For example, to install the Postgres skill globally for a specific agent without prompts:",{"type":45,"tag":285,"props":519,"children":521},{"className":389,"code":520,"language":391,"meta":293,"style":293},"npx skills add neondatabase\u002Fagent-skills -s neon-postgres -g -y -a \u003Cagent-name>\n",[522],{"type":45,"tag":171,"props":523,"children":524},{"__ignoreMap":293},[525],{"type":45,"tag":397,"props":526,"children":527},{"class":399,"line":400},[528,532,536,540,544,548,553,558,563,568,572,577,581],{"type":45,"tag":397,"props":529,"children":530},{"style":404},[531],{"type":50,"value":376},{"type":45,"tag":397,"props":533,"children":534},{"style":409},[535],{"type":50,"value":412},{"type":45,"tag":397,"props":537,"children":538},{"style":409},[539],{"type":50,"value":417},{"type":45,"tag":397,"props":541,"children":542},{"style":409},[543],{"type":50,"value":422},{"type":45,"tag":397,"props":545,"children":546},{"style":409},[547],{"type":50,"value":427},{"type":45,"tag":397,"props":549,"children":550},{"style":409},[551],{"type":50,"value":552}," neon-postgres",{"type":45,"tag":397,"props":554,"children":555},{"style":409},[556],{"type":50,"value":557}," -g",{"type":45,"tag":397,"props":559,"children":560},{"style":409},[561],{"type":50,"value":562}," -y",{"type":45,"tag":397,"props":564,"children":565},{"style":409},[566],{"type":50,"value":567}," -a",{"type":45,"tag":397,"props":569,"children":570},{"style":430},[571],{"type":50,"value":433},{"type":45,"tag":397,"props":573,"children":574},{"style":409},[575],{"type":50,"value":576},"agent-nam",{"type":45,"tag":397,"props":578,"children":579},{"style":441},[580],{"type":50,"value":444},{"type":45,"tag":397,"props":582,"children":583},{"style":430},[584],{"type":50,"value":449},{"type":45,"tag":63,"props":586,"children":588},{"id":587},"getting-started-with-neon",[589],{"type":50,"value":590},"Getting Started with Neon",{"type":45,"tag":52,"props":592,"children":593},{},[594],{"type":50,"value":595},"Use this section when guiding a user through first-time Neon setup, or when adding a new Neon service (Auth, object storage, functions, and so on) to a project that is already onboarded (for example, one already using Neon Postgres).",{"type":45,"tag":154,"props":597,"children":599},{"id":598},"check-status-quo",[600],{"type":50,"value":601},"Check Status Quo",{"type":45,"tag":52,"props":603,"children":604},{},[605],{"type":50,"value":606},"Before starting setup, inspect the user's codebase and environment:",{"type":45,"tag":75,"props":608,"children":609},{},[610,615,635,640,661],{"type":45,"tag":79,"props":611,"children":612},{},[613],{"type":50,"value":614},"Existing database connection code",{"type":45,"tag":79,"props":616,"children":617},{},[618,620,626,627,633],{"type":50,"value":619},"Existing ",{"type":45,"tag":171,"props":621,"children":623},{"className":622},[],[624],{"type":50,"value":625},".neon",{"type":50,"value":469},{"type":45,"tag":171,"props":628,"children":630},{"className":629},[],[631],{"type":50,"value":632},"neon.ts",{"type":50,"value":634}," files in the workspace",{"type":45,"tag":79,"props":636,"children":637},{},[638],{"type":50,"value":639},"Existing Neon MCP server or Neon CLI configuration",{"type":45,"tag":79,"props":641,"children":642},{},[643,645,651,653,659],{"type":50,"value":644},"Existence of a ",{"type":45,"tag":171,"props":646,"children":648},{"className":647},[],[649],{"type":50,"value":650},".env",{"type":50,"value":652}," file and ",{"type":45,"tag":171,"props":654,"children":656},{"className":655},[],[657],{"type":50,"value":658},"DATABASE_URL",{"type":50,"value":660}," environment variable",{"type":45,"tag":79,"props":662,"children":663},{},[664],{"type":50,"value":665},"Existing ORM (Prisma, Drizzle, TypeORM) configuration",{"type":45,"tag":154,"props":667,"children":669},{"id":668},"self-driving-setup-with-neons-cli-or-mcp-server",[670],{"type":50,"value":671},"Self-Driving Setup With Neon's CLI or MCP Server",{"type":45,"tag":52,"props":673,"children":674},{},[675,677,683,685,691],{"type":50,"value":676},"Offer to inspect existing connected Neon projects or create new ones using the Neon CLI or MCP server. If neither is set up yet, run ",{"type":45,"tag":171,"props":678,"children":680},{"className":679},[],[681],{"type":50,"value":682},"npx -y neonctl init",{"type":50,"value":684},". Use ",{"type":45,"tag":171,"props":686,"children":688},{"className":687},[],[689],{"type":50,"value":690},"npx -y",{"type":50,"value":692}," to skip the package install prompt. Auth is handled automatically. If the user is not logged in, it opens their browser for OAuth and waits for completion before proceeding.",{"type":45,"tag":285,"props":694,"children":696},{"className":389,"code":695,"language":391,"meta":293,"style":293},"npx -y neonctl@latest init\n",[697],{"type":45,"tag":171,"props":698,"children":699},{"__ignoreMap":293},[700],{"type":45,"tag":397,"props":701,"children":702},{"class":399,"line":400},[703,707,711,716],{"type":45,"tag":397,"props":704,"children":705},{"style":404},[706],{"type":50,"value":376},{"type":45,"tag":397,"props":708,"children":709},{"style":409},[710],{"type":50,"value":562},{"type":45,"tag":397,"props":712,"children":713},{"style":409},[714],{"type":50,"value":715}," neonctl@latest",{"type":45,"tag":397,"props":717,"children":718},{"style":409},[719],{"type":50,"value":720}," init\n",{"type":45,"tag":52,"props":722,"children":723},{},[724,726,731,733,738],{"type":50,"value":725},"This installs the Neon CLI and MCP server globally, installs the VSCode extension (for Cursor\u002FVS Code), and adds the ",{"type":45,"tag":171,"props":727,"children":729},{"className":728},[],[730],{"type":50,"value":4},{"type":50,"value":732}," and ",{"type":45,"tag":171,"props":734,"children":736},{"className":735},[],[737],{"type":50,"value":328},{"type":50,"value":739}," agent skills to the project.",{"type":45,"tag":52,"props":741,"children":742},{},[743,745,751],{"type":50,"value":744},"If ",{"type":45,"tag":171,"props":746,"children":748},{"className":747},[],[749],{"type":50,"value":750},"init",{"type":50,"value":752}," is not suitable, the individual steps can be run non-interactively, using the user's preferred package manager (npm, bun, pnpm):",{"type":45,"tag":75,"props":754,"children":755},{},[756,772,787,802],{"type":45,"tag":79,"props":757,"children":758},{},[759,764,766],{"type":45,"tag":83,"props":760,"children":761},{},[762],{"type":50,"value":763},"CLI:",{"type":50,"value":765}," ",{"type":45,"tag":171,"props":767,"children":769},{"className":768},[],[770],{"type":50,"value":771},"npm i -g neonctl",{"type":45,"tag":79,"props":773,"children":774},{},[775,780,781],{"type":45,"tag":83,"props":776,"children":777},{},[778],{"type":50,"value":779},"Extension:",{"type":50,"value":765},{"type":45,"tag":171,"props":782,"children":784},{"className":783},[],[785],{"type":50,"value":786},"cursor --install-extension databricks.neon-local-connect",{"type":45,"tag":79,"props":788,"children":789},{},[790,795,796],{"type":45,"tag":83,"props":791,"children":792},{},[793],{"type":50,"value":794},"MCP server:",{"type":50,"value":765},{"type":45,"tag":171,"props":797,"children":799},{"className":798},[],[800],{"type":50,"value":801},"npx -y add-mcp https:\u002F\u002Fmcp.neon.tech\u002Fmcp -g -n Neon -y -a \u003Cagent-name>",{"type":45,"tag":79,"props":803,"children":804},{},[805,810,811],{"type":45,"tag":83,"props":806,"children":807},{},[808],{"type":50,"value":809},"Agent skill:",{"type":50,"value":765},{"type":45,"tag":171,"props":812,"children":814},{"className":813},[],[815],{"type":50,"value":816},"npx skills add neondatabase\u002Fagent-skills --skill neon-postgres --skill neon --agent \u003Cagent-name> -y",{"type":45,"tag":52,"props":818,"children":819},{},[820,822],{"type":50,"value":821},"Prefer the CLI over the MCP server unless the user instructs otherwise, since it provides more capabilities, including deploying Neon Functions. For full CLI installation options, see ",{"type":45,"tag":187,"props":823,"children":826},{"href":824,"rel":825},"https:\u002F\u002Fneon.com\u002Fdocs\u002Freference\u002Fcli-install.md",[191],[827],{"type":50,"value":824},{"type":45,"tag":154,"props":829,"children":831},{"id":830},"setup-flow",[832],{"type":50,"value":833},"Setup Flow",{"type":45,"tag":52,"props":835,"children":836},{},[837,839,845,847,853,855,860],{"type":50,"value":838},"Once the CLI, MCP server, and agent skills are installed, ensure the local workspace is linked to a Neon project through the ",{"type":45,"tag":171,"props":840,"children":842},{"className":841},[],[843],{"type":50,"value":844},"neonctl init",{"type":50,"value":846}," flow. If it isn't, run ",{"type":45,"tag":171,"props":848,"children":850},{"className":849},[],[851],{"type":50,"value":852},"npx -y neonctl link",{"type":50,"value":854}," to let the user interactively link a project. This produces a ",{"type":45,"tag":171,"props":856,"children":858},{"className":857},[],[859],{"type":50,"value":625},{"type":50,"value":861}," file pointing to the organization, project, and branch the user wants to work with.",{"type":45,"tag":52,"props":863,"children":864},{},[865,867,872,874,879],{"type":50,"value":866},"For Postgres-specific setup, consult the ",{"type":45,"tag":171,"props":868,"children":870},{"className":869},[],[871],{"type":50,"value":328},{"type":50,"value":873}," skill (and ",{"type":45,"tag":171,"props":875,"children":877},{"className":876},[],[878],{"type":50,"value":336},{"type":50,"value":880}," for branch workflows). Dedicated skills for the other services are coming as they roll out.",{"type":45,"tag":154,"props":882,"children":884},{"id":883},"resume-support",[885],{"type":50,"value":886},"Resume Support",{"type":45,"tag":52,"props":888,"children":889},{},[890,892,897,899,904],{"type":50,"value":891},"If resuming setup, check what's already configured (MCP connection, ",{"type":45,"tag":171,"props":893,"children":895},{"className":894},[],[896],{"type":50,"value":650},{"type":50,"value":898}," with ",{"type":45,"tag":171,"props":900,"children":902},{"className":901},[],[903],{"type":50,"value":658},{"type":50,"value":905},", dependencies, schema) and continue from the next incomplete step.",{"type":45,"tag":154,"props":907,"children":909},{"id":908},"security-reminders",[910],{"type":50,"value":911},"Security Reminders",{"type":45,"tag":52,"props":913,"children":914},{},[915],{"type":50,"value":916},"Remind users to use environment variables for credentials, never commit connection strings, and use least-privilege database roles.",{"type":45,"tag":63,"props":918,"children":920},{"id":919},"branch-first-dev-flow",[921],{"type":50,"value":922},"Branch-First Dev Flow",{"type":45,"tag":52,"props":924,"children":925},{},[926,928,934,936,942,944,950,952,958],{"type":50,"value":927},"Default to a branch-first loop that mirrors ",{"type":45,"tag":171,"props":929,"children":931},{"className":930},[],[932],{"type":50,"value":933},"git",{"type":50,"value":935},": one isolated Neon branch per feature, so nothing leaks between features and there are no shared connection strings to copy around. Two commands drive it — ",{"type":45,"tag":171,"props":937,"children":939},{"className":938},[],[940],{"type":50,"value":941},"link",{"type":50,"value":943}," once per project, then ",{"type":45,"tag":171,"props":945,"children":947},{"className":946},[],[948],{"type":50,"value":949},"checkout",{"type":50,"value":951}," per feature — and a third, ",{"type":45,"tag":171,"props":953,"children":955},{"className":954},[],[956],{"type":50,"value":957},"env pull",{"type":50,"value":959},", runs automatically under the hood so the branch you pin is immediately usable:",{"type":45,"tag":75,"props":961,"children":962},{},[963,1004,1022],{"type":45,"tag":79,"props":964,"children":965},{},[966,972,974,979,981,987,988,994,996,1002],{"type":45,"tag":171,"props":967,"children":969},{"className":968},[],[970],{"type":50,"value":971},"neonctl link",{"type":50,"value":973}," — Interactively links the workspace to a Neon org, project, and branch, writing the IDs to a git-ignored ",{"type":45,"tag":171,"props":975,"children":977},{"className":976},[],[978],{"type":50,"value":625},{"type":50,"value":980}," file. Run once per project. Once linked, project- and branch-scoped commands no longer need ",{"type":45,"tag":171,"props":982,"children":984},{"className":983},[],[985],{"type":50,"value":986},"--project-id",{"type":50,"value":469},{"type":45,"tag":171,"props":989,"children":991},{"className":990},[],[992],{"type":50,"value":993},"--branch",{"type":50,"value":995}," (for example, ",{"type":45,"tag":171,"props":997,"children":999},{"className":998},[],[1000],{"type":50,"value":1001},"neonctl branch list",{"type":50,"value":1003},").",{"type":45,"tag":79,"props":1005,"children":1006},{},[1007,1013,1015,1020],{"type":45,"tag":171,"props":1008,"children":1010},{"className":1009},[],[1011],{"type":50,"value":1012},"neonctl checkout \u003Cbranch-name>",{"type":50,"value":1014}," — Creates the branch if it doesn't exist, or checks out the existing one, by updating only the branch pointer in ",{"type":45,"tag":171,"props":1016,"children":1018},{"className":1017},[],[1019],{"type":50,"value":625},{"type":50,"value":1021},". Run without a name for an interactive picker. It does not touch code or local Postgres.",{"type":45,"tag":79,"props":1023,"children":1024},{},[1025,1031,1033,1038,1040,1045,1047,1053,1055,1061,1063,1068,1070,1086],{"type":45,"tag":171,"props":1026,"children":1028},{"className":1027},[],[1029],{"type":50,"value":1030},"neonctl env pull",{"type":50,"value":1032}," — Fetches the current branch's Neon environment variables (",{"type":45,"tag":171,"props":1034,"children":1036},{"className":1035},[],[1037],{"type":50,"value":658},{"type":50,"value":1039},", …) into your existing ",{"type":45,"tag":171,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":50,"value":650},{"type":50,"value":1046},", or ",{"type":45,"tag":171,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":50,"value":1052},".env.local",{"type":50,"value":1054}," if you don't have one (override the target with ",{"type":45,"tag":171,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":50,"value":1060},"--file",{"type":50,"value":1062},"). No branch ID needed; it reads ",{"type":45,"tag":171,"props":1064,"children":1066},{"className":1065},[],[1067],{"type":50,"value":625},{"type":50,"value":1069},". ",{"type":45,"tag":83,"props":1071,"children":1072},{},[1073,1078,1079,1084],{"type":45,"tag":171,"props":1074,"children":1076},{"className":1075},[],[1077],{"type":50,"value":941},{"type":50,"value":732},{"type":45,"tag":171,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":50,"value":949},{"type":50,"value":1085}," run this for you by default",{"type":50,"value":1087},", so you rarely call it directly.",{"type":45,"tag":52,"props":1089,"children":1090},{},[1091,1093,1098,1100,1105],{"type":50,"value":1092},"Run ",{"type":45,"tag":171,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":50,"value":941},{"type":50,"value":1099}," once when starting on a project, then ",{"type":45,"tag":171,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":50,"value":949},{"type":50,"value":1106}," per feature:",{"type":45,"tag":285,"props":1108,"children":1110},{"className":389,"code":1109,"language":391,"meta":293,"style":293},"neonctl link                     # once; also pulls the linked branch's env\nneonctl checkout dev-add-search  # per feature; also pulls the branch's env\n",[1111],{"type":45,"tag":171,"props":1112,"children":1113},{"__ignoreMap":293},[1114,1133],{"type":45,"tag":397,"props":1115,"children":1116},{"class":399,"line":400},[1117,1122,1127],{"type":45,"tag":397,"props":1118,"children":1119},{"style":404},[1120],{"type":50,"value":1121},"neonctl",{"type":45,"tag":397,"props":1123,"children":1124},{"style":409},[1125],{"type":50,"value":1126}," link",{"type":45,"tag":397,"props":1128,"children":1130},{"style":1129},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1131],{"type":50,"value":1132},"                     # once; also pulls the linked branch's env\n",{"type":45,"tag":397,"props":1134,"children":1136},{"class":399,"line":1135},2,[1137,1141,1146,1151],{"type":45,"tag":397,"props":1138,"children":1139},{"style":404},[1140],{"type":50,"value":1121},{"type":45,"tag":397,"props":1142,"children":1143},{"style":409},[1144],{"type":50,"value":1145}," checkout",{"type":45,"tag":397,"props":1147,"children":1148},{"style":409},[1149],{"type":50,"value":1150}," dev-add-search",{"type":45,"tag":397,"props":1152,"children":1153},{"style":1129},[1154],{"type":50,"value":1155},"  # per feature; also pulls the branch's env\n",{"type":45,"tag":52,"props":1157,"children":1158},{},[1159,1161,1166,1167,1172,1174,1179,1181,1186,1188,1193,1195,1200],{"type":50,"value":1160},"Because ",{"type":45,"tag":171,"props":1162,"children":1164},{"className":1163},[],[1165],{"type":50,"value":941},{"type":50,"value":732},{"type":45,"tag":171,"props":1168,"children":1170},{"className":1169},[],[1171],{"type":50,"value":949},{"type":50,"value":1173}," pull env by default, the branch's ",{"type":45,"tag":171,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":50,"value":658},{"type":50,"value":1180}," lands in your local ",{"type":45,"tag":171,"props":1182,"children":1184},{"className":1183},[],[1185],{"type":50,"value":650},{"type":50,"value":1187}," automatically — build against it, then ",{"type":45,"tag":171,"props":1189,"children":1191},{"className":1190},[],[1192],{"type":50,"value":949},{"type":50,"value":1194}," the next branch and repeat. As the agent, drive this loop yourself: run ",{"type":45,"tag":171,"props":1196,"children":1198},{"className":1197},[],[1199],{"type":50,"value":949},{"type":50,"value":1201}," between tasks to get a fresh, isolated database per feature with no shared state to corrupt.",{"type":45,"tag":154,"props":1203,"children":1205},{"id":1204},"updating-neon-without-interactive-prompts",[1206,1208,1213],{"type":50,"value":1207},"Updating ",{"type":45,"tag":171,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":50,"value":625},{"type":50,"value":1214}," without interactive prompts",{"type":45,"tag":52,"props":1216,"children":1217},{},[1218,1220,1225,1227,1233],{"type":50,"value":1219},"Plain ",{"type":45,"tag":171,"props":1221,"children":1223},{"className":1222},[],[1224],{"type":50,"value":971},{"type":50,"value":1226}," \u002F ",{"type":45,"tag":171,"props":1228,"children":1230},{"className":1229},[],[1231],{"type":50,"value":1232},"neonctl checkout",{"type":50,"value":1234}," prompt interactively, which an agent can't answer. Use one of these non-interactive paths instead:",{"type":45,"tag":75,"props":1236,"children":1237},{},[1238,1321],{"type":45,"tag":79,"props":1239,"children":1240},{},[1241,1250,1252,1258,1260,1266,1268,1274,1275,1281,1282,1288,1289,1295,1297,1303,1305,1311,1313,1319],{"type":45,"tag":83,"props":1242,"children":1243},{},[1244],{"type":45,"tag":171,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":50,"value":1249},"neonctl link --agent",{"type":50,"value":1251}," — a JSON state machine for agents. Each call returns a single JSON object with a ",{"type":45,"tag":171,"props":1253,"children":1255},{"className":1254},[],[1256],{"type":50,"value":1257},"status",{"type":50,"value":1259}," (",{"type":45,"tag":171,"props":1261,"children":1263},{"className":1262},[],[1264],{"type":50,"value":1265},"needs_org",{"type":50,"value":1267}," → ",{"type":45,"tag":171,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":50,"value":1273},"needs_project",{"type":50,"value":1267},{"type":45,"tag":171,"props":1276,"children":1278},{"className":1277},[],[1279],{"type":50,"value":1280},"needs_project_details",{"type":50,"value":1267},{"type":45,"tag":171,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":50,"value":1287},"linked",{"type":50,"value":1046},{"type":45,"tag":171,"props":1290,"children":1292},{"className":1291},[],[1293],{"type":50,"value":1294},"error",{"type":50,"value":1296},"), the available ",{"type":45,"tag":171,"props":1298,"children":1300},{"className":1299},[],[1301],{"type":50,"value":1302},"options",{"type":50,"value":1304},", and the exact ",{"type":45,"tag":171,"props":1306,"children":1308},{"className":1307},[],[1309],{"type":50,"value":1310},"next_command_template",{"type":50,"value":1312}," to run next. Drive it step by step until ",{"type":45,"tag":171,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":50,"value":1318},"status: \"linked\"",{"type":50,"value":1320},". (Errors also come back as JSON with exit code 1, so you can always parse the result.)",{"type":45,"tag":79,"props":1322,"children":1323},{},[1324,1333,1335,1340,1342,1347,1349,1354],{"type":45,"tag":83,"props":1325,"children":1326},{},[1327],{"type":45,"tag":171,"props":1328,"children":1330},{"className":1329},[],[1331],{"type":50,"value":1332},"neonctl set-context --project-id \u003Cid> --org-id \u003Cid> --branch-id \u003Cid>",{"type":50,"value":1334}," — when you already know the IDs, write all three into ",{"type":45,"tag":171,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":50,"value":625},{"type":50,"value":1341}," in one shot. This is a ",{"type":45,"tag":83,"props":1343,"children":1344},{},[1345],{"type":50,"value":1346},"destructive write",{"type":50,"value":1348},": it replaces the file's contents entirely with exactly these fields, so it's the most direct way to point ",{"type":45,"tag":171,"props":1350,"children":1352},{"className":1351},[],[1353],{"type":50,"value":625},{"type":50,"value":1355}," at a specific org \u002F project \u002F branch.",{"type":45,"tag":52,"props":1357,"children":1358},{},[1359,1361,1367,1369,1375],{"type":50,"value":1360},"Both avoid prompts entirely; reach for ",{"type":45,"tag":171,"props":1362,"children":1364},{"className":1363},[],[1365],{"type":50,"value":1366},"set-context",{"type":50,"value":1368}," when you have the IDs and ",{"type":45,"tag":171,"props":1370,"children":1372},{"className":1371},[],[1373],{"type":50,"value":1374},"link --agent",{"type":50,"value":1376}," when you need to discover them.",{"type":45,"tag":154,"props":1378,"children":1380},{"id":1379},"opting-out-of-local-env-vars",[1381],{"type":50,"value":1382},"Opting out of local env vars",{"type":45,"tag":52,"props":1384,"children":1385},{},[1386,1388,1394,1396,1401,1402,1407],{"type":50,"value":1387},"If env vars are injected at runtime instead of written to disk — or you simply don't want secrets in the working tree — pass ",{"type":45,"tag":171,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":50,"value":1393},"--no-env-pull",{"type":50,"value":1395}," to ",{"type":45,"tag":171,"props":1397,"children":1399},{"className":1398},[],[1400],{"type":50,"value":941},{"type":50,"value":1226},{"type":45,"tag":171,"props":1403,"children":1405},{"className":1404},[],[1406],{"type":50,"value":949},{"type":50,"value":1408}," and supply the env another way:",{"type":45,"tag":75,"props":1410,"children":1411},{},[1412,1451,1499,1524],{"type":45,"tag":79,"props":1413,"children":1414},{},[1415,1421,1423,1429,1431,1436,1438,1443,1445,1450],{"type":45,"tag":171,"props":1416,"children":1418},{"className":1417},[],[1419],{"type":50,"value":1420},"neon-env run -- \u003Cyour dev command>",{"type":50,"value":1422}," (from ",{"type":45,"tag":171,"props":1424,"children":1426},{"className":1425},[],[1427],{"type":50,"value":1428},"@neondatabase\u002Fenv",{"type":50,"value":1430},") fetches the branch's vars from your ",{"type":45,"tag":171,"props":1432,"children":1434},{"className":1433},[],[1435],{"type":50,"value":632},{"type":50,"value":1437}," and injects them into the child process at runtime — no ",{"type":45,"tag":171,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":50,"value":650},{"type":50,"value":1444}," file needed. This is the runtime counterpart to the on-disk ",{"type":45,"tag":171,"props":1446,"children":1448},{"className":1447},[],[1449],{"type":50,"value":957},{"type":50,"value":195},{"type":45,"tag":79,"props":1452,"children":1453},{},[1454,1460,1461,1466,1468,1474,1476,1483,1485,1491,1492,1498],{"type":45,"tag":171,"props":1455,"children":1457},{"className":1456},[],[1458],{"type":50,"value":1459},"neon-env export",{"type":50,"value":1422},{"type":45,"tag":171,"props":1462,"children":1464},{"className":1463},[],[1465],{"type":50,"value":1428},{"type":50,"value":1467},") prints the branch's env to stdout as dotenv lines or, with ",{"type":45,"tag":171,"props":1469,"children":1471},{"className":1470},[],[1472],{"type":50,"value":1473},"--format json",{"type":50,"value":1475},", JSON — for piping into another env manager rather than running a command. For example, ",{"type":45,"tag":187,"props":1477,"children":1480},{"href":1478,"rel":1479},"https:\u002F\u002Fvarlock.dev",[191],[1481],{"type":50,"value":1482},"varlock",{"type":50,"value":1484}," can bulk-load it from a ",{"type":45,"tag":171,"props":1486,"children":1488},{"className":1487},[],[1489],{"type":50,"value":1490},".env.schema",{"type":50,"value":898},{"type":45,"tag":171,"props":1493,"children":1495},{"className":1494},[],[1496],{"type":50,"value":1497},"@setValuesBulk(exec(\"neon-env export --format json\"), format=json)",{"type":50,"value":195},{"type":45,"tag":79,"props":1500,"children":1501},{},[1502,1508,1510,1515,1517,1523],{"type":45,"tag":171,"props":1503,"children":1505},{"className":1504},[],[1506],{"type":50,"value":1507},"fetchEnv",{"type":50,"value":1509}," from ",{"type":45,"tag":171,"props":1511,"children":1513},{"className":1512},[],[1514],{"type":50,"value":1428},{"type":50,"value":1516}," is the programmatic version of the same thing: resolve the branch's env in code at runtime instead of shelling out to ",{"type":45,"tag":171,"props":1518,"children":1520},{"className":1519},[],[1521],{"type":50,"value":1522},"neon-env run",{"type":50,"value":195},{"type":45,"tag":79,"props":1525,"children":1526},{},[1527,1533],{"type":45,"tag":171,"props":1528,"children":1530},{"className":1529},[],[1531],{"type":50,"value":1532},"neonctl dev",{"type":50,"value":1534}," injects the same vars into your local dev server — it's part of Neon Functions local development (a private preview feature).",{"type":45,"tag":52,"props":1536,"children":1537},{},[1538,1540,1545,1547,1553,1555,1561],{"type":50,"value":1539},"When an agent should not write a local ",{"type":45,"tag":171,"props":1541,"children":1543},{"className":1542},[],[1544],{"type":50,"value":650},{"type":50,"value":1546},", instruct it (for example in your ",{"type":45,"tag":171,"props":1548,"children":1550},{"className":1549},[],[1551],{"type":50,"value":1552},"AGENTS.md",{"type":50,"value":1554},") to run ",{"type":45,"tag":171,"props":1556,"children":1558},{"className":1557},[],[1559],{"type":50,"value":1560},"neonctl checkout \u003Cbranch> --no-env-pull",{"type":50,"value":1562}," and rely on runtime injection.",{"type":45,"tag":52,"props":1564,"children":1565},{},[1566,1568,1573,1575,1580,1582,1588,1590,1596],{"type":50,"value":1567},"For reading env you ",{"type":45,"tag":91,"props":1569,"children":1570},{},[1571],{"type":50,"value":1572},"already",{"type":50,"value":1574}," have on disk (typed and validated against your ",{"type":45,"tag":171,"props":1576,"children":1578},{"className":1577},[],[1579],{"type":50,"value":632},{"type":50,"value":1581},"), use ",{"type":45,"tag":171,"props":1583,"children":1585},{"className":1584},[],[1586],{"type":50,"value":1587},"parseEnv",{"type":50,"value":1589}," — see ",{"type":45,"tag":187,"props":1591,"children":1593},{"href":1592},"#neon-infrastructure-as-code",[1594],{"type":50,"value":1595},"Neon Infrastructure as Code",{"type":50,"value":1597}," below.",{"type":45,"tag":63,"props":1599,"children":1601},{"id":1600},"neon-infrastructure-as-code",[1602],{"type":50,"value":1595},{"type":45,"tag":52,"props":1604,"children":1605},{},[1606,1611,1613,1619],{"type":45,"tag":171,"props":1607,"children":1609},{"className":1608},[],[1610],{"type":50,"value":632},{"type":50,"value":1612}," is Neon's branch config and infrastructure-as-code file: declare which Neon services your project's branches should have, get type-safe env vars, and program branch settings — all in TypeScript. It's the config layer for Neon as a platform, and it composes with the branch-first loop above. Add it with ",{"type":45,"tag":171,"props":1614,"children":1616},{"className":1615},[],[1617],{"type":50,"value":1618},"@neondatabase\u002Fconfig",{"type":50,"value":386},{"type":45,"tag":285,"props":1621,"children":1623},{"className":389,"code":1622,"language":391,"meta":293,"style":293},"npm i @neondatabase\u002Fconfig\n",[1624],{"type":45,"tag":171,"props":1625,"children":1626},{"__ignoreMap":293},[1627],{"type":45,"tag":397,"props":1628,"children":1629},{"class":399,"line":400},[1630,1635,1640],{"type":45,"tag":397,"props":1631,"children":1632},{"style":404},[1633],{"type":50,"value":1634},"npm",{"type":45,"tag":397,"props":1636,"children":1637},{"style":409},[1638],{"type":50,"value":1639}," i",{"type":45,"tag":397,"props":1641,"children":1642},{"style":409},[1643],{"type":50,"value":1644}," @neondatabase\u002Fconfig\n",{"type":45,"tag":285,"props":1646,"children":1650},{"className":1647,"code":1648,"language":1649,"meta":293,"style":293},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F neon.ts\nimport { defineConfig } from \"@neondatabase\u002Fconfig\u002Fv1\";\n\nexport default defineConfig({\n  auth: true,\n  dataApi: true,\n});\n","typescript",[1651],{"type":45,"tag":171,"props":1652,"children":1653},{"__ignoreMap":293},[1654,1662,1711,1721,1750,1775,1796],{"type":45,"tag":397,"props":1655,"children":1656},{"class":399,"line":400},[1657],{"type":45,"tag":397,"props":1658,"children":1659},{"style":1129},[1660],{"type":50,"value":1661},"\u002F\u002F neon.ts\n",{"type":45,"tag":397,"props":1663,"children":1664},{"class":399,"line":1135},[1665,1671,1676,1681,1686,1691,1696,1701,1706],{"type":45,"tag":397,"props":1666,"children":1668},{"style":1667},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1669],{"type":50,"value":1670},"import",{"type":45,"tag":397,"props":1672,"children":1673},{"style":430},[1674],{"type":50,"value":1675}," {",{"type":45,"tag":397,"props":1677,"children":1678},{"style":441},[1679],{"type":50,"value":1680}," defineConfig",{"type":45,"tag":397,"props":1682,"children":1683},{"style":430},[1684],{"type":50,"value":1685}," }",{"type":45,"tag":397,"props":1687,"children":1688},{"style":1667},[1689],{"type":50,"value":1690}," from",{"type":45,"tag":397,"props":1692,"children":1693},{"style":430},[1694],{"type":50,"value":1695}," \"",{"type":45,"tag":397,"props":1697,"children":1698},{"style":409},[1699],{"type":50,"value":1700},"@neondatabase\u002Fconfig\u002Fv1",{"type":45,"tag":397,"props":1702,"children":1703},{"style":430},[1704],{"type":50,"value":1705},"\"",{"type":45,"tag":397,"props":1707,"children":1708},{"style":430},[1709],{"type":50,"value":1710},";\n",{"type":45,"tag":397,"props":1712,"children":1714},{"class":399,"line":1713},3,[1715],{"type":45,"tag":397,"props":1716,"children":1718},{"emptyLinePlaceholder":1717},true,[1719],{"type":50,"value":1720},"\n",{"type":45,"tag":397,"props":1722,"children":1724},{"class":399,"line":1723},4,[1725,1730,1735,1740,1745],{"type":45,"tag":397,"props":1726,"children":1727},{"style":1667},[1728],{"type":50,"value":1729},"export",{"type":45,"tag":397,"props":1731,"children":1732},{"style":1667},[1733],{"type":50,"value":1734}," default",{"type":45,"tag":397,"props":1736,"children":1738},{"style":1737},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1739],{"type":50,"value":1680},{"type":45,"tag":397,"props":1741,"children":1742},{"style":441},[1743],{"type":50,"value":1744},"(",{"type":45,"tag":397,"props":1746,"children":1747},{"style":430},[1748],{"type":50,"value":1749},"{\n",{"type":45,"tag":397,"props":1751,"children":1753},{"class":399,"line":1752},5,[1754,1760,1764,1770],{"type":45,"tag":397,"props":1755,"children":1757},{"style":1756},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1758],{"type":50,"value":1759},"  auth",{"type":45,"tag":397,"props":1761,"children":1762},{"style":430},[1763],{"type":50,"value":386},{"type":45,"tag":397,"props":1765,"children":1767},{"style":1766},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1768],{"type":50,"value":1769}," true",{"type":45,"tag":397,"props":1771,"children":1772},{"style":430},[1773],{"type":50,"value":1774},",\n",{"type":45,"tag":397,"props":1776,"children":1778},{"class":399,"line":1777},6,[1779,1784,1788,1792],{"type":45,"tag":397,"props":1780,"children":1781},{"style":1756},[1782],{"type":50,"value":1783},"  dataApi",{"type":45,"tag":397,"props":1785,"children":1786},{"style":430},[1787],{"type":50,"value":386},{"type":45,"tag":397,"props":1789,"children":1790},{"style":1766},[1791],{"type":50,"value":1769},{"type":45,"tag":397,"props":1793,"children":1794},{"style":430},[1795],{"type":50,"value":1774},{"type":45,"tag":397,"props":1797,"children":1799},{"class":399,"line":1798},7,[1800,1805,1810],{"type":45,"tag":397,"props":1801,"children":1802},{"style":430},[1803],{"type":50,"value":1804},"}",{"type":45,"tag":397,"props":1806,"children":1807},{"style":441},[1808],{"type":50,"value":1809},")",{"type":45,"tag":397,"props":1811,"children":1812},{"style":430},[1813],{"type":50,"value":1710},{"type":45,"tag":154,"props":1815,"children":1817},{"id":1816},"provision-services-with-neonctl-config",[1818],{"type":50,"value":1819},"Provision services with neonctl config",{"type":45,"tag":52,"props":1821,"children":1822},{},[1823,1825,1830,1832,1838,1840,1846,1847,1853,1854,1860],{"type":50,"value":1824},"Every project ships with serverless Postgres; ",{"type":45,"tag":171,"props":1826,"children":1828},{"className":1827},[],[1829],{"type":50,"value":632},{"type":50,"value":1831}," lets you also declare Neon Auth and the Data API today (Functions, buckets, and the AI Gateway are landing under a ",{"type":45,"tag":171,"props":1833,"children":1835},{"className":1834},[],[1836],{"type":50,"value":1837},"preview",{"type":50,"value":1839}," block). Reconcile the declaration from the CLI — the Neon equivalent of ",{"type":45,"tag":171,"props":1841,"children":1843},{"className":1842},[],[1844],{"type":50,"value":1845},"terraform status",{"type":50,"value":1226},{"type":45,"tag":171,"props":1848,"children":1850},{"className":1849},[],[1851],{"type":50,"value":1852},"plan",{"type":50,"value":1226},{"type":45,"tag":171,"props":1855,"children":1857},{"className":1856},[],[1858],{"type":50,"value":1859},"apply",{"type":50,"value":386},{"type":45,"tag":285,"props":1862,"children":1864},{"className":389,"code":1863,"language":391,"meta":293,"style":293},"neonctl config status   # print the branch's live config\nneonctl config plan     # dry-run diff of what apply would change\nneonctl config apply    # provision the declared services\nneonctl deploy          # alias for `neonctl config apply`\n",[1865],{"type":45,"tag":171,"props":1866,"children":1867},{"__ignoreMap":293},[1868,1890,1911,1932],{"type":45,"tag":397,"props":1869,"children":1870},{"class":399,"line":400},[1871,1875,1880,1885],{"type":45,"tag":397,"props":1872,"children":1873},{"style":404},[1874],{"type":50,"value":1121},{"type":45,"tag":397,"props":1876,"children":1877},{"style":409},[1878],{"type":50,"value":1879}," config",{"type":45,"tag":397,"props":1881,"children":1882},{"style":409},[1883],{"type":50,"value":1884}," status",{"type":45,"tag":397,"props":1886,"children":1887},{"style":1129},[1888],{"type":50,"value":1889},"   # print the branch's live config\n",{"type":45,"tag":397,"props":1891,"children":1892},{"class":399,"line":1135},[1893,1897,1901,1906],{"type":45,"tag":397,"props":1894,"children":1895},{"style":404},[1896],{"type":50,"value":1121},{"type":45,"tag":397,"props":1898,"children":1899},{"style":409},[1900],{"type":50,"value":1879},{"type":45,"tag":397,"props":1902,"children":1903},{"style":409},[1904],{"type":50,"value":1905}," plan",{"type":45,"tag":397,"props":1907,"children":1908},{"style":1129},[1909],{"type":50,"value":1910},"     # dry-run diff of what apply would change\n",{"type":45,"tag":397,"props":1912,"children":1913},{"class":399,"line":1713},[1914,1918,1922,1927],{"type":45,"tag":397,"props":1915,"children":1916},{"style":404},[1917],{"type":50,"value":1121},{"type":45,"tag":397,"props":1919,"children":1920},{"style":409},[1921],{"type":50,"value":1879},{"type":45,"tag":397,"props":1923,"children":1924},{"style":409},[1925],{"type":50,"value":1926}," apply",{"type":45,"tag":397,"props":1928,"children":1929},{"style":1129},[1930],{"type":50,"value":1931},"    # provision the declared services\n",{"type":45,"tag":397,"props":1933,"children":1934},{"class":399,"line":1723},[1935,1939,1944],{"type":45,"tag":397,"props":1936,"children":1937},{"style":404},[1938],{"type":50,"value":1121},{"type":45,"tag":397,"props":1940,"children":1941},{"style":409},[1942],{"type":50,"value":1943}," deploy",{"type":45,"tag":397,"props":1945,"children":1946},{"style":1129},[1947],{"type":50,"value":1948},"          # alias for `neonctl config apply`\n",{"type":45,"tag":154,"props":1950,"children":1952},{"id":1951},"type-safe-env-vars-with-parseenv",[1953],{"type":50,"value":1954},"Type-safe env vars with parseEnv",{"type":45,"tag":52,"props":1956,"children":1957},{},[1958,1963,1965,1970,1972,1977,1979,1985,1987,1993,1995,2001,2003,2009,2010,2016,2018,2023,2025,2030,2031,2036,2038,2043,2044,2049],{"type":45,"tag":171,"props":1959,"children":1961},{"className":1960},[],[1962],{"type":50,"value":1428},{"type":50,"value":1964},"'s ",{"type":45,"tag":171,"props":1966,"children":1968},{"className":1967},[],[1969],{"type":50,"value":1587},{"type":50,"value":1971}," takes your ",{"type":45,"tag":171,"props":1973,"children":1975},{"className":1974},[],[1976],{"type":50,"value":632},{"type":50,"value":1978}," config object and returns a parsed, typed env object, validated against the services you declared. The shape of ",{"type":45,"tag":171,"props":1980,"children":1982},{"className":1981},[],[1983],{"type":50,"value":1984},"env",{"type":50,"value":1986}," follows your config — enable ",{"type":45,"tag":171,"props":1988,"children":1990},{"className":1989},[],[1991],{"type":50,"value":1992},"auth",{"type":50,"value":1994}," and you get ",{"type":45,"tag":171,"props":1996,"children":1998},{"className":1997},[],[1999],{"type":50,"value":2000},"env.auth",{"type":50,"value":2002},", enable ",{"type":45,"tag":171,"props":2004,"children":2006},{"className":2005},[],[2007],{"type":50,"value":2008},"dataApi",{"type":50,"value":1994},{"type":45,"tag":171,"props":2011,"children":2013},{"className":2012},[],[2014],{"type":50,"value":2015},"env.dataApi",{"type":50,"value":2017}," — and missing variables are flagged with clear errors (for you and your agents). Use it to read env you already have (typically pulled into ",{"type":45,"tag":171,"props":2019,"children":2021},{"className":2020},[],[2022],{"type":50,"value":650},{"type":50,"value":2024}," by ",{"type":45,"tag":171,"props":2026,"children":2028},{"className":2027},[],[2029],{"type":50,"value":949},{"type":50,"value":1226},{"type":45,"tag":171,"props":2032,"children":2034},{"className":2033},[],[2035],{"type":50,"value":957},{"type":50,"value":2037},"); for fetching env at runtime without a file, reach for ",{"type":45,"tag":171,"props":2039,"children":2041},{"className":2040},[],[2042],{"type":50,"value":1507},{"type":50,"value":1226},{"type":45,"tag":171,"props":2045,"children":2047},{"className":2046},[],[2048],{"type":50,"value":1522},{"type":50,"value":2050}," instead.",{"type":45,"tag":285,"props":2052,"children":2054},{"className":389,"code":2053,"language":391,"meta":293,"style":293},"npm i @neondatabase\u002Fenv\n",[2055],{"type":45,"tag":171,"props":2056,"children":2057},{"__ignoreMap":293},[2058],{"type":45,"tag":397,"props":2059,"children":2060},{"class":399,"line":400},[2061,2065,2069],{"type":45,"tag":397,"props":2062,"children":2063},{"style":404},[2064],{"type":50,"value":1634},{"type":45,"tag":397,"props":2066,"children":2067},{"style":409},[2068],{"type":50,"value":1639},{"type":45,"tag":397,"props":2070,"children":2071},{"style":409},[2072],{"type":50,"value":2073}," @neondatabase\u002Fenv\n",{"type":45,"tag":285,"props":2075,"children":2077},{"className":1647,"code":2076,"language":1649,"meta":293,"style":293},"import { parseEnv } from \"@neondatabase\u002Fenv\u002Fv1\";\nimport config from \".\u002Fneon\";\n\nconst env = parseEnv(config);\n\nconsole.log(env.postgres.databaseUrl);\nconsole.log(env.auth.baseUrl);\n",[2078],{"type":45,"tag":171,"props":2079,"children":2080},{"__ignoreMap":293},[2081,2122,2156,2163,2195,2202,2246],{"type":45,"tag":397,"props":2082,"children":2083},{"class":399,"line":400},[2084,2088,2092,2097,2101,2105,2109,2114,2118],{"type":45,"tag":397,"props":2085,"children":2086},{"style":1667},[2087],{"type":50,"value":1670},{"type":45,"tag":397,"props":2089,"children":2090},{"style":430},[2091],{"type":50,"value":1675},{"type":45,"tag":397,"props":2093,"children":2094},{"style":441},[2095],{"type":50,"value":2096}," parseEnv",{"type":45,"tag":397,"props":2098,"children":2099},{"style":430},[2100],{"type":50,"value":1685},{"type":45,"tag":397,"props":2102,"children":2103},{"style":1667},[2104],{"type":50,"value":1690},{"type":45,"tag":397,"props":2106,"children":2107},{"style":430},[2108],{"type":50,"value":1695},{"type":45,"tag":397,"props":2110,"children":2111},{"style":409},[2112],{"type":50,"value":2113},"@neondatabase\u002Fenv\u002Fv1",{"type":45,"tag":397,"props":2115,"children":2116},{"style":430},[2117],{"type":50,"value":1705},{"type":45,"tag":397,"props":2119,"children":2120},{"style":430},[2121],{"type":50,"value":1710},{"type":45,"tag":397,"props":2123,"children":2124},{"class":399,"line":1135},[2125,2129,2134,2139,2143,2148,2152],{"type":45,"tag":397,"props":2126,"children":2127},{"style":1667},[2128],{"type":50,"value":1670},{"type":45,"tag":397,"props":2130,"children":2131},{"style":441},[2132],{"type":50,"value":2133}," config ",{"type":45,"tag":397,"props":2135,"children":2136},{"style":1667},[2137],{"type":50,"value":2138},"from",{"type":45,"tag":397,"props":2140,"children":2141},{"style":430},[2142],{"type":50,"value":1695},{"type":45,"tag":397,"props":2144,"children":2145},{"style":409},[2146],{"type":50,"value":2147},".\u002Fneon",{"type":45,"tag":397,"props":2149,"children":2150},{"style":430},[2151],{"type":50,"value":1705},{"type":45,"tag":397,"props":2153,"children":2154},{"style":430},[2155],{"type":50,"value":1710},{"type":45,"tag":397,"props":2157,"children":2158},{"class":399,"line":1713},[2159],{"type":45,"tag":397,"props":2160,"children":2161},{"emptyLinePlaceholder":1717},[2162],{"type":50,"value":1720},{"type":45,"tag":397,"props":2164,"children":2165},{"class":399,"line":1723},[2166,2172,2177,2182,2186,2191],{"type":45,"tag":397,"props":2167,"children":2169},{"style":2168},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[2170],{"type":50,"value":2171},"const",{"type":45,"tag":397,"props":2173,"children":2174},{"style":441},[2175],{"type":50,"value":2176}," env ",{"type":45,"tag":397,"props":2178,"children":2179},{"style":430},[2180],{"type":50,"value":2181},"=",{"type":45,"tag":397,"props":2183,"children":2184},{"style":1737},[2185],{"type":50,"value":2096},{"type":45,"tag":397,"props":2187,"children":2188},{"style":441},[2189],{"type":50,"value":2190},"(config)",{"type":45,"tag":397,"props":2192,"children":2193},{"style":430},[2194],{"type":50,"value":1710},{"type":45,"tag":397,"props":2196,"children":2197},{"class":399,"line":1752},[2198],{"type":45,"tag":397,"props":2199,"children":2200},{"emptyLinePlaceholder":1717},[2201],{"type":50,"value":1720},{"type":45,"tag":397,"props":2203,"children":2204},{"class":399,"line":1777},[2205,2210,2214,2219,2224,2228,2233,2237,2242],{"type":45,"tag":397,"props":2206,"children":2207},{"style":441},[2208],{"type":50,"value":2209},"console",{"type":45,"tag":397,"props":2211,"children":2212},{"style":430},[2213],{"type":50,"value":195},{"type":45,"tag":397,"props":2215,"children":2216},{"style":1737},[2217],{"type":50,"value":2218},"log",{"type":45,"tag":397,"props":2220,"children":2221},{"style":441},[2222],{"type":50,"value":2223},"(env",{"type":45,"tag":397,"props":2225,"children":2226},{"style":430},[2227],{"type":50,"value":195},{"type":45,"tag":397,"props":2229,"children":2230},{"style":441},[2231],{"type":50,"value":2232},"postgres",{"type":45,"tag":397,"props":2234,"children":2235},{"style":430},[2236],{"type":50,"value":195},{"type":45,"tag":397,"props":2238,"children":2239},{"style":441},[2240],{"type":50,"value":2241},"databaseUrl)",{"type":45,"tag":397,"props":2243,"children":2244},{"style":430},[2245],{"type":50,"value":1710},{"type":45,"tag":397,"props":2247,"children":2248},{"class":399,"line":1798},[2249,2253,2257,2261,2265,2269,2273,2277,2282],{"type":45,"tag":397,"props":2250,"children":2251},{"style":441},[2252],{"type":50,"value":2209},{"type":45,"tag":397,"props":2254,"children":2255},{"style":430},[2256],{"type":50,"value":195},{"type":45,"tag":397,"props":2258,"children":2259},{"style":1737},[2260],{"type":50,"value":2218},{"type":45,"tag":397,"props":2262,"children":2263},{"style":441},[2264],{"type":50,"value":2223},{"type":45,"tag":397,"props":2266,"children":2267},{"style":430},[2268],{"type":50,"value":195},{"type":45,"tag":397,"props":2270,"children":2271},{"style":441},[2272],{"type":50,"value":1992},{"type":45,"tag":397,"props":2274,"children":2275},{"style":430},[2276],{"type":50,"value":195},{"type":45,"tag":397,"props":2278,"children":2279},{"style":441},[2280],{"type":50,"value":2281},"baseUrl)",{"type":45,"tag":397,"props":2283,"children":2284},{"style":430},[2285],{"type":50,"value":1710},{"type":45,"tag":154,"props":2287,"children":2289},{"id":2288},"how-checkout-composes-with-neonts",[2290],{"type":50,"value":2291},"How checkout composes with neon.ts",{"type":45,"tag":52,"props":2293,"children":2294},{},[2295,2297,2302,2304,2309,2311,2316,2318,2323,2325,2331,2333,2339,2341,2346,2348,2353,2355,2360],{"type":50,"value":2296},"When a ",{"type":45,"tag":171,"props":2298,"children":2300},{"className":2299},[],[2301],{"type":50,"value":632},{"type":50,"value":2303}," is present, ",{"type":45,"tag":171,"props":2305,"children":2307},{"className":2306},[],[2308],{"type":50,"value":1232},{"type":50,"value":2310}," applies your policy as it ",{"type":45,"tag":83,"props":2312,"children":2313},{},[2314],{"type":50,"value":2315},"creates",{"type":50,"value":2317}," a branch, so a fresh branch comes up with its declared settings and services already in place. Checking out an ",{"type":45,"tag":91,"props":2319,"children":2320},{},[2321],{"type":50,"value":2322},"existing",{"type":50,"value":2324}," branch never reconciles it — apply config changes to it explicitly with ",{"type":45,"tag":171,"props":2326,"children":2328},{"className":2327},[],[2329],{"type":50,"value":2330},"neonctl config apply",{"type":50,"value":2332}," (or ",{"type":45,"tag":171,"props":2334,"children":2336},{"className":2335},[],[2337],{"type":50,"value":2338},"neonctl deploy",{"type":50,"value":2340},"). The bundled ",{"type":45,"tag":171,"props":2342,"children":2344},{"className":2343},[],[2345],{"type":50,"value":957},{"type":50,"value":2347}," also checks ",{"type":45,"tag":171,"props":2349,"children":2351},{"className":2350},[],[2352],{"type":50,"value":632},{"type":50,"value":2354}," against the linked branch and fails fast if the branch is missing a declared service, pointing you at ",{"type":45,"tag":171,"props":2356,"children":2358},{"className":2357},[],[2359],{"type":50,"value":2338},{"type":50,"value":2361}," to provision it, so your local env and the remote branch never drift apart silently.",{"type":45,"tag":154,"props":2363,"children":2365},{"id":2364},"branch-configuration",[2366],{"type":50,"value":2367},"Branch configuration",{"type":45,"tag":52,"props":2369,"children":2370},{},[2371,2373,2378,2380,2385,2387,2393],{"type":50,"value":2372},"Beyond services, ",{"type":45,"tag":171,"props":2374,"children":2376},{"className":2375},[],[2377],{"type":50,"value":632},{"type":50,"value":2379}," can program what configuration ",{"type":45,"tag":91,"props":2381,"children":2382},{},[2383],{"type":50,"value":2384},"new",{"type":50,"value":2386}," branches receive via the ",{"type":45,"tag":171,"props":2388,"children":2390},{"className":2389},[],[2391],{"type":50,"value":2392},"branch",{"type":50,"value":2394}," property — a function of the branch being evaluated that returns its settings:",{"type":45,"tag":285,"props":2396,"children":2398},{"className":1647,"code":2397,"language":1649,"meta":293,"style":293},"\u002F\u002F neon.ts\nimport { defineConfig } from \"@neondatabase\u002Fconfig\u002Fv1\";\n\nexport default defineConfig({\n  auth: true,\n  dataApi: true,\n  branch: (branch) => {\n    if (branch.exists) {\n      \u002F\u002F leave existing branches untouched\n      return {};\n    }\n    if (branch.name.startsWith(\"dev\")) {\n      return {\n        ttl: \"7d\", \u002F\u002F clean up the branch after 7 days\n        postgres: {\n          computeSettings: {\n            autoscalingLimitMinCu: 0.25, \u002F\u002F scale to zero\n            autoscalingLimitMaxCu: 1, \u002F\u002F keep it cheap\n            suspendTimeout: \"5m\",\n          },\n        },\n      };\n    }\n    return {};\n  },\n});\n",[2399],{"type":45,"tag":171,"props":2400,"children":2401},{"__ignoreMap":293},[2402,2409,2448,2455,2478,2497,2516,2551,2586,2595,2609,2618,2678,2690,2726,2743,2760,2788,2815,2845,2854,2863,2872,2880,2893,2902],{"type":45,"tag":397,"props":2403,"children":2404},{"class":399,"line":400},[2405],{"type":45,"tag":397,"props":2406,"children":2407},{"style":1129},[2408],{"type":50,"value":1661},{"type":45,"tag":397,"props":2410,"children":2411},{"class":399,"line":1135},[2412,2416,2420,2424,2428,2432,2436,2440,2444],{"type":45,"tag":397,"props":2413,"children":2414},{"style":1667},[2415],{"type":50,"value":1670},{"type":45,"tag":397,"props":2417,"children":2418},{"style":430},[2419],{"type":50,"value":1675},{"type":45,"tag":397,"props":2421,"children":2422},{"style":441},[2423],{"type":50,"value":1680},{"type":45,"tag":397,"props":2425,"children":2426},{"style":430},[2427],{"type":50,"value":1685},{"type":45,"tag":397,"props":2429,"children":2430},{"style":1667},[2431],{"type":50,"value":1690},{"type":45,"tag":397,"props":2433,"children":2434},{"style":430},[2435],{"type":50,"value":1695},{"type":45,"tag":397,"props":2437,"children":2438},{"style":409},[2439],{"type":50,"value":1700},{"type":45,"tag":397,"props":2441,"children":2442},{"style":430},[2443],{"type":50,"value":1705},{"type":45,"tag":397,"props":2445,"children":2446},{"style":430},[2447],{"type":50,"value":1710},{"type":45,"tag":397,"props":2449,"children":2450},{"class":399,"line":1713},[2451],{"type":45,"tag":397,"props":2452,"children":2453},{"emptyLinePlaceholder":1717},[2454],{"type":50,"value":1720},{"type":45,"tag":397,"props":2456,"children":2457},{"class":399,"line":1723},[2458,2462,2466,2470,2474],{"type":45,"tag":397,"props":2459,"children":2460},{"style":1667},[2461],{"type":50,"value":1729},{"type":45,"tag":397,"props":2463,"children":2464},{"style":1667},[2465],{"type":50,"value":1734},{"type":45,"tag":397,"props":2467,"children":2468},{"style":1737},[2469],{"type":50,"value":1680},{"type":45,"tag":397,"props":2471,"children":2472},{"style":441},[2473],{"type":50,"value":1744},{"type":45,"tag":397,"props":2475,"children":2476},{"style":430},[2477],{"type":50,"value":1749},{"type":45,"tag":397,"props":2479,"children":2480},{"class":399,"line":1752},[2481,2485,2489,2493],{"type":45,"tag":397,"props":2482,"children":2483},{"style":1756},[2484],{"type":50,"value":1759},{"type":45,"tag":397,"props":2486,"children":2487},{"style":430},[2488],{"type":50,"value":386},{"type":45,"tag":397,"props":2490,"children":2491},{"style":1766},[2492],{"type":50,"value":1769},{"type":45,"tag":397,"props":2494,"children":2495},{"style":430},[2496],{"type":50,"value":1774},{"type":45,"tag":397,"props":2498,"children":2499},{"class":399,"line":1777},[2500,2504,2508,2512],{"type":45,"tag":397,"props":2501,"children":2502},{"style":1756},[2503],{"type":50,"value":1783},{"type":45,"tag":397,"props":2505,"children":2506},{"style":430},[2507],{"type":50,"value":386},{"type":45,"tag":397,"props":2509,"children":2510},{"style":1766},[2511],{"type":50,"value":1769},{"type":45,"tag":397,"props":2513,"children":2514},{"style":430},[2515],{"type":50,"value":1774},{"type":45,"tag":397,"props":2517,"children":2518},{"class":399,"line":1798},[2519,2524,2528,2532,2537,2541,2546],{"type":45,"tag":397,"props":2520,"children":2521},{"style":1737},[2522],{"type":50,"value":2523},"  branch",{"type":45,"tag":397,"props":2525,"children":2526},{"style":430},[2527],{"type":50,"value":386},{"type":45,"tag":397,"props":2529,"children":2530},{"style":430},[2531],{"type":50,"value":1259},{"type":45,"tag":397,"props":2533,"children":2535},{"style":2534},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[2536],{"type":50,"value":2392},{"type":45,"tag":397,"props":2538,"children":2539},{"style":430},[2540],{"type":50,"value":1809},{"type":45,"tag":397,"props":2542,"children":2543},{"style":2168},[2544],{"type":50,"value":2545}," =>",{"type":45,"tag":397,"props":2547,"children":2548},{"style":430},[2549],{"type":50,"value":2550}," {\n",{"type":45,"tag":397,"props":2552,"children":2554},{"class":399,"line":2553},8,[2555,2560,2564,2568,2572,2577,2582],{"type":45,"tag":397,"props":2556,"children":2557},{"style":1667},[2558],{"type":50,"value":2559},"    if",{"type":45,"tag":397,"props":2561,"children":2562},{"style":1756},[2563],{"type":50,"value":1259},{"type":45,"tag":397,"props":2565,"children":2566},{"style":441},[2567],{"type":50,"value":2392},{"type":45,"tag":397,"props":2569,"children":2570},{"style":430},[2571],{"type":50,"value":195},{"type":45,"tag":397,"props":2573,"children":2574},{"style":441},[2575],{"type":50,"value":2576},"exists",{"type":45,"tag":397,"props":2578,"children":2579},{"style":1756},[2580],{"type":50,"value":2581},") ",{"type":45,"tag":397,"props":2583,"children":2584},{"style":430},[2585],{"type":50,"value":1749},{"type":45,"tag":397,"props":2587,"children":2589},{"class":399,"line":2588},9,[2590],{"type":45,"tag":397,"props":2591,"children":2592},{"style":1129},[2593],{"type":50,"value":2594},"      \u002F\u002F leave existing branches untouched\n",{"type":45,"tag":397,"props":2596,"children":2598},{"class":399,"line":2597},10,[2599,2604],{"type":45,"tag":397,"props":2600,"children":2601},{"style":1667},[2602],{"type":50,"value":2603},"      return",{"type":45,"tag":397,"props":2605,"children":2606},{"style":430},[2607],{"type":50,"value":2608}," {};\n",{"type":45,"tag":397,"props":2610,"children":2612},{"class":399,"line":2611},11,[2613],{"type":45,"tag":397,"props":2614,"children":2615},{"style":430},[2616],{"type":50,"value":2617},"    }\n",{"type":45,"tag":397,"props":2619,"children":2621},{"class":399,"line":2620},12,[2622,2626,2630,2634,2638,2643,2647,2652,2656,2660,2665,2669,2674],{"type":45,"tag":397,"props":2623,"children":2624},{"style":1667},[2625],{"type":50,"value":2559},{"type":45,"tag":397,"props":2627,"children":2628},{"style":1756},[2629],{"type":50,"value":1259},{"type":45,"tag":397,"props":2631,"children":2632},{"style":441},[2633],{"type":50,"value":2392},{"type":45,"tag":397,"props":2635,"children":2636},{"style":430},[2637],{"type":50,"value":195},{"type":45,"tag":397,"props":2639,"children":2640},{"style":441},[2641],{"type":50,"value":2642},"name",{"type":45,"tag":397,"props":2644,"children":2645},{"style":430},[2646],{"type":50,"value":195},{"type":45,"tag":397,"props":2648,"children":2649},{"style":1737},[2650],{"type":50,"value":2651},"startsWith",{"type":45,"tag":397,"props":2653,"children":2654},{"style":1756},[2655],{"type":50,"value":1744},{"type":45,"tag":397,"props":2657,"children":2658},{"style":430},[2659],{"type":50,"value":1705},{"type":45,"tag":397,"props":2661,"children":2662},{"style":409},[2663],{"type":50,"value":2664},"dev",{"type":45,"tag":397,"props":2666,"children":2667},{"style":430},[2668],{"type":50,"value":1705},{"type":45,"tag":397,"props":2670,"children":2671},{"style":1756},[2672],{"type":50,"value":2673},")) ",{"type":45,"tag":397,"props":2675,"children":2676},{"style":430},[2677],{"type":50,"value":1749},{"type":45,"tag":397,"props":2679,"children":2681},{"class":399,"line":2680},13,[2682,2686],{"type":45,"tag":397,"props":2683,"children":2684},{"style":1667},[2685],{"type":50,"value":2603},{"type":45,"tag":397,"props":2687,"children":2688},{"style":430},[2689],{"type":50,"value":2550},{"type":45,"tag":397,"props":2691,"children":2693},{"class":399,"line":2692},14,[2694,2699,2703,2707,2712,2716,2721],{"type":45,"tag":397,"props":2695,"children":2696},{"style":1756},[2697],{"type":50,"value":2698},"        ttl",{"type":45,"tag":397,"props":2700,"children":2701},{"style":430},[2702],{"type":50,"value":386},{"type":45,"tag":397,"props":2704,"children":2705},{"style":430},[2706],{"type":50,"value":1695},{"type":45,"tag":397,"props":2708,"children":2709},{"style":409},[2710],{"type":50,"value":2711},"7d",{"type":45,"tag":397,"props":2713,"children":2714},{"style":430},[2715],{"type":50,"value":1705},{"type":45,"tag":397,"props":2717,"children":2718},{"style":430},[2719],{"type":50,"value":2720},",",{"type":45,"tag":397,"props":2722,"children":2723},{"style":1129},[2724],{"type":50,"value":2725}," \u002F\u002F clean up the branch after 7 days\n",{"type":45,"tag":397,"props":2727,"children":2729},{"class":399,"line":2728},15,[2730,2735,2739],{"type":45,"tag":397,"props":2731,"children":2732},{"style":1756},[2733],{"type":50,"value":2734},"        postgres",{"type":45,"tag":397,"props":2736,"children":2737},{"style":430},[2738],{"type":50,"value":386},{"type":45,"tag":397,"props":2740,"children":2741},{"style":430},[2742],{"type":50,"value":2550},{"type":45,"tag":397,"props":2744,"children":2746},{"class":399,"line":2745},16,[2747,2752,2756],{"type":45,"tag":397,"props":2748,"children":2749},{"style":1756},[2750],{"type":50,"value":2751},"          computeSettings",{"type":45,"tag":397,"props":2753,"children":2754},{"style":430},[2755],{"type":50,"value":386},{"type":45,"tag":397,"props":2757,"children":2758},{"style":430},[2759],{"type":50,"value":2550},{"type":45,"tag":397,"props":2761,"children":2763},{"class":399,"line":2762},17,[2764,2769,2773,2779,2783],{"type":45,"tag":397,"props":2765,"children":2766},{"style":1756},[2767],{"type":50,"value":2768},"            autoscalingLimitMinCu",{"type":45,"tag":397,"props":2770,"children":2771},{"style":430},[2772],{"type":50,"value":386},{"type":45,"tag":397,"props":2774,"children":2776},{"style":2775},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2777],{"type":50,"value":2778}," 0.25",{"type":45,"tag":397,"props":2780,"children":2781},{"style":430},[2782],{"type":50,"value":2720},{"type":45,"tag":397,"props":2784,"children":2785},{"style":1129},[2786],{"type":50,"value":2787}," \u002F\u002F scale to zero\n",{"type":45,"tag":397,"props":2789,"children":2791},{"class":399,"line":2790},18,[2792,2797,2801,2806,2810],{"type":45,"tag":397,"props":2793,"children":2794},{"style":1756},[2795],{"type":50,"value":2796},"            autoscalingLimitMaxCu",{"type":45,"tag":397,"props":2798,"children":2799},{"style":430},[2800],{"type":50,"value":386},{"type":45,"tag":397,"props":2802,"children":2803},{"style":2775},[2804],{"type":50,"value":2805}," 1",{"type":45,"tag":397,"props":2807,"children":2808},{"style":430},[2809],{"type":50,"value":2720},{"type":45,"tag":397,"props":2811,"children":2812},{"style":1129},[2813],{"type":50,"value":2814}," \u002F\u002F keep it cheap\n",{"type":45,"tag":397,"props":2816,"children":2818},{"class":399,"line":2817},19,[2819,2824,2828,2832,2837,2841],{"type":45,"tag":397,"props":2820,"children":2821},{"style":1756},[2822],{"type":50,"value":2823},"            suspendTimeout",{"type":45,"tag":397,"props":2825,"children":2826},{"style":430},[2827],{"type":50,"value":386},{"type":45,"tag":397,"props":2829,"children":2830},{"style":430},[2831],{"type":50,"value":1695},{"type":45,"tag":397,"props":2833,"children":2834},{"style":409},[2835],{"type":50,"value":2836},"5m",{"type":45,"tag":397,"props":2838,"children":2839},{"style":430},[2840],{"type":50,"value":1705},{"type":45,"tag":397,"props":2842,"children":2843},{"style":430},[2844],{"type":50,"value":1774},{"type":45,"tag":397,"props":2846,"children":2848},{"class":399,"line":2847},20,[2849],{"type":45,"tag":397,"props":2850,"children":2851},{"style":430},[2852],{"type":50,"value":2853},"          },\n",{"type":45,"tag":397,"props":2855,"children":2857},{"class":399,"line":2856},21,[2858],{"type":45,"tag":397,"props":2859,"children":2860},{"style":430},[2861],{"type":50,"value":2862},"        },\n",{"type":45,"tag":397,"props":2864,"children":2866},{"class":399,"line":2865},22,[2867],{"type":45,"tag":397,"props":2868,"children":2869},{"style":430},[2870],{"type":50,"value":2871},"      };\n",{"type":45,"tag":397,"props":2873,"children":2875},{"class":399,"line":2874},23,[2876],{"type":45,"tag":397,"props":2877,"children":2878},{"style":430},[2879],{"type":50,"value":2617},{"type":45,"tag":397,"props":2881,"children":2883},{"class":399,"line":2882},24,[2884,2889],{"type":45,"tag":397,"props":2885,"children":2886},{"style":1667},[2887],{"type":50,"value":2888},"    return",{"type":45,"tag":397,"props":2890,"children":2891},{"style":430},[2892],{"type":50,"value":2608},{"type":45,"tag":397,"props":2894,"children":2896},{"class":399,"line":2895},25,[2897],{"type":45,"tag":397,"props":2898,"children":2899},{"style":430},[2900],{"type":50,"value":2901},"  },\n",{"type":45,"tag":397,"props":2903,"children":2905},{"class":399,"line":2904},26,[2906,2910,2914],{"type":45,"tag":397,"props":2907,"children":2908},{"style":430},[2909],{"type":50,"value":1804},{"type":45,"tag":397,"props":2911,"children":2912},{"style":441},[2913],{"type":50,"value":1809},{"type":45,"tag":397,"props":2915,"children":2916},{"style":430},[2917],{"type":50,"value":1710},{"type":45,"tag":52,"props":2919,"children":2920},{},[2921,2923,2928,2930,2935,2937,2942,2944,2950,2952,2957,2959,2964],{"type":50,"value":2922},"The ",{"type":45,"tag":171,"props":2924,"children":2926},{"className":2925},[],[2927],{"type":50,"value":2392},{"type":50,"value":2929}," function receives the target branch (its ",{"type":45,"tag":171,"props":2931,"children":2933},{"className":2932},[],[2934],{"type":50,"value":2642},{"type":50,"value":2936},", whether it ",{"type":45,"tag":171,"props":2938,"children":2940},{"className":2939},[],[2941],{"type":50,"value":2576},{"type":50,"value":2943}," yet, whether it's the default, and more) and returns the tuning you want. Here new ",{"type":45,"tag":171,"props":2945,"children":2947},{"className":2946},[],[2948],{"type":50,"value":2949},"dev-*",{"type":50,"value":2951}," branches get a 7-day TTL so they clean themselves up, plus a cheap scale-to-zero compute profile, while existing branches and everything else fall through to the defaults. Because ",{"type":45,"tag":171,"props":2953,"children":2955},{"className":2954},[],[2956],{"type":50,"value":1232},{"type":50,"value":2958}," applies this policy on create, a fresh ",{"type":45,"tag":171,"props":2960,"children":2962},{"className":2961},[],[2963],{"type":50,"value":2949},{"type":50,"value":2965}," branch comes up with these settings already in place.",{"type":45,"tag":2967,"props":2968,"children":2969},"style",{},[2970],{"type":50,"value":2971},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2973,"total":1713},[2974,2982,2992],{"slug":4,"name":4,"fn":5,"description":6,"org":2975,"tags":2976,"stars":28,"repoUrl":29,"updatedAt":30},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2977,2978,2979,2980,2981],{"name":17,"slug":18,"type":15},{"name":14,"slug":4,"type":15},{"name":20,"slug":21,"type":15},{"name":26,"slug":27,"type":15},{"name":23,"slug":24,"type":15},{"slug":328,"name":328,"fn":2983,"description":2984,"org":2985,"tags":2986,"stars":28,"repoUrl":29,"updatedAt":2991},"manage Neon Serverless Postgres databases","Guides and best practices for working with Neon Serverless Postgres. Covers setup, connection methods, branching, autoscaling, scale-to-zero, read replicas, connection pooling, Neon Auth, and the Neon CLI, MCP server, REST API, TypeScript SDK, and Python SDK. Use when users ask about \"Neon setup\", \"connect to Neon\", \"Neon project\", \"DATABASE_URL\", \"serverless Postgres\", \"Neon CLI\", \"neonctl\", \"Neon MCP\", \"Neon Auth\", \"@neondatabase\u002Fserverless\", \"@neondatabase\u002Fneon-js\", \"scale to zero\", \"Neon autoscaling\", \"Neon read replica\", or \"Neon connection pooling\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2987,2988,2989,2990],{"name":17,"slug":18,"type":15},{"name":14,"slug":4,"type":15},{"name":20,"slug":21,"type":15},{"name":26,"slug":27,"type":15},"2026-07-18T05:48:04.497977",{"slug":336,"name":336,"fn":2993,"description":2994,"org":2995,"tags":2996,"stars":28,"repoUrl":29,"updatedAt":3003},"create and manage Neon database branches","Choose and create the right Neon branch type for testing and development. Use when users ask about Neon branching, migration testing with real data, isolated test environments, schema-only branch workflows for sensitive data, or branch creation via Neon CLI or Neon MCP. Triggers include \"Neon branch\", \"test migrations safely\", \"branch production data\", \"schema-only branch\", \"reset branch\" and \"sensitive data testing\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2997,2998,3001,3002],{"name":17,"slug":18,"type":15},{"name":2999,"slug":3000,"type":15},"Migration","migration",{"name":14,"slug":4,"type":15},{"name":20,"slug":21,"type":15},"2026-07-18T05:46:44.889388",{"items":3005,"total":1713},[3006,3014,3021],{"slug":4,"name":4,"fn":5,"description":6,"org":3007,"tags":3008,"stars":28,"repoUrl":29,"updatedAt":30},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3009,3010,3011,3012,3013],{"name":17,"slug":18,"type":15},{"name":14,"slug":4,"type":15},{"name":20,"slug":21,"type":15},{"name":26,"slug":27,"type":15},{"name":23,"slug":24,"type":15},{"slug":328,"name":328,"fn":2983,"description":2984,"org":3015,"tags":3016,"stars":28,"repoUrl":29,"updatedAt":2991},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3017,3018,3019,3020],{"name":17,"slug":18,"type":15},{"name":14,"slug":4,"type":15},{"name":20,"slug":21,"type":15},{"name":26,"slug":27,"type":15},{"slug":336,"name":336,"fn":2993,"description":2994,"org":3022,"tags":3023,"stars":28,"repoUrl":29,"updatedAt":3003},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3024,3025,3026,3027],{"name":17,"slug":18,"type":15},{"name":2999,"slug":3000,"type":15},{"name":14,"slug":4,"type":15},{"name":20,"slug":21,"type":15}]