A feature-rich terminal UI for managing Redis databases, built with Go and Bubble Tea. Browse, edit, and monitor your Redis keys without leaving the terminal.
# Native install — recommended (macOS and Linux)
curl -fsSL https://raw.githubusercontent.com/davidbudnick/redis-tui/main/install.sh | bash
# Homebrew (macOS and Linux)
brew tap davidbudnick/homebrew-tap
brew install --cask redis-tui
# Go (requires Go 1.26+)
go install github.com/davidbudnick/redis-tui@latestPre-built binaries — Download from GitHub Releases
- Key browser with pattern filtering, regex, and fuzzy search
- All data types — strings, lists, sets, sorted sets, hashes, streams, JSON (RedisJSON), HyperLogLog, bitmaps, and geospatial
- Inline value editor for editing string and JSON values
- Tree view for hierarchical key navigation
- Favorites and recent keys for quick access
- Key templates for creating keys from predefined structures
- Value history — view and restore previous values
- JSON syntax highlighting
- CLI quick connect — pass
--host,--port,--user,--password, etc. to connect without a config file - Connection manager — save and switch between multiple Redis instances
- TLS/SSL encryption support
- SSH tunneling for secure remote access
- Connection groups to organize instances
- Database switching between Redis databases (0-15)
- Cluster support — connect to any cluster node and press
Kto view all nodes, their roles (master/replica), slot ranges, and link state; cluster metrics in the live dashboard
- Live metrics dashboard — real-time ops/sec, memory, CPU, network I/O, hit rate, and client count with scrolling ASCII charts; cluster node count display
- Server info — version, mode, OS, uptime, memory, and connected clients
- Memory stats — detailed usage breakdown and top keys by memory consumption
- Slow log — view slow query entries with execution time and command details
- Client list — view all connected Redis clients with address, age, and command info
- Watch mode — monitor key values for changes in real-time with configurable interval
- Keyspace events — subscribe to keyspace notifications (set, del, expire, etc.)
- Export/Import — JSON-based key backup and restore
- Bulk operations — pattern-based delete and batch TTL across multiple keys
- Redis config — browse and edit runtime CONFIG parameters
- Pub/Sub — browse active channels with subscriber counts and publish messages
- Lua scripting — execute Lua scripts directly against the server
- Themes — switch between color themes
The install script auto-detects your OS and architecture, downloads the latest release, verifies the checksum, and installs the binary to ~/.local/bin (override with INSTALL_DIR):
curl -fsSL https://raw.githubusercontent.com/davidbudnick/redis-tui/main/install.sh | bash
# Custom install directory
INSTALL_DIR=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/davidbudnick/redis-tui/main/install.sh | bashSee Quick Install above.
# Clone the repository
git clone https://github.com/davidbudnick/redis-tui.git
cd redis-tui
# Build
make build
# Install to GOPATH/bin
make installDownload the latest release from the Releases page. Pre-built binaries are available for macOS, Linux, and Windows with no Go installation required.
Note: Requires Go 1.26 or later.
go install github.com/davidbudnick/redis-tui@latest# Launch the interactive connection manager
redis-tui
# Quick connect to a Redis server
redis-tui --host localhost
# Connect with password and specific database
redis-tui -h redis.example.com -p 6380 -a mypassword -n 2
# Connect to a cluster node
redis-tui --host redis.example.com --port 6380 --cluster
# Connect with TLS
redis-tui --host redis.example.com --tls --tls-ca /path/to/ca.pem
# Update to the latest version
redis-tui --updateWhen --host is provided the TUI connects automatically on startup. Without flags the interactive connection manager is shown.
Press ? inside the app to view the full help screen.
| Flag | Short | Description | Default |
|---|---|---|---|
--host |
-h |
Redis server hostname | |
--port |
-p |
Redis server port | 6379 |
--password |
-a |
Redis password | |
--db |
-n |
Database number (0-15) | 0 |
--user |
Redis username (For ACL enabled servers) | ||
--name |
Connection display name | host:port |
|
--cluster |
Enable cluster mode | false | |
--tls |
Enable TLS/SSL | false | |
--tls-cert |
TLS client certificate file | ||
--tls-key |
TLS client private key file | ||
--tls-ca |
TLS CA certificate file | ||
--tls-skip-verify |
Skip TLS certificate verification | false | |
--scan-size |
Redis SCAN COUNT hint (batch size for key scanning) | 1000 | |
--include-types |
Fetch key types during scan (set false to skip) | true | |
--version |
Print version and exit | ||
--update |
Update to the latest version |
Short flags (-h, -p, -a, -n) follow redis-cli conventions.
# Native install
rm -f ~/.local/bin/redis-tui
# Homebrew
brew uninstall --cask redis-tui
# Go
rm -f $(go env GOPATH)/bin/redis-tuiKeyboard Shortcuts
| Key | Action | Key | Action |
|---|---|---|---|
q |
Quit / Go back | Ctrl+U/D |
Page up/down |
? |
Show help | g/G |
Go to top/bottom |
j/k |
Navigate up/down | home/end |
Go to top/bottom |
Ctrl+C |
Force quit |
| Key | Action | Key | Action |
|---|---|---|---|
Enter |
Connect to selected | d/delete/backspace |
Delete connection |
a/n |
Add new connection | r |
Refresh list |
e |
Edit connection | Ctrl+T |
Test connection |
| Key | Action | Key | Action |
|---|---|---|---|
Enter |
View key details | O |
View logs |
a/n |
Add new key | B |
Bulk delete |
d/delete/backspace |
Delete key | T |
Batch set TTL |
r |
Refresh keys | F |
View favorites |
l |
Load more keys | W |
Tree view |
/ |
Filter by pattern | Ctrl+R |
Regex search |
s/S |
Sort / Toggle direction | Ctrl+F |
Fuzzy search |
v |
Search by value | Ctrl+H |
Recent keys |
e |
Export to JSON | Ctrl+L |
Client list |
I |
Import from JSON | Ctrl+E |
Toggle keyspace events |
i |
Server info | Ctrl+X |
View expiring keys |
D |
Switch database | m |
Live metrics dashboard |
f |
Flush database | M |
Memory stats |
p |
Pub/Sub channels | C |
Cluster info |
L |
View slow log | K |
Compare keys |
E |
Execute Lua script | P |
Key templates |
Ctrl+G |
Redis config |
| Key | Action | Key | Action |
|---|---|---|---|
e |
Edit value (string/json) | r |
Refresh value |
a |
Add to collection | f |
Toggle favorite |
x |
Remove from collection | w |
Watch for changes |
t |
Set TTL | h |
View value history |
R |
Rename key | y |
Copy to clipboard |
c |
Copy key | J |
JSON path query |
d/delete |
Delete key | j/k |
Navigate collection items |
esc/backspace |
Go back to keys list |
Need a Redis instance to try redis-tui? Docker Compose files are included under examples/.
# Standalone Redis on port 6379
docker compose -f examples/standalone/docker-compose.yml up -d
redis-tui -h localhost
# 6-node cluster (3 masters + 3 replicas) on ports 6380-6385
docker compose -f examples/cluster/docker-compose.yml up -d
redis-tui -h localhost -p 6380 --cluster
# Standalone Redis Stack (RedisJSON, RediSearch, etc.) on port 6390
docker compose -f examples/standalone-redis-stack/docker-compose.yml up -d
redis-tui -h localhost -p 6390
# Redis Stack cluster on ports 6386-6392
docker compose -f examples/cluster-redis-stack/docker-compose.yml up -d
redis-tui -h localhost -p 6386 --clusterThe Makefile also exposes shortcuts for these (make docker-up-standalone, make docker-up-cluster, make docker-up-standalone-stack, make docker-up-cluster-stack) along with matching docker-down-* and docker-seed-* targets.
Configuration is stored in ~/.config/redis-tui/config.json.
{
"connections": [
{
"id": 1,
"name": "Standalone",
"host": "localhost",
"port": 6379,
"username": "default",
"db": 0,
"created_at": "2025-01-01T00:00:00Z",
"updated_at": "2025-01-01T00:00:00Z"
},
{
"id": 2,
"name": "Cluster",
"host": "localhost",
"port": 6380,
"db": 0,
"use_cluster": true,
"created_at": "2025-01-01T00:00:00Z",
"updated_at": "2025-01-01T00:00:00Z"
}
],
"groups": [
{
"name": "local",
"color": "#50fa7b",
"connections": [1, 2]
}
],
"favorites": [
{
"connection_id": 1,
"connection": "Standalone",
"key": "app:config",
"label": "App Settings",
"added_at": "2025-01-15T10:30:00Z"
}
],
"recent_keys": [
{
"connection_id": 1,
"key": "session:abc123",
"type": "hash",
"accessed_at": "2025-01-20T14:00:00Z"
}
],
"templates": [
{
"name": "Session",
"description": "User session data",
"key_pattern": "session:{user_id}",
"type": "hash",
"default_ttl": 86400000000000,
"fields": {
"token": "",
"created_at": "",
"user_agent": ""
}
},
{
"name": "Cache",
"description": "Cached data with TTL",
"key_pattern": "cache:{resource}:{id}",
"type": "string",
"default_ttl": 3600000000000
},
{
"name": "Rate Limit",
"description": "Rate limiting counter",
"key_pattern": "ratelimit:{ip}:{endpoint}",
"type": "string",
"default_ttl": 60000000000,
"default_value": "0"
},
{
"name": "Queue",
"description": "Job queue",
"key_pattern": "queue:{name}",
"type": "list"
},
{
"name": "Leaderboard",
"description": "Sorted leaderboard",
"key_pattern": "leaderboard:{game}",
"type": "zset"
}
],
"tree_separator": ":",
"max_recent_keys": 20,
"max_value_history": 50,
"watch_interval_ms": 1000
}Note: Passwords and SSH passphrases are never saved to the config file. They are stripped before serialization for security. The config file is written with
0600permissions (owner read/write only).
TTL format:
default_ttlvalues in templates use Go'stime.Durationnanosecond encoding: 1s =1000000000, 1m =60000000000, 1h =3600000000000.
| Option | Description |
|---|---|
name |
Display name for the connection |
host |
Redis server hostname or IP |
port |
Redis server port (default: 6379) |
password |
Redis password (never saved to disk) |
db |
Redis database number (0-15) |
username |
Redis ACL username (optional) |
group |
Connection group name (optional) |
color |
Display color for the connection (optional) |
use_tls |
Enable TLS/SSL connection |
tls_config.cert_file |
Client certificate file path |
tls_config.key_file |
Client key file path |
tls_config.ca_file |
CA certificate file path |
tls_config.insecure_skip_verify |
Skip TLS certificate verification |
tls_config.server_name |
TLS server name for verification |
use_ssh |
Enable SSH tunneling |
ssh_config.host |
SSH server hostname |
ssh_config.port |
SSH server port |
ssh_config.user |
SSH username |
ssh_config.password |
SSH password (never saved to disk) |
ssh_config.private_key_path |
Path to SSH private key file |
ssh_config.passphrase |
Passphrase for encrypted private key (never saved to disk) |
use_cluster |
Enable Redis cluster mode |
- Go 1.26 or later (for building from source or
go install) - A terminal that supports 256 colors
- Redis server 4.0 or later
- macOS (Intel and Apple Silicon)
- Linux (amd64, arm64)
- Windows (amd64)
# Install development dependencies
make dev-deps
# Run the application
make run
# Run tests
make test
# Run tests with coverage
make test-cover
# Run linter
make lint
# Format code
make fmt
# Build the application
make build
# Build for all platforms
make build-all
# Clean build artifacts
make clean
# Create a release with goreleaser
make release
# Create a snapshot release (no publish)
make snapshotMIT License - see LICENSE for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Run tests before committing:
go test -v -race ./... - Commit your changes using conventional commits (
feat:,fix:,refactor:, etc.) - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- All tests must pass with the race detector:
go test -v -race ./... - Run
make lintandmake fmt - Never suppress errors in tests — every error return must be checked
- Config changes must include persistence round-trip tests (add data, reload from disk, assert fields survived)
- See CLAUDE.md for code conventions, architecture, and guardrails
- Bubble Tea - TUI framework
- Lip Gloss - Styling library
- Bubbles - TUI components
- go-redis - Redis client
- miniredis - In-memory Redis used in tests
- chroma - Syntax highlighting for JSON values
redis, redis-cli, redis-client, redis-tui, redis-gui, redis-manager, terminal, tui, cli, go, golang, database, key-value, cache, devops, sysadmin


