A modern, web-based Redis management interface built with Next.js and TypeScript. Connect, browse, and manage your Redis instances with ease.
- β¨ Features
 - π Quick Start
 - π Why KeyDeck?
 - πΈ Screenshots
 - π§ Usage
 - π― Supported Redis Commands
 - ποΈ Project Structure
 - π Environment Variables
 - π Deployment
 - π‘οΈ Security Features
 - π¨ Tech Stack
 - πΊοΈ Roadmap
 - π€ Contributing
 - π License
 - π§ Troubleshooting
 - β FAQ
 - π Support
 - π Acknowledgments
 
  | 
  | 
  | 
  | 
  | 
  | 
- Node.js 18+
 - Redis server (local or remote)
 - npm or pnpm
 
# Clone the repository
git clone <repository-url>
cd keydeck
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Or use Docker Compose
docker-compose upOpen http://localhost:3000 in your browser π
KeyDeck stands out from other Redis management tools with its unique focus on security, user experience, and modern architecture:
Unlike traditional Redis GUIs that store credentials in plain text or use basic encoding, KeyDeck implements military-grade AES-256-GCM encryption for all connection profiles. Your credentials are encrypted with a passphrase that never leaves your device.
No installation required. Access your Redis instances from any modern browser. Works on Windows, macOS, Linux, tablets, and even your phone.
Once you save your encrypted profiles, KeyDeck works completely offline. Your connection credentials are stored in IndexedDB, accessible without an internet connection.
Built with Next.js 15, React 19, and Tailwind CSS 4, KeyDeck features a gorgeous, responsive interface with dark mode support. Every interaction is smooth and intuitive.
The built-in Schema Advisor automatically discovers key naming patterns, analyzes data type distribution, and provides optimization recommendations - something most Redis tools lack.
- Real-time command autocomplete with intelligent suggestions
 - Stream viewer for Redis Streams (perfect for event-driven architectures)
 - Connection diagnostics to troubleshoot connection issues
 - Beautiful data visualization with interactive charts
 - Keyboard shortcuts for power users
 
- Zero telemetry or analytics
 - No external API calls (except to your Redis server)
 - All encryption happens in your browser
 - Your data never touches our servers
 
Click to view screenshots
Beautiful, modern interface with real-time metrics and performance monitoring.
Intuitive key browser with real-time search, type indicators, and TTL information.
Powerful console with command history, autocomplete, and syntax highlighting.
Securely save your Redis connections with AES-256-GCM encryption.
Intelligent schema analysis that discovers patterns and provides optimization recommendations.
Native support for Redis Streams with real-time updates.
Note: Replace placeholder text with actual screenshots of your application.
Enter your Redis connection details:
- Host: Your Redis server's public IP or domain name
 - Port: 
6379(default Redis port) - Password: Optional authentication
 - Database: 
0(default database) 
β οΈ Important: Deployed versions can only connect to remote Redis servers accessible from the internet. Local Redis connections are blocked by browser security policies.
Save your connections securely with encrypted profiles:
- Navigate to Settings β Encrypted Connection Profiles
 - Click Create Profile
 - Enter your Redis connection details
 - Set a strong passphrase (AES-256-GCM encryption)
 - Click Create & Save
 
Your profiles are encrypted and stored locally using IndexedDB. When you reload the app, enter your passphrase to unlock all saved connections.
Benefits:
- π AES-256-GCM encryption for credentials
 - πΎ Offline-capable - works without internet
 - π« Never sent to server - 100% client-side
 - π Passphrase-protected - only you can access
 
- Search keys with real-time filtering
 - Click any key to view and edit its value
 - See metadata like TTL, size, and type
 - Manage keys with copy/delete actions
 - View streams with the Stream Viewer
 
- Type Redis commands directly in the console
 - Use arrow keys to navigate command history
 - Get instant feedback with formatted responses
 - Access command reference for help
 
- Run Schema Advisor to discover key patterns
 - See usage statistics by pattern
 - Get recommendations for optimization
 - Estimate memory usage by pattern
 
- View real-time stats in the dashboard
 - Track memory usage and hit ratios
 - Analyze key distribution by type
 - Monitor connection health and latency
 
Click to expand supported commands
GET,SET,DEL,EXISTS,TYPE,TTL,EXPIRE
HGET,HSET,HGETALL,HDEL,HKEYS,HVALS
LPUSH,RPUSH,LPOP,RPOP,LLEN,LRANGE
SADD,SREM,SMEMBERS,SCARD,SISMEMBER
ZADD,ZREM,ZRANGE,ZCARD,ZSCORE
XADD,XREAD,XRANGE,XLEN,XINFO,XGROUP
PING,INFO,DBSIZE,KEYS,FLUSHDB,FLUSHALL,CONFIG
SELECT,CLIENT,AUTH,QUIT
keydeck/
βββ π app/                           # Next.js App Router
β   βββ π api/
β   β   βββ π redis/                # Redis API endpoints
β   β   β   βββ connect/            # Connection management
β   β   β   βββ diagnostics/        # Connection diagnostics
β   β   β   βββ execute/            # Command execution
β   β   β   βββ keys/               # Key operations
β   β   β   βββ schema-advisor/     # Schema analysis
β   β   β   βββ stats/              # Performance stats
β   β   β   βββ stream/             # Stream operations
β   β   βββ csrf/                   # CSRF protection
β   β   βββ security/               # Security endpoints
β   βββ π¨ globals.css              # Global styles
β   βββ π layout.tsx               # Root layout
β   βββ π page.tsx                 # Main application
βββ π components/                   # React components
β   βββ π ui/                      # shadcn/ui components
β   βββ π connection-config.tsx
β   βββ π encrypted-profiles-manager.tsx
β   βββ π dashboard-overview.tsx
β   βββ π key-browser.tsx
β   βββ ποΈ key-value-viewer.tsx
β   βββ π» redis-console.tsx
β   βββ 𧬠schema-advisor.tsx
β   βββ πΊ stream-viewer.tsx
β   βββ π‘οΈ security-settings.tsx
βββ π hooks/                       # Custom React hooks
β   βββ use-encrypted-profiles.ts
β   βββ use-schema-advisor.ts
β   βββ use-theme.ts
βββ π lib/                         # Utility functions
β   βββ π crypto.ts                # Encryption utilities
β   βββ π connection-encryption.ts # Profile encryption
β   βββ πΎ connection-profiles-storage.ts # IndexedDB storage
β   βββ π redis.ts                 # Redis client management
β   βββ π‘οΈ api-security.ts         # API security middleware
β   βββ π redis-commands.ts       # Command definitions
β   βββ π οΈ utils.ts                 # General utilities
βββ π public/                      # Static assets
β   βββ πΌοΈ logo-dark.svg
β   βββ πΌοΈ logo-white.svg
βββ π scripts/                     # Helper scripts
    βββ start-redis.sh
KeyDeck can be configured using environment variables:
| Variable | Description | Default | Required | 
|---|---|---|---|
NODE_ENV | 
Environment mode | development | 
No | 
ALLOWED_ORIGINS | 
Comma-separated list of allowed origins | localhost urls | Production | 
IS_WEB_DEPLOYMENT | 
Set to true for web deployments | 
false | 
No | 
REDIS_GUI_API_KEY | 
Optional API key for additional security | - | No | 
DISABLE_ORIGIN_CHECK | 
Disable origin checking (dev only) | false | 
No | 
SCHEMA_ADVISOR_MAX_KEYS | 
Max keys for schema analysis (production) | 50000 | 
No | 
SCHEMA_ADVISOR_MAX_KEYS_WEB | 
Max keys for schema analysis (web) | 10000 | 
No | 
SCHEMA_ADVISOR_MAX_KEYS_DEV | 
Max keys for schema analysis (dev) | 100000 | 
No | 
RATE_LIMIT_WINDOW_MS | 
Rate limit window in milliseconds | 900000 | 
No | 
RATE_LIMIT_MAX_REQUESTS | 
Max requests per window | 100 | 
No | 
.env.local (Development):
NODE_ENV=development.env.production (Production):
NODE_ENV=production
ALLOWED_ORIGINS=https://yourdomain.com,https://www.yourdomain.com
SCHEMA_ADVISOR_MAX_KEYS=50000
REDIS_GUI_API_KEY=your-secure-random-key.env (Web Deployment - Vercel/Netlify):
NODE_ENV=production
IS_WEB_DEPLOYMENT=true
ALLOWED_ORIGINS=https://yourapp.vercel.app
SCHEMA_ADVISOR_MAX_KEYS_WEB=10000Deploy to Vercel or Netlify with one click, then configure environment variables:
# Required: Add your production domain
ALLOWED_ORIGINS=https://yourdomain.com,https://www.yourdomain.com
# Deployment type (for web deployments)
IS_WEB_DEPLOYMENT=true
NODE_ENV=production
# Optional: Schema Advisor limits
SCHEMA_ADVISOR_MAX_KEYS_WEB=10000Important: After deployment, add your production domain to ALLOWED_ORIGINS to avoid CORS errors.
# Using Docker Compose
docker-compose up -d
# Or build manually
docker build -t keydeck .
docker run -p 3000:3000 \
  -e ALLOWED_ORIGINS=https://yourdomain.com \
  keydeckFor production deployments on your own infrastructure:
# Install dependencies
pnpm install
# Build the application
pnpm build
# Start the production server
pnpm startEnvironment Variables:
# Production configuration
NODE_ENV=production
ALLOWED_ORIGINS=https://yourdomain.com
# Optional: Custom schema limits
SCHEMA_ADVISOR_MAX_KEYS=50000
# Optional: API security
REDIS_GUI_API_KEY=your-secure-keyOption 1: Cloud Redis
- AWS ElastiCache, DigitalOcean, Redis Cloud, etc.
 - Ensure it's accessible from your deployment
 - Use encrypted connections (TLS/SSL)
 
Option 2: Self-Hosted Redis
# Using Docker
docker run -d \
  --name redis \
  -p 6379:6379 \
  redis:7-alpine redis-server --requirepass yourpassword
# Using the included script
./scripts/start-redis.shOption 3: Local Development
# Install Redis locally
brew install redis  # macOS
apt install redis   # Ubuntu
# Start Redis
redis-server- β Always use HTTPS in production
 - β
 Set 
ALLOWED_ORIGINSwith your domains - β Use strong Redis passwords
 - β Enable TLS/SSL for Redis connections
 - β Regularly update dependencies
 - β Review connection logs
 - β Use encrypted profiles for sensitive credentials
 
For detailed production setup instructions, see PRODUCTION_SETUP.md.
- π AES-256-GCM Encryption - Military-grade encryption for connection profiles
 - π PBKDF2 Key Derivation - 100,000 iterations with SHA-256
 - πΎ IndexedDB Storage - Secure, offline-capable local storage
 - π Passphrase Protection - Master passphrase never stored or transmitted
 - π« Zero Server Storage - All credentials encrypted client-side only
 
- π‘οΈ CSRF Protection - Built-in CSRF token validation
 - π Origin Verification - Strict origin checking for API requests
 - β±οΈ Rate Limiting - Configurable request rate limits
 - π Optional API Keys - Additional API key authentication layer
 - π Security Headers - Comprehensive security headers configured
 
- π TLS/SSL Support - Encrypted Redis connections supported
 - π Session Management - Automatic connection cleanup and timeout
 - π§Ή Memory Cleanup - Secure credential cleanup from memory
 - π Connection Masking - Sensitive connection details hidden in UI
 - π Connection Diagnostics - Built-in troubleshooting without exposing credentials
 
- All encryption happens in your browser
 - Credentials never transmitted to external servers
 - Passphrase required on every session
 - Encrypted profiles persist across browser sessions
 - Secure context (HTTPS or localhost) enforced
 
For more details on encrypted profiles, see README_ENCRYPTED_PROFILES.md.
- shadcn/ui - Beautiful, reusable UI components
 - Recharts - Interactive data visualization
 - Lucide React - Modern icon library
 - Web Crypto API - Client-side encryption
 - IndexedDB - Persistent local storage
 - Zod - TypeScript-first schema validation
 - React Hook Form - Performant form management
 - next-themes - Dark mode support
 - Sonner - Toast notifications
 
- Redis Cluster Support - Connect to Redis clusters
 - Pub/Sub Viewer - Monitor Redis pub/sub channels in real-time
 - Transaction Builder - Visual interface for Redis transactions
 - Export/Import - Export keys to JSON/CSV and import back
 - Bulk Operations - Advanced bulk key operations
 - Custom Commands - Save and organize frequently used commands
 - Multi-Connection - Manage multiple Redis connections simultaneously
 - Performance Profiling - Advanced performance analysis tools
 
- Redis Sentinel support
 - RedisJSON module support
 - RediSearch integration
 - Mobile apps (iOS/Android)
 - Collaborative features (team workspaces)
 - Command scheduling/automation
 - Backup and restore functionality
 
Have a feature request? Open an issue or start a discussion!
We welcome contributions! Here's how you can help:
- π΄ Fork the repository
 - π₯ Clone your fork: 
git clone https://github.com/your-username/keydeck.git - π¦ Install dependencies: 
pnpm install - πΏ Create a feature branch: 
git checkout -b feature/amazing-feature - π» Make your changes
 - β Test your changes thoroughly
 - πΎ Commit your changes: 
git commit -m 'Add amazing feature' - π€ Push to your fork: 
git push origin feature/amazing-feature - π Open a Pull Request
 
Code Style:
- Follow TypeScript best practices
 - Use Tailwind CSS for styling (avoid custom CSS)
 - Follow the existing component structure
 - Use meaningful variable and function names
 - Keep components small and focused
 
Commit Messages:
- Use clear, descriptive commit messages
 - Start with a verb (Add, Fix, Update, Remove, etc.)
 - Reference issue numbers when applicable
 
Testing:
- Test your changes in multiple browsers
 - Test with different Redis versions
 - Verify encrypted profiles still work
 - Check responsive design on mobile
 
Documentation:
- Update README if you add features
 - Add JSDoc comments for complex functions
 - Update type definitions as needed
 
- π Bug fixes
 - β¨ New features (see Roadmap)
 - π Documentation improvements
 - π Internationalization (i18n)
 - βΏ Accessibility improvements
 - π¨ UI/UX enhancements
 - π§ͺ Testing and test coverage
 
This project is licensed under the MIT License - see the LICENSE file for details.
- β Commercial use - Use KeyDeck in commercial projects
 - β Modification - Modify the source code
 - β Distribution - Distribute your own version
 - β Private use - Use privately without sharing
 β οΈ Liability - Software is provided "as is" without warranty- π License notice - Include the license and copyright notice
 
TL;DR: You can do almost anything with KeyDeck as long as you include the original license and copyright notice.
Possible causes:
- Redis server is not running
 - Incorrect host/port/password
 - Firewall blocking the connection
 - Redis not configured to accept external connections
 
Solutions:
- Check Redis is running: 
redis-cli ping - Verify connection details
 - Check Redis configuration: 
redis-cli CONFIG GET bind - Ensure Redis accepts connections from your IP
 - Use the built-in Connection Diagnostics tool
 
Solution:
Add your domain to ALLOWED_ORIGINS environment variable. See PRODUCTION_SETUP.md for details.
Possible causes:
- Using HTTP instead of HTTPS
 - Browser doesn't support Web Crypto API
 - Running in an insecure context
 
Solutions:
- Use HTTPS or localhost
 - Update to a modern browser
 - Check browser console for specific errors
 
Solutions:
- Double-check your passphrase spelling
 - Ensure Caps Lock is off
 - Try typing in a text editor first to verify
 
Solutions:
- Reduce 
SCHEMA_ADVISOR_MAX_KEYSlimit - Run during off-peak hours
 - Use the key pattern filter to analyze specific keys
 
Solutions:
- Close unused connections
 - Clear browser cache
 - Reduce the number of keys displayed
 - Use key pagination features
 
To help us troubleshoot your issue:
- Open browser Developer Tools (F12)
 - Go to Console tab
 - Reproduce the issue
 - Copy any error messages
 - Include in your GitHub issue
 
Yes! KeyDeck works with any Redis instance that's accessible over the network. Just provide the connection details (host, port, password).
Absolutely. All encryption happens in your browser using Web Crypto API. Your credentials never leave your device and are never sent to any server. We use AES-256-GCM encryption, which is military-grade security.
Unfortunately, if you forget your passphrase, your encrypted profiles cannot be recovered. This is by design - we have no way to decrypt your profiles without the passphrase. Consider backing up important connection details separately.
Yes! KeyDeck is production-ready. Make sure to:
- Set proper environment variables (see PRODUCTION_SETUP.md)
 - Use HTTPS in production
 - Configure 
ALLOWED_ORIGINScorrectly - Use strong Redis passwords
 
Currently, KeyDeck supports single Redis instances and standalone servers. Cluster support is planned for a future release.
No. Browser security policies (CORS) prevent deployed web applications from connecting to localhost. You have two options:
- Run KeyDeck locally to connect to local Redis
 - Deploy Redis to a remote server accessible from the internet
 
KeyDeck works in all modern browsers that support:
- Web Crypto API (for encryption)
 - IndexedDB (for local storage)
 - ES2020+ JavaScript features
 
Tested on: Chrome, Firefox, Safari, Edge (all latest versions)
KeyDeck is compatible with Redis 5.0+. Simply update your Redis server - KeyDeck will automatically work with the new version.
Yes! You can self-host KeyDeck on your own infrastructure. See the Deployment section for instructions.
Need help? Here's where to find it:
- π Documentation: This README, PRODUCTION_SETUP.md, and README_ENCRYPTED_PROFILES.md
 - π Bug Reports: GitHub Issues
 - π‘ Feature Requests: GitHub Discussions
 - π¬ Questions: Open a GitHub issue with the 
questionlabel 
When reporting bugs, please include:
- KeyDeck version (check package.json)
 - Redis version and configuration
 - Browser and version
 - Operating system
 - Error messages and stack traces
 - Steps to reproduce the issue
 - Screenshots (if applicable)
 
KeyDeck is built on the shoulders of giants. Special thanks to:
- Redis - The amazing in-memory data store
 - ioredis - Robust Redis client for Node.js
 - Next.js - The React framework that powers KeyDeck
 - shadcn/ui - Beautiful, accessible component library
 - Radix UI - Unstyled, accessible UI primitives
 - Tailwind CSS - Utility-first CSS framework
 - Vercel - Platform for modern web applications
 
And to all our contributors and users who make this project better every day! β€οΈ
Made with β€οΈ for the Redis community
β Star this repo β’ π Report Bug β’ π‘ Request Feature β’ π Documentation
If KeyDeck helps you manage Redis better, consider:
- β Starring the repository
 - π¦ Sharing on social media
 - π€ Contributing to the project
 - β Buy me a coffee
 
KeyDeck - Cache command simplified
Copyright Β© 2025 - Present