> Full Neon documentation index: https://neon.com/docs/llms.txt

# Neon CLI enhancements, Neon Storage in the Files SDK, and more

## Neon CLI enhancements

We're continually improving the Neon CLI and the developer experience around it. Recent additions include [branch-first dev loop](https://neon.com/blog/branch-first-dev-loop) (`neon link`, `neon checkout`, and `neon env pull`) commands and [`neon.ts`](https://neon.com/docs/reference/neon-ts). This week brings a shorter name plus two additional commands.

- **The CLI is now just `neon`**

  You can now install the Neon CLI from npm as `neon` instead of `neonctl`: `npm i -g neon` (or run it with `npx neon@latest`). All commands are now documented as `neon` rather than `neonctl`. If you already use `neonctl`, nothing changes: it's the same CLI, `neonctl` still works as a command, and no migration or re-authentication is needed. See the [Neon CLI install guide](https://neon.com/docs/cli/install).

  The latest CLI now requires Node.js 20.19.0 or higher (previously 18). An existing installation keeps working on your current Node.js version; if you're on an older version, upgrade Node.js before updating the CLI.

- **Set up declarative branch management in one step**

  The new `neon config init` command scaffolds a starter [`neon.ts`](https://neon.com/docs/reference/neon-ts) config file and installs the `@neon/config` and `@neon/env` packages, so you can define how each branch is set up (compute size, scale-to-zero, TTL, and which services it uses) declaratively, without any manual setup. It runs entirely locally, and `neon link` now offers to run it as its final step.

  ```bash
  neon config init
  ```

- **Check your current branch instantly, with no network call**

  The new `neon status` command is a top-level alias for `neon config status`. Add `--current-branch` to print just the branch pinned in your local `.neon` file:

  ```bash
  neon status --current-branch
  ```

  Because it makes no network call, it's fast enough to run on every shell prompt. For example, add your current Neon branch to a [starship](https://starship.rs) prompt by appending this `[custom.neon]` module to `~/.config/starship.toml`:

  ```toml
  # ~/.config/starship.toml
  [custom.neon]
  description = "Current Neon branch"
  command = "neon status --current-branch"   # prints the branch pinned in .neon (no network)
  when = "neon status --current-branch"       # exits non-zero when no branch -> segment is hidden
  symbol = "🌿 "
  style = "bold green"
  format = "[$symbol$output]($style) "
  ```

  See the [config command reference](https://neon.com/docs/cli/config#current-branch) for more.

## Neon Storage in the Files SDK

[Neon Storage](https://neon.com/docs/storage/overview) now has a first-class adapter in the [Files SDK](https://files-sdk.dev), the open-source library that gives you one upload, download, and presigned-URL API across S3, R2, GCS, and more. The `neon` adapter is wired up from the `AWS_*` variables Neon injects, so pointing your storage backend at Neon is a one-line config change:

```ts
import { Files } from 'files-sdk';
import { neon } from 'files-sdk/neon';

const files = new Files({ adapter: neon({ bucket: 'assets' }) });

// Upload a file, then get a presigned URL to view it
await files.upload('logos/neon-logo.png', body, { contentType: 'image/png' });
const url = await files.url('logos/neon-logo.png', { expiresIn: 3600 });
```

See the [with-files-sdk example](https://github.com/neondatabase/examples/tree/main/with-files-sdk) for a minimal script that uploads files to a branch-scoped bucket.

> Neon Storage is part of Neon's new backend services, currently in private preview. If you haven't signed up yet, you can [sign up and learn more](https://neon.com/docs/introduction/roadmap#new-backend-primitives-for-apps-and-agents).

## Learn more about Lakebase Search

We recently opened [Lakebase Search](https://neon.com/docs/ai/lakebase-search) to all Neon users, adding scalable vector, keyword, and hybrid search to Postgres through the `lakebase_vector` and `lakebase_text` extensions. This week, our engineering team goes under the hood.

Read [Lakebase Search: vector and BM25 on Neon](https://neon.com/blog/lakebase-search-on-neon) blog post to learn why the usual `pgvector` + GIN setup breaks down at scale, and how `lakebase_ann` (IVF + RaBitQ) and `lakebase_bm25` (Block-Max WAND) keep indexes on object storage so they stay ready across scale-to-zero and branching.

## Update snapshot expiration anytime

You can now update a snapshot's expiration with the [Update snapshot](https://api-docs.neon.tech/reference/updatesnapshot) endpoint. Set `expires_at` to a future timestamp to change the retention deadline, or send `null` to remove it so the snapshot never expires. Previously, expiration could only be set when the snapshot was created.

```bash
curl --request PATCH \
  --url 'https://console.neon.tech/api/v2/projects/{project_id}/snapshots/{snapshot_id}' \
  --header 'authorization: Bearer $NEON_API_KEY' \
  --header 'content-type: application/json' \
  --data '{
    "snapshot": {
      "expires_at": "2026-12-31T00:00:00Z"
    }
  }'
```

## Planned update notifications change

So that we can ship Neon improvements and fixes faster, the advance notice period for planned updates on the Scale and Enterprise plans is changing from 7 days to 3 days, effective July 10, 2026. Updates take only a few seconds, and Neon prewarms your cache so performance isn't affected.

You can check for update notifications in your project's settings (**Settings** > **Updates**). On the Scale and Enterprise plans, you also receive an email notification in advance, in addition to the in-console notice. To learn more, see [Updates](https://neon.com/docs/manage/updates).

## Neon Community Corner

This week, we're spotlighting contributions and integrations from the Neon community and ecosystem.

### Neon Testing now supports Bun Test

[Neon Testing](https://www.npmjs.com/package/neon-testing), the community-built integration testing library by [Mikael Lirbank](https://www.lirbank.com/), shipped v3.0.0 with support for [Bun Test](https://bun.sh/docs/cli/test) alongside Vitest. Each test runs against its own isolated Neon branch, with `DATABASE_URL` set up and torn down automatically, so your tests hit the same schema and constraints as production without mocks or a shared local database.

```bash
npm install --save-dev neon-testing
```

View the package on [npm](https://www.npmjs.com/package/neon-testing) and read the [v3.0.0 release notes on GitHub](https://github.com/starmode-base/neon-testing/releases).

### Connect Neon to Gamut

[Gamut](https://www.gamut.so/mcp/developer-tools/neon), an AI agent hosting platform with native support for remote MCP servers, now connects to Neon through the [Neon MCP server](https://neon.com/docs/ai/neon-mcp-server). Setup uses OAuth, matching the existing client flow. To get started, [add Neon to your Gamut agent](https://www.gamut.so/mcp/developer-tools/neon).

### Docs & Postgres tutorial contributors

Our [docs](https://github.com/neondatabase/website) and [Postgres tutorials](https://neon.com/postgresql/tutorial) get better thanks to fixes and improvements from the community. A quick thank you to contributors.

```text
@AayushGoswami @AhmedYasinKUL @Arul-1911 @bcw117 @camro @chibx @codenim34 @crebelskydico @da-vaibhav @DorianDragaj @duffuniverse @fcdm @flow145 @harry-whorlow @houssaineamzil @ifeoluwak @Jaskaranrehal @jayhyp @karlhorky @keugenek @michaelgomeh @noo-dev @rahulrao0209 @Ranzeplay @realihorrud @rhutch117 @sanaeft @sdarnadeem @SefterM-zade @slotix @solisoares @this-fifo @VIM4L-M @webwurst
```
