{"id":34704091,"url":"https://github.com/getstream/tikv-ui","last_synced_at":"2025-12-24T23:00:43.544Z","repository":{"id":328384671,"uuid":"1111351652","full_name":"GetStream/tikv-ui","owner":"GetStream","description":"TiKV Admin Web UI: A full-stack web application and REST API for the powerful exploration and management of TiKV clusters. It provides a dedicated frontend interface for multi-cluster configuration and raw key-value data manipulation","archived":false,"fork":false,"pushed_at":"2025-12-22T10:54:52.000Z","size":231,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-22T20:45:23.607Z","etag":null,"topics":["admin","api","db","distributed-transactions","docker","fullstack","gui","key-value","mangement","raft","rocksdb","tikv"],"latest_commit_sha":null,"homepage":"https://getstream.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GetStream.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-06T19:06:24.000Z","updated_at":"2025-12-22T10:54:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/GetStream/tikv-ui","commit_stats":null,"previous_names":["getstream/tikv-ui"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/GetStream/tikv-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Ftikv-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Ftikv-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Ftikv-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Ftikv-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GetStream","download_url":"https://codeload.github.com/GetStream/tikv-ui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Ftikv-ui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28012084,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","api","db","distributed-transactions","docker","fullstack","gui","key-value","mangement","raft","rocksdb","tikv"],"created_at":"2025-12-24T23:00:32.435Z","updated_at":"2025-12-24T23:00:43.534Z","avatar_url":"https://github.com/GetStream.png","language":"TypeScript","funding_links":["https://github.com/sponsors/GetStream"],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"1408\" height=\"587\" alt=\"cover\" src=\"https://github.com/user-attachments/assets/1eeb1776-637f-4abe-98f1-6834b290601f\" /\u003e\n\n#\n\n![Stream](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/HayesGordon/e7f3c4587859c17f3e593fd3ff5b13f4/raw/11d9d9385c9f34374ede25f6471dc743b977a914/badge.json)\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/GetStream/tikv-ui)\n![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)\n![GitHub contributors](https://img.shields.io/github/contributors/GetStream/tikv-ui)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/GetStream)](https://github.com/sponsors/GetStream)\n\n\n## 🌟 Overview\n\n**TiKV Admin Web UI is a full-stack web application and REST API for the powerful, intuitive management of TiKV clusters.**\n\nTired of juggling command-line tools? This project provides a dedicated, graphical frontend interface for exploring your data, managing cluster connections, and performing raw key-value manipulation with ease.\n\n## ✨ Key Features\n\nThis application is built to be the essential administrative tool for your TiKV deployment:\n\n- **🌐 Multi-Cluster Management:** Dynamically connect to and switch between multiple TiKV clusters without restarting the server. Perfect for managing development, staging, and production environments.\n- **🔎 Data Explorer:** Perform powerful **Raw KV Operations** directly through the UI: Get, Put, Delete, and Range Scans.\n- **🧠 Smart Value Parsing:** Automatically detects and parses complex value formats, including **MsgPack** and **JSON**, providing you with structured, readable data alongside the raw string value.\n- **💻 Dedicated Web Frontend:** A modern interface built with TypeScript, offering a smooth and efficient way to interact with your key-value store.\n- **🔌 Comprehensive REST API:** An easy-to-use API backend allows for integration into custom monitoring or automation workflows.\n\n\n\n## 🚀 Getting Started\n\nThe TiKV Admin Web UI is built with Go for the backend API and a modern web stack for the frontend.\n\nThe easiest way to run the TiKV Admin Web UI is by using the pre-built Docker image.\n\n### Option 1: Docker Compose (Recommended)\n\nUse the official image in your `docker-compose.yml` file. This example assumes you have TiKV PD nodes named `pd0`, `pd1`, etc., running in the same network.\n\n```yaml\nversion: \"3.7\"\nservices:\n  # ... your TiKV cluster services (pd0, tikv0, etc.) ...\n\n  tikv-ui:\n    image: ghcr.io/getstream/tikv-ui:latest\n    container_name: tikv-admin-ui\n    environment:\n      # **IMPORTANT:** Set TIKV_PD_ADDRS to the addresses of your PD nodes\n      TIKV_PD_ADDRS: \"pd0:2379,pd1:2379\"\n    # Use depends_on to ensure PD nodes are up before the UI starts\n    depends_on:\n      - \"pd0\"\n      - \"pd1\"\n      - \"pd2\" # Adjust this list to match your cluster\n    ports:\n      - \"8081:8081\"\n```\n\n### Option 2: Run Directly from Source\n\nIf you prefer to run the application directly, you will need Go installed.\n\n### Prerequisites\n\n- Go (v1.18+)\n- A running TiKV cluster with access to its PD addresses.\n\n### 🔨 Building the Application\n\nClone the repository and build the Go executable:\n\n```bash\ngit clone https://github.com/GetStream/tikv-ui.git\ncd tikv-ui\ngo build -o bin/tikv-ui ./cmd/tikv-ui\n```\n\n## 🏃 Running the app\n\nSet the `TIKV_PD_ADDRS` environment variable with comma-separated PD addresses for your default cluster, then run the executable.\nthe format for `TIKV_PD_ADDRS` is {host}{,other hosts}{|cluster name}{;other clusters}\n\ne.g.\n\n```bash\nexport TIKV_PD_ADDRS=\"127.0.0.1:2379|default;pd-us-west-1.aws.com:2379|My US WEST cluster\"\n```\n\nat least one host is required, other params are optional\n\n```bash\n# if you want to run on a specific port, just export the port variable, e.g. export PORT=8082\n# Set your TiKV PD addresses (required)\nexport TIKV_PD_ADDRS=\"127.0.0.1:2379\"\n\n# Run the server\n./bin/tikv-ui\n\n# or run development server\nmake dev\n\n# or separate backend\nmake backend\n\n# or just the frontend\nmake frontend\n```\n\nThe server will start on port 8081. You can then access the Web UI in your browser:\n\n🔗 http://localhost:8081\n\n## ⚙️ REST API Endpoints\n\nThe server exposes a set of endpoints for cluster management and raw data operations. All operations are performed against the currently active cluster.\n\n### Health Check\n\n| Method | Endpoint | Description                     |\n| ------ | -------- | ------------------------------- |\n| GET    | /health  | Check the server health status. |\n\n### Cluster Management\n\n| Method | Endpoint              | Description                                | Body Example                                        |\n| ------ | --------------------- | ------------------------------------------ | --------------------------------------------------- |\n| POST   | /api/clusters/connect | Connect to a new TiKV cluster.             | `{\"pd_addrs\": [\"host:port\"], \"name\": \"production\"}` |\n| GET    | /api/clusters         | List all connected clusters.               | N/A                                                 |\n| POST   | /api/clusters/switch  | Set an existing cluster as the active one. | `{\"name\": \"production\"}`                            |\n\n### Raw KV Operations (Active Cluster)\n\n| Method | Endpoint        | Description                            | Body Example                                       |\n| ------ | --------------- | -------------------------------------- | -------------------------------------------------- |\n| POST   | /api/raw/get    | Retrieve the value for a specific key. | `{\"key\": \"mykey\"}`                                 |\n| POST   | /api/raw/put    | Insert or update a key-value pair.     | `{\"key\": \"mykey\", \"value\": \"myvalue\"}`             |\n| POST   | /api/raw/delete | Delete a key-value pair.               | `{\"key\": \"mykey\"}`                                 |\n| POST   | /api/raw/scan   | Scan a range of keys.                  | `{\"start_key\": \"a\", \"end_key\": \"z\", \"limit\": 100}` |\n\n### Metrics\n\n| Method | Endpoint | Description                            |\n| ------ | -------- | -------------------------------------- |\n| GET    | /metrics | PD and TiKV metrics from the instances |\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! If you're interested in making the TiKV Admin Web UI even better:\n\n- Report bugs and suggest features.\n- Submit pull requests.\n- Join the discussion.\n\n## We are hiring!\n\nWe recently closed a [$38 million Series B funding round](https://techcrunch.com/2021/03/04/stream-raises-38m-as-its-chat-and-activity-feed-apis-power-communications-for-1b-users/) and are actively growing.\nOur APIs are used by more than a billion end-users, and by working at Stream, you have the chance to make a huge impact on a team of very strong engineers.\n\nCheck out our current openings and apply via [Stream's website](https://getstream.io/team/#jobs).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetstream%2Ftikv-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetstream%2Ftikv-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetstream%2Ftikv-ui/lists"}