Releases: pinecone-io/cli
v0.4.5
v0.4.3
v0.4.2
Combined release notes for v0.4.0, v0.4.1, and v0.4.2
New features
- Integrated index support:
pc index record searchandpc index record upsert. --jsonflag expanded across all commands includingorganization delete,project delete, and remaining utility commands.- Errors are emitted as structured JSON to stderr when
--jsonis passed. - Improved
pc loginfor agentic workflows and automated contexts.
Improvements
- JSON output and plain text output correctly separated across
stdoutandstderr. - Terminal color only applied when output is a terminal. Piped or redirected output is always plain text.
- Removed
--quietflag, superseded by--json
Installation changes
Pinecone now provides an installation script through GitHub that can be used to install the CLI binary directly without going through Homebrew.
curl -fsSL https://pinecone.io/install.sh | shThe CLI is now distributed as a Homebrew cask rather than a formula. This requires a one time migration for existing users, and providing the --cask flag when installing through homebrew.
# New users:
brew tap pinecone-io/tap
brew install --cask pinecone-io/tap/pinecone
# Existing Homebrew users — one-time migration required:
brew uninstall pinecone-io/tap/pinecone
brew install --cask pinecone-io/tap/pinecone
# After migrating, future upgrades work normally:
brew upgrade --cask pinecone
# Linux users on Homebrew 4.5.0+ can use the same cask commands. Earlier versions should use the install script:
curl -fsSL https://pinecone.io/install.sh | shFull changelog: v0.3.1...v0.4.2
Changelog
v0.4.1
v0.4.0
See v0.4.2 for complete release notes covering the v0.4.x series.
Changelog
- e3ae144 Add
--jsonto remaining delete / utility commands (#69) - bbe317e Add
sourceTag=pinecone_clito/oauth/authorizefor login / signup flows (#67) - edba07a Enforce
stdout/stderrI/O model across command files; bump grpc tov1.79.3(#76) - 42e1039 Fix
--quiet --jsoncombination suppressing command output (#72) - a1d4769 Fix
pc loginfor agentic workflows (#75) - a124bc8 Fix dead
--jsonflag inorganization&projectdeleteoperations (#70) - 2bbd0c6 Implement search and upsert for integrated indexes (#66)
- bb1d060 Make sure
msgpackage is emitting tostderr(#68) - 91c1584 Remove
pciopackage and--quietflag (#74) - b901a9c Remove publishing dev version on
publish.yaml(#78) - 1990286 Replace raw usage of
fmt.Printwithpcio.Print(#73) - e0df38f Structured JSON error output and TTY-aware color suppression (
--jsonmode) (#77)
v0.3.1
v0.3.0
This release introduces a number of new features:
- Serverless index backup and restore job management.
- Index namespace management.
- BYOC (Bring Your Own Cloud) Indexes.
- Indexes with dedicated read nodes.
- Index metadata schema support.
Backup and restore serverless indexes
You can now backup and restore serverless indexes using the pc backup command. A backup is a static copy of a serverless index that only consumes storage. It is a non-queryable representation of a set of records. You can create a backup of a serverless index, and you can create a new serverless index from a backup. This allows you to restore the index with the same or different configurations.
# Create a backup from an existing index
pc backup create --index-name my-index --name my-index-backup --description "my index backup"
# List all backups in the current project, or filter by index
pc backup list
pc backup list --index-name my-index
# Describe a specific backup
pc backup describe --id backup-id-123
# Restore an index from a backup
pc backup restore --id backup-id-123 --name my-index-restored
# List all restore jobs for the current project
pc backup restore list
# Describe a specific restore job
pc backup restore describe --id restore-id-123
# Delete a backup
pc backup delete --id backup-id-123Work with index namespaces
The pc index namespace command allows you to explicitly work with namespaces within an index.
# Create a namespace
pc index namespace create --index-name my-index --name ns-1
# Describe a namespace
pc index namespace describe --index-name my-index --name ns-1
# List index namespaces
pc index namespace list --index-name my-index
# Delete a namespace, including all of its data
pc index namespace delete --index-name my-index --name ns-1Indexes with Dedicated Read Node configuration
The CLI now supports creating indexes with dedicated read node configurations. Indexes built on dedicated read nodes use provisioned read hardware to provide predictable, consistent performance at sustained, high query volumes. They’re designed for large-scale vector workloads such as semantic search, recommendation engines, and mission-critical services.
# Create a dedicated serverless index, and an on demand index
pc index create \
--name dedicated-index \
--dimension 1824 \
--metric cosine \
--region us-east-1 \
--cloud aws \
--read-node-type b1 \
--read-shards 1 \
--read-replicas 1
pc index create \
--name on-demand-index \
--dimension 1824 \
--metric cosine \
--region us-east-1 \
--cloud aws \
# Convert a dedicated index to an on demand index
pc index configure --name dedicated-index --read-mode ondemand
# Convert an on demand index to a dedicated index
pc index configure --name on-demand-index --read-mode dedicatedBYOC Indexes
If you have gone through the process of setting up your own environment for deploying Pinecone, you can create a BYOC index using the --byoc-environment flag.
$ pc index create --name byoc-index --byoc-environment aws-us-east-1-b921 --metric cosine --dimension 1824Serverless index metadata schema
You can now create serverless indexes with defined metadata schemas.
pc index create \
--name on-demand-index \
--dimension 1824 \
--metric cosine \
--region us-east-1 \
--cloud aws \
--schema genre,year,directorChangelog
v0.2.0
Vector Data Operations
This release introduces the pc index vector command suite which supports the ability to manage data inside of your Pinecone indexes via the CLI.
Vector Command Suite
Work with data inside an index. These commands require and --index-name, and optionally --namespace. Use the --help flag with any command to get detailed documentation on flags and usage:
Manage vector records
pc index vector upsert- insert or update vectors from JSON/JSONLpc index vector list- list vectors (with pagination)pc index vector fetch- fetch by IDs or metadata filterpc index vector update- update a vector by ID or update many via metadata filterpc index vector delete- delete by IDs, by filter, or delete all in a namespacepc index vector query- nearest-neighbor search by values or vector ID
Index statistics
pc index stats- show dimension, total vector count, and namespace summaries for an index
JSON Input Formats & Flag Ergonomics
Many vector commands accept JSON input through three different formats:
1. Inline JSON (smaller payloads)
pc index vector fetch \
--index-name my-index \
--namespace my-namespace \
--ids '["vec-1","vec-2"]'2. JSON or JSONL files (.json, .jsonl)
You can pass files with JSON data via file path. JSONL files can be used instead of JSON for vector upsert operations.
pc index vector upsert \
--index-name my-index \
--namespace my-namespace \
--body ./vectors.jsonl3. From stdin using -
Passing a - for a flag requests stdin for that value. Only one flag can use stdin per command.
cat vectors.jsonl | pc index vector upsert \
--index-name my-index \
--namespace my-namespace \
--body -JSON Schemas
Commands that support a --body flag use types in the vector package, which wrap types in the go-pinecone SDK. The --body flag allows you to provide JSON payloads in lieu of flags:
UpsertBody— object with an arrayvectorsofpinecone.VectorobjectsQueryBody— fields:id,vector,sparse_values,filter,top_k,include_values,include_metadataFetchBody— fields:ids,filter,limit,pagination_tokenUpdateBody— fields:id,values,sparse_values,metadata,filter,dry_run
Example vectors.json (UpsertBody - dense vectors)
{
"vectors": [
{
"id": "vec-1",
"values": [0.1, 0.2, 0.3],
"metadata": { "genre": "sci-fi", "title": "Voyager" }
},
{
"id": "vec-2",
"values": [0.3, 0.1, 0.2],
"metadata": { "genre": "fantasy", "title": "Dragon" }
}
]
}Example JSONL format
{"id":"vec-1","values":[0.1,0.2,0.3],"metadata":{"genre":"sci-fi","title":"Voyager"}}
{"id":"vec-2","values":[0.3,0.1,0.2],"metadata":{"genre":"fantasy","title":"Dragon"}}Usage Examples
Upsert data
pc index vector upsert \
--index-name my-index \
--namespace my-namespace \
--body ./vectors.jsonList Vectors
pc index vector list --index-name my-index --namespace my-namespaceFetch vectors by ID and metadata filter
pc index vector fetch \
--index-name my-index \
--namespace my-namespace \
--ids '["vec-1"]'
pc index vector fetch \
--index-name my-index \
--namespace my-namespace \
--filter '{"genre":{"$eq":"drama"}}'Query by vector and existing vector ID
pc index vector query \
--index-name my-index \
--namespace my-namespace \
--vector '[0.1,0.2,0.3]' \
--top-k 3 \
--include-metadata
pc index vector query \
--index-name my-index \
--namespace my-namespace \
--id vec-1 \
--top-k 3Changelog
- 132b30f Clean up
presenterspointer handling (#59) - 63b72c1 Finalize README for new vector operations (#58)
- 845bd1c Implement Vector Upsert, Query, Fetch, List, Delete, and Update (#54)
- 723dd6c Implement
sdk.NewIndexConnection, clean upcontext.Contextpassing (#55) - 8b2d473 Refactor ingestion for file/stdin (#56)
- 65859ab Rename
describe-stats->stats(#57)
Full Changelog: v0.1.3...v0.2.0