> ## Documentation Index
> Fetch the complete documentation index at: https://corsair-feat-reconnect-error.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Neon plugin for Corsair

Use **Neon** through Corsair: one client, typed API calls, local DB sync.

Neon exposes project, branch, database, role, compute endpoint, auth, organization, and infrastructure workflows for serverless Postgres. Use Corsair permissions for destructive actions such as deleting projects, dropping branches or databases, revoking API keys, or removing VPC endpoints.

**What you get:**

* 110 typed API operations
* 8 synced entities (`apiKeys`, `branches`, `computeEndpoints`, `databases`, `organizations`, `projects`, and 2 more) for fast `.search()` / `.list()`

## Setup

<Steps>
  <Step title="Install">
    <CodeGroup>
      ```bash npm theme={null}
      npm install corsair @corsair-dev/neon
      ```

      ```bash yarn theme={null}
      yarn add corsair @corsair-dev/neon
      ```

      ```bash pnpm theme={null}
      pnpm install corsair @corsair-dev/neon
      ```

      ```bash bun theme={null}
      bun add corsair @corsair-dev/neon
      ```
    </CodeGroup>
  </Step>

  <Step title="Add the plugin">
    ```ts corsair.ts theme={null}
    import Database from 'better-sqlite3';
    import { createCorsair } from 'corsair';
    import { neon } from '@corsair-dev/neon';

    export const corsair = createCorsair({
    	plugins: [
    		neon(),
    	],
    	database: new Database('corsair.db'),
    	kek: process.env.CORSAIR_KEK!,
    	hub: {
    		projectApiKey: process.env.CORSAIR_DEV_API_KEY!,
    		signingSecret: process.env.CORSAIR_DEV_SIGNING_SECRET!,
    	},
    });
    ```

    Multi-tenancy is the default — scope calls with `corsair.withTenant(id)`. See [Quick start](/quick-start) for KEK + Hub keys, and [Multi-tenancy](/concepts/multi-tenancy) for account isolation.
  </Step>

  <Step title="Choose authentication">
    <Tabs>
      <Tab title="API Key (Recommended)">
        No setup required yet. When you make your first request as a tenant, Corsair prompts for the API key.

        ```ts theme={null}
        neon()
        ```

        More: [API Key](/concepts/api-key)
      </Tab>
    </Tabs>
  </Step>

  <Step title="Connect a tenant">
    Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see [Connect / OAuth](/management/connect).

    ```ts theme={null}
    const { connectUrl } = await corsair.manage.connect.createLink({
    	plugin: 'neon',
    	tenantId: 'acme',
    });
    // redirect the user's browser to connectUrl
    ```
  </Step>
</Steps>

## Example API calls

**`apiKeys.listApiKeys`**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.neon.api.apiKeys.listApiKeys({});
```

**`apiKeys.createApiKey`**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.neon.api.apiKeys.createApiKey({});
```

See the full list on the [API](/plugins/neon/api) page.

## Query synced data

Synced entities support `tenant.neon.db.<entity>.search()` and `.list()`: `apiKeys`, `branches`, `computeEndpoints`, `databases`, `organizations`, `projects`, `roles`, `snapshots`.

See [Database](/plugins/neon/database) for filters and operators.

## What's next

<CardGroup cols={2}>
  <Card title="API reference" href="/plugins/neon/api">
    Every `neon.api.*` operation with input and output types.
  </Card>

  <Card title="Database" href="/plugins/neon/database">
    Synced entities, search filters, and operators.
  </Card>

  <Card title="Connect / OAuth" href="/management/connect">
    createLink, Hub delivery, and tenant connect flows.
  </Card>

  <Card title="Use with agents" href="/mcp-adapters/mcp-adapters">
    Expose this plugin's operations as MCP tools.
  </Card>
</CardGroup>
