An interactive, fast, and lightweight Terminal User Interface (TUI) for exploring and managing your Redis databases. Built with Go and the Bubble Tea framework, it replaces repetitive CLI commands with an intuitive, keyboard-driven UI.
- Interactive Database Explorer: Browse through thousands of keys with SCAN-based pagination.
- Type-to-Filter: Press
/to narrow the command menu, the key list, or a field/member list down as you type — no need to scroll through hundreds of keys. - TTL at a Glance: Keys with an expiry show a countdown badge (
4m,17s, …) right in the key list, no need to open them first. - Context-Aware Drilling: Navigate into Hash fields, Lists, Sets, and Sorted Sets with full CRUD support.
- Guided CRUD Wizard:
HSET,HGET,SADD,ZADD,RPUSH, andLPUSHlet you pick an existing key of the matching type (or create a new one) and add to it through a focused form — no need to remember exact key names. - Auto-Detected JSON: String values that look like JSON are pretty-printed and syntax-highlighted; the value/
INFOinspector scrolls for large output. - TTL Management: Set, clear, or inspect key expiry. TTL is preserved when editing a value in-place.
- Export / Import: Dump individual keys (pick from a list, with a pre-filled destination) or entire databases to portable JSON files using Redis
DUMP/RESTORE. Export or import a single hash field / list / set / sorted-set member to self-describing JSON straight from the field browser. File prompts supportTabpath completion. - TLS / SSL: Connect to secured Redis instances (managed Redis services, Redis Cloud, AWS ElastiCache, Upstash) with full mTLS support.
- Redis 6+ ACL Auth: Authenticate with a username and password in addition to the legacy password-only form.
- Reconnection with Backoff: Automatically reconnects after a dropped connection using exponential backoff (200 ms → 25.6 s cap).
- Lightweight & Fast: Custom RESP protocol parser with minimal dependencies.
- Cross-Platform: Works on Linux, macOS, and Windows.
| redis-tui | redis-cli | RedisInsight | |
|---|---|---|---|
| Terminal-native | ✓ | ✓ | ✗ |
| No install / single binary | ✓ | ✗ | ✗ |
| Full CRUD for all data types | ✓ | ✓ | ✓ |
| Export / Import (JSON) | ✓ | ✗ | ✓ |
| TLS / mTLS | ✓ | ✓ | ✓ |
| Keyboard-driven navigation | ✓ | ✗ | ✗ |
Redis TUI works out of the box on macOS and Windows.
On Linux, the clipboard copy feature (c key) requires one of the following:
| Display Server | Package | Install |
|---|---|---|
| X11 | xclip or xsel |
sudo apt install xclip |
| Wayland | wl-clipboard |
sudo apt install wl-clipboard |
All other features work on Linux without additional dependencies.
Install the latest release to ~/.local/bin (or /usr/local/bin if ~/.local/bin is not writable):
curl -fsSL https://raw.githubusercontent.com/ajxv/redis-tui/main/install.sh | shInstall a specific version:
curl -fsSL https://raw.githubusercontent.com/ajxv/redis-tui/main/install.sh | sh -s -- --version v1.0.0-betaSystem-wide install:
curl -fsSL https://raw.githubusercontent.com/ajxv/redis-tui/main/install.sh | sudo sh -s -- --to /usr/local/binRequired tools:
curlorwgettar- Optional checksum verification:
sha256sumorshasum
go install github.com/ajxv/redis-tui/cmd/redis-tui@latestDownload the latest binary for your OS from the Releases page. Extract and place the redis-tui binary in your PATH.
redis-tuiThe -url flag accepts a standard Redis connection string and overrides all individual connection flags:
# Plain TCP
redis-tui -url "redis://localhost:6379/0"
# With password
redis-tui -url "redis://:mysecret@localhost:6379"
# Redis 6+ ACL username + password
redis-tui -url "redis://alice:mysecret@localhost:6379/2"
# TLS (rediss:// implies -tls)
redis-tui -url "rediss://user:pass@my-redis.example.com:6380/0"redis-tui -host "127.0.0.1:6379" -password "mysecret" -db 0| Flag | Description | Default |
|---|---|---|
-url |
Redis URL: redis://[:pass@]host[:port][/db] or rediss://… |
— |
-host |
Redis server address host:port |
localhost:6379 |
-password |
Redis password | $REDIS_PASSWORD env var |
-username |
Redis ACL username (Redis 6+) | — |
-db |
Redis database index | 0 |
-dial-timeout |
TCP connection timeout | 5s |
-read-timeout |
Per-command read deadline | 10s |
-tls |
Enable TLS/SSL | false |
-tls-skip-verify |
Skip TLS certificate verification (insecure) | false |
-tls-cert |
Path to client certificate (PEM) | — |
-tls-key |
Path to client private key (PEM) | — |
-tls-ca |
Path to CA certificate (PEM) | — |
Tip: Store your password in the environment to keep it out of the process list:
export REDIS_PASSWORD="mysecret"
redis-tui -host "127.0.0.1:6379"# Connect to a TLS-secured Redis, trust the system CA store
redis-tui -host "my-redis.example.com:6380" -tls
# Skip certificate verification (useful for self-signed certs in dev)
redis-tui -host "localhost:6380" -tls -tls-skip-verify
# mTLS with a custom CA and client certificate
redis-tui -host "my-redis.example.com:6380" \
-tls \
-tls-ca /etc/ssl/redis-ca.pem \
-tls-cert /etc/ssl/redis-client.pem \
-tls-key /etc/ssl/redis-client-key.pem
# Redis 6+ ACL user via URL (TLS implied by rediss://)
redis-tui -url "rediss://alice:secret@my-redis.example.com:6380/0"Note:
-tls-certand-tls-keymust always be provided together.
| Key | Action |
|---|---|
↑ / ↓ |
Navigate lists |
k / j |
Navigate lists (Explore key/field lists only — on the main menu, letters open the filter instead) |
Enter |
Select an item or submit a form |
Esc |
Go back, or clear an active filter first if one is set |
Ctrl+C |
Quit |
| Key | Action |
|---|---|
Enter |
Run the selected command |
/ or any letter |
Filter commands (type to narrow) |
Esc |
Clear the filter; no-op otherwise |
q |
Quit |
| Key | Action |
|---|---|
Enter |
Open selected key |
/ |
Filter the key list (type to narrow) |
d |
Delete key (with confirmation) |
r |
Rename key |
n |
Load next page of keys |
Ctrl+R / F5 |
Refresh current view |
| Key | Action |
|---|---|
↑ / ↓, PgUp / PgDn, Home / End |
Scroll long output |
e |
Edit value in-place (TTL is preserved; not available for set/sorted-set members) |
c |
Copy value to clipboard |
x |
Set or clear TTL (enter 0 to persist) |
Esc |
Return to previous screen |
| Key | Action |
|---|---|
Enter |
View selected field or member |
/ |
Filter the field/member list (type to narrow) |
a |
Add a field / member |
d |
Delete field or member (with confirmation) |
x |
Export selected field / member to JSON |
i |
Import a field / member from JSON |
Ctrl+R / F5 |
Refresh |
- Large collections: Lists, Sets, and Sorted Sets load in pages of 100 items — press
nto load the next page. - Offset-based list/zset paging: If items are added or removed mid-browse, reopen the key (
Ctrl+R) for a consistent view. - Redis Streams:
XADD/XREADare not yet supported.
# Clone
git clone https://github.com/ajxv/redis-tui.git
cd redis-tui
# Build
make build
# Run
make run
# Run all tests
make test
# Format
make fmt
# Lint (requires golangci-lint)
make lint-optional.
├── cmd/redis-tui/ # Entry point and CLI flags
├── internal/
│ ├── redis/ # RESP protocol parser
│ └── tui/ # Bubble Tea model, state machine, TLS, URL parser, export/import
├── docs/ # Release process, maintainer guides, and the VHS tape (demo.tape) behind the README GIF
└── tests/
├── redis/ # Black-box tests for the RESP parser
└── tui/ # Black-box integration tests for the state machine
See CONTRIBUTING.md for development setup, test conventions, and the PR workflow.
This project is licensed under the MIT License.
