kvcache-ai / kvcache-ai/Mooncake

[Call For Contributions] Mooncake Conductor Roadmap

Open
#2,189 9 comments 3 reactions 2 assignees Claimed by @yejj710 View on GitHub
Dominant language
C++
Stars
6.6k
Forks
1.2k
Avg merge
3d 5h
Merged PRs (30d)
312

Description

## Background

The Mooncake Conductor Indexer is a service for tracking and reporting token cache-hit statistics across cache tiers and model instances. It exposes APIs that allow clients to query hit statistics by token IDs or chunked token hashes, helping inference systems make better cache-aware scheduling decisions.

The current Conductor implementation has not yet been merged into the `main` branch. Before merging it, we should clarify the roadmap and improve the overall extensibility of the project. The goal is to evolve the existing HTTP RESTful service into a reusable, multi-language Conductor control plane: the core implementation remains in Go, the interface layer supports Go, Rust, and Python SDKs, and the existing HTTP service remains available as a compatibility layer.

## Phase 0: Baseline and Compatibility

- [ ] **smoke tests**: Add end-to-end test cases that validate the basic Conductor service flow. @guozhihao-224
- [ ] **Add performance benchmarks**: Provide scripts to measure key Conductor service metrics, such as QPS, latency, and memory usage. @guozhihao-224

## Phase 1: Go Core Library Refactor

- [ ] **Extract an importable Go library**: Move the non-startup business logic from `main.go` and the core logic from `kvevent.EventManager` into reusable packages.
- [ ] **Restructure Go packages**: Move the binary entry point to `cmd/mooncake_conductor` and place the core functionality under `pkg/conductor`.
- [ ] **Define the public Go API**: Expose stable methods such as `Start`, `Stop`, `Register`, `Unregister`, and `Query`.
- [ ] **Separate interface adapters from core logic**: Decouple HTTP handlers, ZMQ subscriptions, and configuration loading from the core service, so every entry point calls the same service layer.

## Phase 2: Interface Layer Decoupling

- [ ] **Introduce a gRPC/Proto contract**: Add strongly typed proto definitions that standardize the register, unregister, and query operations.
- [ ] **Generate multi-language clients**: Provide gRPC-based SDKs for Go, Rust, and Python. Rust and Python clients should call Conductor through RPC instead of depending on Go internal packages.

## Phase 3: Correctness and RAS

- [ ] **Route all operations through the core service interface**: Ensure register, unregister, and query operations all use the shared service interface to reduce duplicated REST-layer business logic.
- [ ] **Expand concurrency-safety coverage**: Test subscription lifecycle management, tenant instance maps, prefix cache table updates, and concurrent queries.
- [ ] **Improve high availability**: Make Conductor service data highly available and avoid service disruption caused by single points of failure.

## Phase 4: Integrate More Frameworks

- [ ] **Integrate vLLM Ascend**: Support ascend-store-connector backends such as Mooncake and Yuanrong. @yangsonglin13
- [ ] **Integrate SGLang HiCache**: Support SGLang HiCache as a KV event publisher.
- [ ] **Integrate Mooncake Store**: Support a KV event publisher in Mooncake Store. @Asher-XunZhang

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.