The rvl CLI
RedisVL ships with rvl, a purpose-built command-line tool for creating, inspecting, and managing Redis search indices from the terminal — a Go port of the Python library’s rvl CLI. It also hosts the MCP server.
Installation
Prebuilt binaries
Every release ships standalone rvl
binaries for macOS, Linux, and Windows (amd64 and arm64) — no Go
toolchain required. Archives are named rvl_<version>_<os>_<arch>.
For example, on macOS (Apple Silicon):
VERSION=0.2.0
curl -sSfLO "https://github.com/redis/redis-vl-golang/releases/download/v${VERSION}/rvl_${VERSION}_darwin_arm64.tar.gz"
tar -xzf "rvl_${VERSION}_darwin_arm64.tar.gz" rvl
sudo mv rvl /usr/local/bin/
rvl version
Substitute linux_amd64, linux_arm64, or darwin_amd64 as
appropriate; Windows users download the .zip and place rvl.exe on
their PATH. Verify downloads against the release’s checksums.txt:
curl -sSfLO "https://github.com/redis/redis-vl-golang/releases/download/v${VERSION}/checksums.txt"
shasum -a 256 -c checksums.txt --ignore-missing
From source
Build from a checkout of the repository:
go build -o bin/rvl ./cmd/rvl # or: make build-rvl
Connecting to Redis
Every command resolves the Redis connection URL in this order:
-
The
-u/--urlflag on the command. -
The
REDIS_URLenvironment variable. -
redis://localhost:6379.
export REDIS_URL=redis://:password@redis.example.com:6379
rvl index listall
# or per command:
rvl index listall -u redis://localhost:6380
Commands
$ rvl --help
rvl - RedisVL command line tool
Commands:
index create -s schema.yaml [--overwrite] Create a new index from a schema file
index info -i <name> [--json] Show details about an index
index listall [--json] List all indexes
index delete -i <name> Delete an index, keep its data
index destroy -i <name> Delete an index and drop its data
stats -i <name> | -s schema.yaml Display index statistics
mcp --config mcp.yaml Run the RedisVL MCP server
version [-s] Print the library version
Options:
-u, --url Redis connection URL (default: $REDIS_URL or redis://localhost:6379)
index create
Creates an index from a schema YAML file (-s / --schema, required). Pass --overwrite to replace an existing index definition.
index:
name: user-idx
prefix: user
storage_type: json
fields:
- name: user
type: tag
- name: embedding
type: vector
attrs:
algorithm: flat
dims: 4
distance_metric: cosine
datatype: float32
$ rvl index create -s schemas/schema.yaml
Index created successfully: user-idx
$ rvl index create -s schemas/schema.yaml --overwrite
Index created successfully: user-idx
index info
Shows the full FT.INFO details for an index, identified by name (-i / --index) or by schema file (-s). Add --json for machine-readable output.
$ rvl index info -i user-idx
Index Information for "user-idx":
attributes [...]
index_name user-idx
num_docs 42
...
$ rvl index info -i user-idx --json
index listall
Lists every search index on the server.
$ rvl index listall
Indices (2):
user-idx
products
$ rvl index listall --json
{
"indices": [
"user-idx",
"products"
]
}
index delete and index destroy
Both take an index name via -i / --index. delete removes only the index definition; destroy also drops the indexed documents.
$ rvl index delete -i user-idx
Index deleted (data preserved): user-idx
$ rvl index destroy -i user-idx
Index destroyed (index and data deleted): user-idx
index destroy deletes the underlying documents from Redis. Use index delete when you only want to drop the index definition.
|
stats
Displays index statistics (document counts, memory usage, indexing failures, and more), mirroring the rows shown by the Python rvl stats table. The index can be identified by name (-i) or schema file (-s), and --json is supported.
$ rvl stats -i user-idx
Statistics:
Stat Key Value
------------------------------------------------
num_docs 42
num_terms 118
max_doc_id 42
num_records 160
percent_indexed 1
hash_indexing_failures 0
...
vector_index_sz_mb 0.31
mcp
Runs the RedisVL MCP server, exposing an existing index to MCP-compatible clients:
rvl mcp --config mcp.yaml [--read-only] [--transport stdio|streamable-http] \
[--host <host>] [--port <port>] [--allow-unauthenticated]
| Flag | Description | Default |
|---|---|---|
|
Path to the MCP YAML config file (required). |
— |
|
Disable the upsert tool. |
|
|
|
|
|
Host to bind for the HTTP transport. |
|
|
Port to bind for the HTTP transport. |
|
|
Allow binding the HTTP transport to a non-loopback host. |
|
See MCP Server for the configuration format and tool contract.
See also
-
Getting Started — schemas and index management from Go code
-
MCP Server — the
rvl mcpcommand in depth