Skip to content

feat(cli): add vercel blob store list command#14653

Merged
brookemosby merged 7 commits into
mainfrom
cli-blob-list
Apr 13, 2026
Merged

feat(cli): add vercel blob store list command#14653
brookemosby merged 7 commits into
mainfrom
cli-blob-list

Conversation

@Grappeggia

Copy link
Copy Markdown
Contributor

Summary

Add a new CLI command vercel blob store list that lists all Blob stores for a team, enabling users to see their blob stores directly from the CLI without needing to switch to the dashboard.

Resolves: STO-1475

Features

  • Lists all blob stores with name, ID, status, region, size, file count, connected projects, and age
  • --json flag for machine-readable output
  • --no-projects flag to hide the Projects column
  • ls alias for the list subcommand
  • Follows CLI conventions consistent with other list commands (project list, domains ls, integration list)

Usage

# List all blob stores (table format)
vercel blob store list

# Using alias
vercel blob store ls

# JSON output
vercel blob store list --json

# Hide projects column
vercel blob store list --no-projects

Example Output

Blob stores in my-team:

  Name              ID                       Status      Region   Size    Files   Projects           Age
  my-uploads        store_abc123def456gh     ● Active    iad1     2.3MB   142     my-app, api (+1)   5d
  user-avatars      store_xyz789abc012de     ● Active    sfo1     856KB   89      frontend           2w
  temp-storage      store_qrs456tuv789wx     ● Active    cdg1     12MB    1.2k    –                  3mo

Test Plan

  • Added comprehensive unit tests covering:
    • Table output format
    • JSON output
    • --no-projects flag
    • ls alias
    • Empty result handling
    • Error cases
    • Telemetry tracking

Add a new CLI command to list all Blob stores for a team, allowing users
to view their blob stores directly from the CLI without needing the dashboard.

Features:
- Lists all blob stores with name, ID, status, region, size, file count, connected projects, and age
- Supports `--json` flag for machine-readable output
- Supports `--no-projects` flag to hide the Projects column
- Supports `ls` alias for the `list` subcommand
- Follows CLI conventions consistent with other list commands

Usage:
  vercel blob store list [options]
  vercel blob store ls [options]

Options:
  --json         Output results as JSON
  --no-projects  Hide the Projects column
@Grappeggia Grappeggia requested a review from a team as a code owner January 18, 2026 23:04
@changeset-bot

changeset-bot Bot commented Jan 18, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 8173695

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
vercel Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

github-actions Bot commented Jan 18, 2026

Copy link
Copy Markdown
Contributor

📦 CLI Tarball Ready

The Vercel CLI tarball for this PR is now available!

Quick Test

You can test this PR's CLI directly by running:

npx https://vercel-9cdl0wpyv.vercel.sh/tarballs/vercel.tgz --help

Use in vercel.json

To use this CLI version in your project builds, add to your vercel.json:

{
  "build": {
    "env": {
      "VERCEL_CLI_VERSION": "vercel@https://vercel-9cdl0wpyv.vercel.sh/tarballs/vercel.tgz"
    }
  }
}

Python Runtime Wheel

A vercel-runtime wheel was also built for this PR.
To use in your Python project builds, also set this environment variable:

VERCEL_RUNTIME_PYTHON="vercel-runtime @ https://vercel-9cdl0wpyv.vercel.sh/tarballs/vercel_runtime-0.13.0.dev1776118361+8173695-py3-none-any.whl"

Python Workers Wheel

A vercel-workers wheel was also built for this PR.
To use in your Python project builds, also set this environment variable:

VERCEL_WORKERS_PYTHON="vercel-workers @ https://vercel-9cdl0wpyv.vercel.sh/tarballs/vercel_workers-0.1.0.dev1776118361+8173695-py3-none-any.whl"

@github-actions

github-actions Bot commented Jan 18, 2026

Copy link
Copy Markdown
Contributor

🧪 Unit Test Strategy

Comparing: 4e62f6c8173695 (view diff)

Strategy: Affected packages only

✅ Only testing packages that have been modified or depend on modified packages.

Affected packages - 1 (3%)
  1. vercel
Unaffected packages - 39 (98%)
  1. @vercel-internals/get-package-json
  2. @vercel/backends
  3. @vercel/build-utils
  4. @vercel/cervel
  5. @vercel/cli-auth
  6. @vercel/client
  7. @vercel/config
  8. @vercel/detect-agent
  9. @vercel/edge
  10. @vercel/elysia
  11. @vercel/error-utils
  12. @vercel/express
  13. @vercel/fastify
  14. @vercel/firewall
  15. @vercel/frameworks
  16. @vercel/fs-detectors
  17. @vercel/functions
  18. @vercel/gatsby-plugin-vercel-builder
  19. @vercel/go
  20. @vercel/h3
  21. @vercel/hono
  22. @vercel/hydrogen
  23. @vercel/koa
  24. @vercel/nestjs
  25. @vercel/next
  26. @vercel/node
  27. @vercel/oidc
  28. @vercel/oidc-aws-credentials-provider
  29. @vercel/python
  30. @vercel/python-analysis
  31. @vercel/redwood
  32. @vercel/related-projects
  33. @vercel/remix-builder
  34. @vercel/routing-utils
  35. @vercel/ruby
  36. @vercel/rust
  37. @vercel/static-build
  38. @vercel/static-config
  39. examples

Results

  • Unit tests: Only affected packages will run unit tests
  • E2E tests: Running in parallel via E2E Tests workflow
  • Type checks: Only affected packages will run type checks

This comment is automatically generated based on the affected testing strategy

@Grappeggia Grappeggia requested a review from tknickman January 18, 2026 23:06

@tknickman tknickman left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two comments but nothing blocking - @styfle can you take a look here for the blob API usage / data filtering?

Comment thread packages/cli/src/commands/blob/command.ts
Comment thread packages/cli/src/commands/blob/command.ts
Comment thread packages/cli/src/commands/blob/store-list.ts Outdated
Comment thread packages/cli/src/commands/blob/store-list.ts Outdated
Grappeggia and others added 2 commits February 3, 2026 09:41
Co-authored-by: Steven <steven@ceriously.com>
Co-authored-by: Steven <steven@ceriously.com>

@brookemosby brookemosby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Reconcile blob store listing with main's flat `list-stores` command: keep
project linking, --all, and interactive TTY flow; add --json, --no-projects,
blob-type filtering, and richer non-TTY tables. Remove obsolete `store` router.
Fix duplicate TokensTelemetryClient method from the merge.

Made-with: Cursor
@brookemosby brookemosby requested a review from a team as a code owner April 13, 2026 21:40
@brookemosby brookemosby enabled auto-merge (squash) April 13, 2026 22:12
@brookemosby brookemosby merged commit da0959d into main Apr 13, 2026
299 of 301 checks passed
@brookemosby brookemosby deleted the cli-blob-list branch April 13, 2026 23:00
healeycodes pushed a commit that referenced this pull request Apr 14, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @vercel/build-utils@13.15.0

### Minor Changes

- [services] allow multiple v2beta triggers for a single Lambda when
config is coming from services
([#15890](#15890))

### Patch Changes

- Add deserialization utilities
([#15927](#15927))

## @vercel/fs-detectors@5.16.0

### Minor Changes

- Parse python module:variable entrypoint notation in
experimentalServices for all service types.
([#15844](#15844))

### Patch Changes

- Updated dependencies
\[[`4e62f6c2204dd148643f86f140f0ae7995778017`](4e62f6c),
[`42a70e1e6318615bd420933f9cc978bed3a43936`](42a70e1)]:
    -   @vercel/build-utils@13.15.0

## @vercel/python@6.31.0

### Minor Changes

- Parse python module:variable entrypoint notation in
experimentalServices for all service types.
([#15844](#15844))

### Patch Changes

- [python] set the `UV_PROJECT_ENVIRONMENT` and `UV_NO_DEV` env vars so
that custom `installCommand` and `buildCommand` commands can be called
without the `--active` and `--no-dev` flags
([#15715](#15715))

## @vercel/backends@0.0.60

### Patch Changes

- Include the entrypoint path in the build complete log message.
([#15914](#15914))

- Updated dependencies
\[[`4e62f6c2204dd148643f86f140f0ae7995778017`](4e62f6c),
[`42a70e1e6318615bd420933f9cc978bed3a43936`](42a70e1)]:
    -   @vercel/build-utils@13.15.0

## @vercel/cervel@0.0.47

### Patch Changes

- Updated dependencies
\[[`8b77cdcd71ba645df4eed52cdccde9a2cbb913f8`](8b77cdc)]:
    -   @vercel/backends@0.0.60

## vercel@51.2.1

### Patch Changes

- Add `ai-gateway api-keys create` command for creating AI Gateway API
keys with optional quota limits
([#15744](#15744))

- Improve `vercel blob list-stores` with `--json` and `--no-projects`,
exclude non-blob stores when the API returns a `type` field, and show a
richer table for non-TTY output while keeping linked-project filtering,
`--all`, and interactive store selection on TTY.
([#14653](#14653))

- Add a `project rename` command to rename projects from the CLI.
([#15918](#15918))

- Updated dependencies
\[[`8b77cdcd71ba645df4eed52cdccde9a2cbb913f8`](8b77cdc),
[`2d7d14db1c6448f716d1ccc30844b43f47e8e6ee`](2d7d14d),
[`d731f1b69030ddcaa0b7f4f1854f79ea92671b1e`](d731f1b),
[`4e62f6c2204dd148643f86f140f0ae7995778017`](4e62f6c),
[`45c8d4f54cc831695375794964a29145860fa45b`](45c8d4f),
[`42a70e1e6318615bd420933f9cc978bed3a43936`](42a70e1)]:
    -   @vercel/backends@0.0.60
    -   @vercel/python@6.31.0
    -   @vercel/next@4.16.7
    -   @vercel/build-utils@13.15.0
    -   @vercel/elysia@0.1.63
    -   @vercel/express@0.1.73
    -   @vercel/fastify@0.1.66
    -   @vercel/go@3.5.0
    -   @vercel/h3@0.1.72
    -   @vercel/hono@0.2.66
    -   @vercel/hydrogen@1.3.6
    -   @vercel/koa@0.1.46
    -   @vercel/nestjs@0.2.67
    -   @vercel/node@5.7.5
    -   @vercel/redwood@2.4.12
    -   @vercel/remix-builder@5.7.2
    -   @vercel/ruby@2.3.2
    -   @vercel/rust@1.1.0
    -   @vercel/static-build@2.9.13

## @vercel/client@17.3.2

### Patch Changes

- Updated dependencies
\[[`4e62f6c2204dd148643f86f140f0ae7995778017`](4e62f6c),
[`42a70e1e6318615bd420933f9cc978bed3a43936`](42a70e1)]:
    -   @vercel/build-utils@13.15.0

## @vercel/elysia@0.1.63

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.5

## @vercel/express@0.1.73

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/cervel@0.0.47
    -   @vercel/node@5.7.5

## @vercel/fastify@0.1.66

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.5

## @vercel/gatsby-plugin-vercel-builder@2.1.13

### Patch Changes

- Updated dependencies
\[[`4e62f6c2204dd148643f86f140f0ae7995778017`](4e62f6c),
[`42a70e1e6318615bd420933f9cc978bed3a43936`](42a70e1)]:
    -   @vercel/build-utils@13.15.0

## @vercel/h3@0.1.72

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.5

## @vercel/hono@0.2.66

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.5

## @vercel/koa@0.1.46

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.5

## @vercel/nestjs@0.2.67

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/node@5.7.5

## @vercel/next@4.16.7

### Patch Changes

- Update to latest Next.js adapter
([#15456](#15456))

## @vercel/node@5.7.5

### Patch Changes

- Updated dependencies
\[[`4e62f6c2204dd148643f86f140f0ae7995778017`](4e62f6c),
[`42a70e1e6318615bd420933f9cc978bed3a43936`](42a70e1)]:
    -   @vercel/build-utils@13.15.0

## @vercel/static-build@2.9.13

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/gatsby-plugin-vercel-builder@2.1.13

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants