CLI tool for Weaviate
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jose Luis Franco Arza 0e1bc61102
Merge pull request #172 from weaviate/cari/bump-python-client-4.23
chore: weaviate cli and python version increases
2026-08-21 08:26:12 +02:00
.claude/skills chore: weaviate cli and python version increases 2026-08-20 17:12:49 +02:00
.github Address PR review feedback (round 1) 2026-04-20 12:31:08 +02:00
test chore: weaviate cli and python version increases 2026-08-20 17:12:49 +02:00
weaviate_cli chore: weaviate cli and python version increases 2026-08-20 17:12:49 +02:00
.gitignore Add new agentic Ways of Working. 2026-02-25 12:45:07 +01:00
.pre-commit-config.yaml Add linter and format all code with black. 2024-10-30 10:29:07 +01:00
CLAUDE.md Add agent skills for operating and contributing to weaviate-cli 2026-02-19 18:07:06 +01:00
cli.py Add benchmarking section. 2025-10-09 15:21:37 +02:00
CONTRIBUTING.md Add linter and format all code with black. 2024-10-30 10:29:07 +01:00
Dockerfile Add git install in Dockerfile 2024-10-29 11:46:18 +01:00
LICENSE change CLI to be compatible with weaviate v1, rename 'truncate' to 'delete' and 'expty' to 'delete', add more test to travic.yaml 2021-01-12 15:09:29 +01:00
Makefile Add examples of configuration for WCD clusters. 2024-10-30 11:47:36 +01:00
MANIFEST.in Fix dataset packaging and data injesting. 2024-10-29 12:24:53 +01:00
publish.md Update READMEs. 2024-10-29 16:01:20 +01:00
pyproject.toml Add linter and format all code with black. 2024-10-30 10:29:07 +01:00
README.md Clarify port types in JSON configuration example 2025-10-01 14:25:12 +02:00
requirements-dev.txt chore: weaviate cli and python version increases 2026-08-20 17:12:49 +02:00
setup.cfg chore: weaviate cli and python version increases 2026-08-20 17:12:49 +02:00
setup.py Enable installation with setup.cfg and pyproject. 2024-10-28 15:47:52 +01:00

Weaviate CLI

Weaviate logo

Build Status PyPI version

A powerful command-line interface for managing and interacting with Weaviate vector databases directly from your terminal.

Key Features

  • Collections: Create, update, delete and get collection configurations
  • Data Management: Import, query, update and delete data with various search types (vector, keyword, hybrid)
  • Multi-tenancy: Manage tenants and their states across collections
  • Backup & Restore: Create and restore backups with support for S3, GCS and filesystem
  • Sharding: Monitor and manage collection shards
  • Flexible Configuration: Configure vector indexes, replication, consistency levels and more
  • Role Management: Assign and revoke roles and permissions to users

Quick Start

Install using pip:

pip install weaviate-cli

On Mac, install using Homebrew:

brew install weaviate-cli

Basic Usage

# Show available commands
weaviate-cli --help

# Create a collection
weaviate-cli create collection --collection movies --vectorizer transformers

# Import test data
weaviate-cli create data --collection movies --limit 1000

# Query data
weaviate-cli query data --collection movies --search-type hybrid --query "action movies"

Core Commands

  • create: Create collections, tenants, backups, replications or import data
  • delete: Remove collections, tenants, replications or data
  • update: Modify collection settings, tenant states or data
  • get: Retrieve collection info, tenant details, replication operations or shard status
  • query: Search data using various methods
  • restore: Restore backups from supported backends
  • assign: Assign roles and permissions to users
  • revoke: Revoke roles and permissions from users

Configuration

Weaviate CLI allows you to configure your cluster endpoints and parameters through a configuration file. By default, the CLI looks for a configuration file at ~/.config/weaviate/config.json. If this file does not exist, it will be created with the following default values:

{
    "host": "localhost",
    "http_port": "8080",
    "grpc_port": "50051"
}

You can also specify your own configuration file using the --config-file option:

weaviate-cli --config-file /path/to/your/config.json

The configuration file should be a JSON file with the following structure:

{
    "host": "your-weaviate-host",
    "http_port": your-http-port, # note, this should be a number, NOT a string
    "grpc_port": your-grpc-port, # note, this should be a number, NOT a string
    "grpc_host": "your-grpc-host",
    "auth": {
        "type": "api_key",
        "api_key": "your-api-key"
    }
}

You can pass host without protocol and port or with protocol AND port.

E.g. this is also correct.

{
    "host": "https://your-weaviate-host:443",
    "grpc_host": "https://your-grpc-host:443",
    "auth": {
        "type": "api_key",
        "api_key": "your-api-key"
    }
}

NOTE: when you pass port, make sure to omit the protocol, otherwise it'll try to deduct it from the host string.

If you are using a remote Weaviate instance, you can use the weaviate-cli command to authenticate with your Weaviate instance. Here you can see an example on how the configuration file should look like if you are connecting to a WCD cluster:

NOTE: here host URL should be http endpoint not grpc_endpoint of the weaviate cloud. And without "https" prefix.

 {
     "host": "thisisaninventedcluster.url.s3.us-west3.prov.weaviate.cloud",
     "auth": {
         "type": "api_key",
         "api_key": "jfeRFsdfRfSasgsDoNOtTrYToUsErRQwqqdZfghasd"
     },
    "headers":{
        "X-OpenAI-Api-Key":"OPEN_AI_KEY",
        "X-Cohere-Api-Key":"Cohere_AI_KEY",
        "X-JinaAI-Api-Key":"JINA_AI_KEY"
        }
 }

If you want to allow using different users for different actions in your cluster, you can specify the different users in the configuration file and use the --user option to specify which user to use for a specific action. An example of how the configuration file should look like is the following:

{
    "host": "your-weaviate-host",
    "auth": {
        "type": "user",
        "user1": "your-api-key-for-user1",
        "user2": "your-api-key-for-user2"
    }
}

It's important to note that the "type" key must be set to "user" and the users must be specified in the auth section. When using the weaviate-cli command, you can specify the user to use for an action by using the --user option. For example:

weaviate-cli --user user1 create collection --collection movies --vectorizer transformers
weaviate-cli --user user2 get collection --collection movies

Shell Completion

Execute the following commands to enable shell completion.

Warning

Warp is currently not supporting dynamic auto completion and thus can not support weaviate-cli completion.

Zsh

_WEAVIATE_CLI_COMPLETE=zsh_source weaviate-cli > ${fpath[1]}/_weaviate-cli
autoload -U compinit && compinit
echo 'autoload -U compinit && compinit' >> ~/.zshrc

Bash

echo 'eval "$(_WEAVIATE_CLI_COMPLETE=bash_source weaviate-cli)"' >> ~/.bashrc

Requirements

  • Python 3.10+
  • Weaviate instance (local or remote)

Documentation

Detailed documentation will be added soon.

Supported Model Provider

  • Weaviate Embeddings Service (WCD clusters only)
  • Contextionary
  • Transformers
  • OpenAI
  • Ollama
  • Cohere
  • JinaAI

Community & Support

Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

License

BSD-3-Clause License