Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
6f24bad
[hipFile] Create a hipFile shim layer compatible with cufile-python
riley-dixon Apr 21, 2026
15f8afe
[Docs] Update hipFile repo URL
riley-dixon Apr 21, 2026
26acb0e
[requirements] Add hipfile to rocm_core requirements.
riley-dixon Apr 23, 2026
cf1eaf3
[hipFile/CI] Add explicit requirements install step for ROCm dependen…
riley-dixon May 1, 2026
d74c43a
[hipFile] Add missing typing information.
riley-dixon May 4, 2026
3a460f5
Merge branch 'dev' into riley-dixon/hipfile-shim-layer
ApostaC May 5, 2026
d8c3ec3
Merge branch 'dev' of github.com:riley-dixon/LMCache into riley-dixon…
riley-dixon May 5, 2026
bb6a8dc
[hipFile/CI] Revert adding hipFile as a hard dependency
riley-dixon May 5, 2026
b741629
[hipFile] Sort imports
riley-dixon May 6, 2026
fdc7c1b
Merge branch 'dev' of github.com:riley-dixon/LMCache into riley-dixon…
riley-dixon May 6, 2026
92fe433
Merge branch 'dev' of github.com:riley-dixon/LMCache into riley-dixon…
riley-dixon May 14, 2026
63ba539
[CLI] Fix slim install imports and smoke-test wheel in CI (#3279)
deng451e May 14, 2026
80813a1
[CI] swap default to cu13 wheels and cu12.9 secondary (#3275)
deng451e May 14, 2026
8cfac66
Revert "[CLI][CB] propagate CLI kvcache clear to CB fingerprint tabe"…
deng451e May 14, 2026
168bbb9
fix: use unique device_id per OBJ register/deregister cycle (#2989)
jgoldsch12 May 14, 2026
478a53c
fix(hpu): implement device-specific initialize_kvcaches_ptr for HPU c…
hlin99 May 15, 2026
f02ad53
[CORE] Add nixl_endpoint_list for per-worker object-storage endpoint …
jgoldsch12 May 15, 2026
a7934b7
[CI] allow PyTorch/NVIDIA egress endpoints in release workflows (#3295)
deng451e May 15, 2026
3090e89
Add sycl implementation of memory_kernels for Intel XPU (#2902)
ftian1 May 15, 2026
9117259
[CD] switch all workflows to egress audit mode (#3297)
deng451e May 15, 2026
86f3c75
[Operator][CI] Date-based nightly tag and release-driven flow (#3293)
royyhuang May 15, 2026
359f27f
[CD] add sm_120 to cu129 wheel build (#3299)
deng451e May 15, 2026
d63f68d
[Test] Operator end-to-end smoke suite (#3289)
royyhuang May 15, 2026
8466743
add Chinese translation pipeline (#3265)
glbyktjys May 16, 2026
d37cfa1
[CI] pin vLLM CUDA wheel variant (#3298)
deng451e May 16, 2026
4658d69
Defer test_cache runtime imports so lmcache-cli loads without torch (…
hlin99 May 17, 2026
b4a2d7e
[Doc] Fix a typo in p2p_init_ports parameter (#2282)
ikasas May 18, 2026
516b498
feat: add StubCPUDevice to allow import/startup fallback in CPU-only …
hlin99 May 18, 2026
c9cfa3a
Fix typos and misspellings across codebase (#3306)
yoo-kumaneko May 18, 2026
55bcefd
nixl_storage: naive support for files + dynamic (#2936)
yanok May 18, 2026
ec40e74
[CI] DCO sign-off commits from sync_torch_version workflow (#3311)
deng451e May 18, 2026
2e36e1e
docs: daily drift check — multi-process mode (2026-05-15) (#3296)
ApostaC May 18, 2026
aa1abd4
[CI] skip LMCache main release pipeline for operator-v* release tags …
deng451e May 18, 2026
a60ae02
[CI] add signoff for doc translation workflow (#3315)
glbyktjys May 18, 2026
4d2d4f3
[MP] Add extra_config to construct lmcache mp adapter (#3026)
maobaolong May 19, 2026
f9ce8cb
[MP] Lazy import cupy for gpu_cache_context (#3308)
maobaolong May 19, 2026
9e38f1d
Update Chinese documentation translations (#3310)
github-actions[bot] May 19, 2026
10ad9e4
chore: add hlin99 to CODEOWNERS (#3316)
hlin99 May 19, 2026
d74bcfc
Add yoo-kumaneko as CODEOWNER for mp_observability and tools (#3324)
yoo-kumaneko May 19, 2026
272115e
[MP][Observability] Refactor metric names and units (#3290)
Shaoting-Feng May 19, 2026
8ece5f0
Fix the translation icon together with the screen layout adjustment (…
glbyktjys May 19, 2026
5b71110
docs: daily drift check — multi-process mode (2026-05-18) (#3309)
ApostaC May 20, 2026
46c9b5b
Unconditionally compile common c++ extensions in setup.py (#3302)
hlin99 May 20, 2026
9a2fd94
[MP][bench] add l2 adapter benchmark cli (#3243)
chunxiaozheng May 20, 2026
2ba249d
[optimize] rename non_cuda_equivalents to python_ops_fallback (#3338)
chunxiaozheng May 20, 2026
2ce4f5f
Refactor: abstract discover_subclasses util method (#3237)
maobaolong May 20, 2026
fc91bfa
[CI] fix incorrect version tagging (#3314)
deng451e May 20, 2026
259c0b3
feat(mp): Non-GPU Context by pickle (#3259)
hlin99 May 20, 2026
65bf93f
Update Chinese documentation translations (#3335)
github-actions[bot] May 20, 2026
eaa2bfe
[CI] Restore NO_CUDA_EXT=1 skip-all-extensions semantics (#3349)
deng451e May 20, 2026
50209ec
[CI] Rename NO_CUDA_EXT → NO_NATIVE_EXT (keep legacy alias) (#3354)
deng451e May 21, 2026
639df83
fix(docker): install CLI requirements in standalone image so `lmcache…
abinggo May 21, 2026
d9f3438
[CI][Build] CPU-only build (NO_GPU_EXT=1) + CI (#3357)
deng451e May 21, 2026
3300d0d
[Observability]: Add L2 Usage to SM (#3320)
sammshen May 22, 2026
9f06a63
Add macos ci check (#3148)
maobaolong May 22, 2026
4168b09
Hotfix: remove macos-13 from ci workflow as resource insufficient (#3…
maobaolong May 22, 2026
9793d8b
[Integration] LMCache MP mode warn log while cannot reach lmcache ser…
maobaolong May 23, 2026
8407994
[CI][Hotfix] fix the pytest lazy import issue caused by vLLM torch dy…
ApostaC May 25, 2026
f342726
docs: add docstrings to public helpers in lmcache/utils.py (#3380)
zhengchenyu May 25, 2026
59beadb
cleanup: remove duplicate import time in blend_server_v2 (#3379)
ynachiket May 25, 2026
50e4543
[MP][Bugfix] Fix store/retrieve deadlock by routing completion callba…
elliotz-ai May 26, 2026
a0574af
[BugFix] fix sha256_cbor + async_loading type mismatch in _hash_token…
GentleCold May 26, 2026
a534b92
[MP] Update the L2 adapter interface to force measuring the real tran…
ApostaC May 26, 2026
aa56b7d
[refactor] refactor bench engine cli (#3341)
chunxiaozheng May 26, 2026
c276b33
[Doc] Add recipes for Mistral, Phi & Llama (#3270)
yeoshuheng May 26, 2026
4fb0371
[Perf] Replace Condvar polling with eventfd + epoll in iouring worke…
zhengfeihe May 26, 2026
3e83d5c
nixl_storage: Fix tests and remove from ignore list (#3200)
guy-ealey-morag May 26, 2026
a68bd0a
Iyanok/huge pages (#2643)
yanok May 26, 2026
bda3af1
[MP][Core] Refactor MPCacheEngine for better extendability (#3391)
ApostaC May 26, 2026
3dd3668
fix: support HND formats in MP KV transfer (#3282)
he-yufeng May 26, 2026
1966340
[Fix][Observability] PrometheusLogger instance already created with d…
cr7258 May 26, 2026
ec4dbe1
docs: daily drift check — multi-process mode (2026-05-21) (#3361)
ApostaC May 26, 2026
4bdcb5c
[Fix] Change pinned pointer allocations in non-CUDA equivalents to be…
zhengfeihe May 26, 2026
79d3685
Merge branch 'dev' into riley-dixon/hipfile-shim-layer
ApostaC May 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
25 changes: 9 additions & 16 deletions .buildkite/k3_harness/setup-blend-env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -53,26 +53,17 @@ TEST_VENV_BIN="/workspace/.venv/bin"
# When flashinfer and flashinfer-cubin resolve to different patch versions, skip strict check.
export FLASHINFER_DISABLE_VERSION_CHECK=1

# vLLM: pinned to a known-good cu129 nightly wheel as a temporary workaround.
# Background: vLLM's PyPI stable is now built against CUDA 13 (libcudart.so.13)
# which this CUDA-12 container can't load. The cu129 nightly channel auto-rolls
# on every upstream commit and resolver-based installs have proven fragile
# during the cu12/cu13 split (unsafe-best-match picks PyPI stable; first-index
# with a version cap backtracked all the way to vllm 0.2.5). Pinning a wheel
# URL bypasses resolution for vLLM; transitive deps still resolve from PyPI +
# PyTorch cu129.
# TODO: bump the URL when this pinned build goes stale, or revert to dynamic
# selection once the cu12/cu13 transition settles.
VLLM_WHEEL_URL="https://wheels.vllm.ai/8189a15914ca48461acf106f126c58ef7e41c9ee/vllm-0.20.2rc1.dev112%2Bg8189a1591.cu129-cp38-abi3-manylinux_2_34_x86_64.whl"
echo "--- :python: Installing vLLM (pinned wheel: ${VLLM_WHEEL_URL})"
# vLLM: force cu12.9 variant; PyPI default is cu13 (libcudart.so.13), unloadable in this cu12 container.
echo "--- :python: Installing vLLM (nightly cu129)"

# --index-strategy unsafe-best-match is needed so uv considers PyPI for vLLM's
# transitive deps (setuptools>=77 specifically — the PyTorch cu129 index only
# carries setuptools<=70.2.0, and uv's default first-index would refuse to
# look at PyPI for it). Safe here because vLLM itself is pinned by URL, so
# resolver strategy can't influence which vLLM gets installed.
"${UV_BIN}" pip install -p "${TEST_VENV_BIN}/python" -U "${VLLM_WHEEL_URL}" \
--extra-index-url "https://download.pytorch.org/whl/cu129" \
# look at PyPI for it). VLLM_PRECOMPILED_WHEEL_VARIANT pins the vLLM CUDA
# variant, so the resolver strategy can't pull a mismatched build.
VLLM_PRECOMPILED_WHEEL_VARIANT=cu129 "${UV_BIN}" pip install -p "${TEST_VENV_BIN}/python" -U vllm --pre \
--extra-index-url https://wheels.vllm.ai/nightly/cu129 \
--extra-index-url https://download.pytorch.org/whl/cu129 \
--index-strategy unsafe-best-match


Expand Down Expand Up @@ -103,6 +94,8 @@ echo "--- :python: Installing LMCache from source"
# Skip setuptools_scm git describe; the repo carries non-PEP-440 tags
# (nightly, nightly-cu13) that crash the newer vcs_versioning backend.
export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_LMCACHE="${SETUPTOOLS_SCM_PRETEND_VERSION_FOR_LMCACHE:-0.0.0+ci}"
# Select cu12 nixl wheel
export LMCACHE_CUDA_MAJOR=12
"${UV_BIN}" pip install -p "${DEFAULT_VENV_BIN}/python" -e . --no-build-isolation
"${UV_BIN}" pip install -p "${TEST_VENV_BIN}/python" -e . --no-build-isolation
# Work around openai_harmony vocab download/load issues for GPT-OSS (vLLM recipes troubleshooting).
Expand Down
24 changes: 12 additions & 12 deletions .buildkite/k3_tests/multiprocess/scripts/run-long-doc-qa-l2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -388,14 +388,14 @@ def get_counter(name):
return 0.0

# L1 metrics
l1_write_keys = get_counter('lmcache_mp_l1_write_keys_total')
l1_write_keys = get_counter('lmcache_mp_l1_write_chunks_total')

# L2 metrics
store_keys = get_counter('lmcache_mp_l2_store_keys_total')
store_succeeded = get_counter('lmcache_mp_l2_store_succeeded_keys_total')
prefetch_lookups = get_counter('lmcache_mp_l2_prefetch_lookups_total')
prefetch_hits = get_counter('lmcache_mp_l2_prefetch_hit_keys_total')
prefetch_loaded = get_counter('lmcache_mp_l2_prefetch_loaded_keys_total')
store_keys = get_counter('lmcache_mp_l2_store_submitted_objects_chunks_total')
store_succeeded = get_counter('lmcache_mp_l2_store_completed_objects_chunks_total')
prefetch_lookups = get_counter('lmcache_mp_l2_prefetch_lookup_requests_total')
prefetch_hits = get_counter('lmcache_mp_l2_prefetch_hit_chunks_total')
prefetch_loaded = get_counter('lmcache_mp_l2_prefetch_load_completed_chunks_total')

print('=' * 60)
print('Data Flow Metrics')
Expand Down Expand Up @@ -518,8 +518,8 @@ def has_label(base_name: str, label: str) -> bool:
# (kind, metric_name, optional_label_to_assert_present_or_None)
checks = [
# ── Newer counters (with label dimensions) ─────────────────────
("counter", "lmcache_mp_l2_store_completed_total", "l2_name"),
("counter", "lmcache_mp_l2_load_completed_total", "l2_name"),
("counter", "lmcache_mp_l2_store_completed_requests_total", "l2_name"),
("counter", "lmcache_mp_l2_load_completed_requests_total", "l2_name"),
("counter", "lmcache_mp_lookup_requested_tokens_total", "model_name"),
("counter", "lmcache_mp_lookup_hit_tokens_total", "model_name"),
("counter", "lmcache_mp_num_chunks_loaded_total", "worker_id"),
Expand All @@ -528,10 +528,10 @@ checks = [
# ``unit="GB/s"`` actually reports as
# ``<name>_GB_per_second_count`` / ``..._sum`` / ``..._bucket``.
# Match by base name and let the helper tolerate the unit suffix.
("hist", "lmcache_mp_l0_l1_store_throughput_gbs", None),
("hist", "lmcache_mp_l0_l1_load_throughput_gbs", None),
("hist", "lmcache_mp_l2_store_throughput_gbs", "l2_name"),
("hist", "lmcache_mp_l2_load_throughput_gbs", "l2_name"),
("hist", "lmcache_mp_l0_l1_store_throughput", None),
("hist", "lmcache_mp_l0_l1_load_throughput", None),
("hist", "lmcache_mp_l2_store_throughput", "l2_name"),
("hist", "lmcache_mp_l2_load_throughput", "l2_name"),
]

failed = False
Expand Down
12 changes: 6 additions & 6 deletions .buildkite/k3_tests/multiprocess/scripts/run-restart-recovery.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#
# Flow:
# 1. Run a `lmcache bench engine --workload random-prefill` round.
# 2. Snapshot lmcache_mp_l1_write_keys_total via /metrics.
# 2. Snapshot lmcache_mp_l1_write_chunks_total via /metrics.
# 3. Kill the LMCache server, relaunch on the same port.
# 4. Wait for the new server to be ready and for the worker to
# re-register (poll /status until gpu_context_meta is non-empty).
Expand Down Expand Up @@ -97,7 +97,7 @@ run_bench_round() {
}

scrape_l1_write_keys() {
# Print the latest lmcache_mp_l1_write_keys_total value (single sample,
# Print the latest lmcache_mp_l1_write_chunks_total value (single sample,
# unlabeled) from the LMCache HTTP server's /metrics endpoint.
python3 - <<EOF
import sys, urllib.request
Expand All @@ -111,7 +111,7 @@ total = None
for line in body.splitlines():
if line.startswith("#"):
continue
if not line.startswith("lmcache_mp_l1_write_keys_total"):
if not line.startswith("lmcache_mp_l1_write_chunks_total"):
continue
parts = line.rsplit(" ", 1)
if len(parts) != 2:
Expand All @@ -122,7 +122,7 @@ for line in body.splitlines():
continue
total = (total or 0.0) + val
if total is None:
print(f"ERROR: lmcache_mp_l1_write_keys_total not found at {url}", file=sys.stderr)
print(f"ERROR: lmcache_mp_l1_write_chunks_total not found at {url}", file=sys.stderr)
sys.exit(1)
print(int(total))
EOF
Expand Down Expand Up @@ -211,7 +211,7 @@ ROUND1_WRITES=$(scrape_l1_write_keys) || {
echo "FAIL: could not scrape /metrics after round 1"
exit 1
}
echo "Round 1 lmcache_mp_l1_write_keys_total = $ROUND1_WRITES"
echo "Round 1 lmcache_mp_l1_write_chunks_total = $ROUND1_WRITES"

if [ "$ROUND1_WRITES" -le 0 ]; then
echo "FAIL: round 1 produced no L1 writes; benchmark setup is broken"
Expand Down Expand Up @@ -257,7 +257,7 @@ ROUND2_WRITES=$(scrape_l1_write_keys) || {
echo "FAIL: could not scrape /metrics after round 2"
exit 1
}
echo "Round 2 lmcache_mp_l1_write_keys_total = $ROUND2_WRITES"
echo "Round 2 lmcache_mp_l1_write_chunks_total = $ROUND2_WRITES"

# ── Step 4: Compare metrics ──────────────────────────────────
echo ""
Expand Down
1 change: 0 additions & 1 deletion .buildkite/k3_tests/unit/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ pytest --maxfail=1 --cov=lmcache \
--cov-report term --cov-report=html:coverage-test \
--cov-report=xml:coverage-test.xml --html=durations/test.html \
--ignore=tests/disagg --ignore=tests/v1/test_pos_kernels.py \
--ignore=tests/v1/test_nixl_storage.py \
--ignore=tests/skipped \
--ignore=tests/v1/storage_backend/test_eic.py

Expand Down
28 changes: 28 additions & 0 deletions .buildkite/operator/integration/pipeline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
steps:
- label: "Detect operator changes"
key: "operator_detect_changes"
command: |
set -eu

BASE_REF="origin/dev"

if ! git fetch --quiet origin dev 2>/dev/null; then
echo "WARN: could not fetch $$BASE_REF; running tests defensively."
buildkite-agent pipeline upload .buildkite/operator/integration/tests.yaml
exit 0
fi

if ! CHANGED=$(git diff --name-only "$$BASE_REF...HEAD" -- operator/ .buildkite/operator/ 2>/dev/null); then
echo "WARN: git diff failed; running tests defensively."
buildkite-agent pipeline upload .buildkite/operator/integration/tests.yaml
exit 0
fi

if [ -z "$$CHANGED" ]; then
echo "No operator or operator-pipeline changes vs $$BASE_REF; skipping integration tests."
exit 0
fi

echo "Operator changes detected:"
echo "$$CHANGED"
buildkite-agent pipeline upload .buildkite/operator/integration/tests.yaml
30 changes: 30 additions & 0 deletions .buildkite/operator/integration/tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
env:
GPU_KIND_CLUSTER: "operator-test-e2e-gpu-${BUILDKITE_BUILD_NUMBER}"

steps:
- label: "Operator Integration: test-e2e-gpu-kind"
key: "operator_test_e2e_gpu_kind"
timeout_in_minutes: 90
command: |
echo $$PWD # for debugging

cd operator
make test-e2e-gpu-kind

- label: "Cleanup Kind cluster"
key: "operator_cleanup_kind"
depends_on: "operator_test_e2e_gpu_kind"
allow_dependency_failure: true
timeout_in_minutes: 10
command: |
cd operator
make cleanup-test-e2e-gpu-kind

- label: "Cleanup workspace"
depends_on: "operator_cleanup_kind"
allow_dependency_failure: true
command: |
export TARGET="$$PWD"
echo "Deleting current workspace $$TARGET"
cd /
rm -rf "$$TARGET" || true
3 changes: 2 additions & 1 deletion .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ steps:
export CXX=hipcc
export BUILD_WITH_HIP=1
uv pip install torch torchvision --index-url https://download.pytorch.org/whl/rocm7.0
uv pip install -r requirements/rocm_core.txt
fi

uv pip install -r requirements/common.txt
Expand All @@ -37,8 +38,8 @@ steps:
--cov-report term --cov-report=html:coverage-test \
--cov-report=xml:coverage-test.xml --html=durations/test.html \
--ignore=tests/disagg --ignore=tests/v1/test_pos_kernels.py \
--ignore=tests/v1/test_nixl_storage.py \
--ignore=tests/v1/test_nixl_batched_contains.py \
--ignore=tests/v1/test_device_id_race.py \
--ignore=tests/skipped \
--ignore=tests/v1/storage_backend/test_eic.py

Expand Down
36 changes: 21 additions & 15 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,24 @@
/lmcache/v1/memory_management.py @sammshen @deng451e @chunxiaozheng @DongDongJu @ApostaC

# Multiprocess
/lmcache/v1/multiprocess/ @ApostaC @OasisGit
/lmcache/v1/multiprocess/ @ApostaC @OasisGit @hlin99
/lmcache/v1/multiprocess/protocols/observability.py @royyhuang @ApostaC
/lmcache/v1/multiprocess/http_server.py @royyhuang @ApostaC @OasisGit
/lmcache/v1/mp_observability @royyhuang @ApostaC @OasisGit @sammshen
/lmcache/v1/mp_observability/ @yoo-kumaneko @royyhuang @ApostaC @OasisGit @sammshen

# Distributed / L2
/lmcache/v1/distributed/ @ApostaC @maobaolong @chunxiaozheng
/lmcache/v1/distributed/eviction.py @YaoJiayi
/lmcache/v1/distributed/eviction_policy/ @YaoJiayi
/lmcache/v1/distributed/storage_controllers/eviction_controller.py @YaoJiayi
/lmcache/v1/distributed/eviction.py @YaoJiayi @hlin99
/lmcache/v1/distributed/eviction_policy/ @YaoJiayi @hlin99
/lmcache/v1/distributed/storage_controllers/eviction_controller.py @YaoJiayi @hlin99
/lmcache/v1/distributed/l2_adapters/mooncake_store_l2_adapter.py @maobaolong
/lmcache/v1/distributed/l2_adapters/resp_l2_adapter.py @sammshen

# GPU connector
/lmcache/v1/gpu_connector/ @sammshen @ApostaC
/lmcache/v1/gpu_connector/ @sammshen @ApostaC @hlin99

# Platform
/lmcache/v1/platform/ @maobaolong @hlin99

# Lookup client
/lmcache/v1/lookup_client/ @maobaolong @YaoJiayi @sammshen
Expand All @@ -41,13 +44,13 @@
/lmcache/v1/storage_backend/connector/fs_adapter.py @maobaolong @chunxiaozheng
/lmcache/v1/storage_backend/connector/audit_connector.py @maobaolong @chunxiaozheng
/lmcache/v1/storage_backend/connector/audit_adapter.py @maobaolong @chunxiaozheng
/lmcache/v1/storage_backend/connector/redis_connector.py @sammshen
/lmcache/v1/storage_backend/connector/redis_adapter.py @sammshen
/lmcache/v1/storage_backend/connector/lm_connector.py @sammshen
/lmcache/v1/storage_backend/connector/lm_adapter.py @sammshen
/lmcache/v1/storage_backend/connector/redis_connector.py @sammshen @hlin99
/lmcache/v1/storage_backend/connector/redis_adapter.py @sammshen @hlin99
/lmcache/v1/storage_backend/connector/lm_connector.py @sammshen @hlin99
/lmcache/v1/storage_backend/connector/lm_adapter.py @sammshen @hlin99

# Integration
/lmcache/integration/vllm/ @sammshen @maobaolong @YaoJiayi @deng451e
/lmcache/integration/vllm/ @sammshen @maobaolong @YaoJiayi @deng451e @hlin99
/lmcache/integration/sglang/ @OasisGit @DongDongJu @sammshen
/lmcache/integration/tensorrt_llm/ @sammshen

Expand All @@ -56,12 +59,15 @@

# C extensions
/csrc/ @ApostaC @YaoJiayi @sammshen
/csrc/storage_backends/ @sammshen
/csrc/storage_backends/ @sammshen @hlin99

# Native connector L2 adapters
/lmcache/v1/distributed/l2_adapters/native_connector_l2_adapter.py @sammshen
/lmcache/v1/distributed/l2_adapters/native_plugin_l2_adapter.py @sammshen
/lmcache/v1/distributed/l2_adapters/fs_native_l2_adapter.py @sammshen
/lmcache/v1/distributed/l2_adapters/native_connector_l2_adapter.py @sammshen @hlin99
/lmcache/v1/distributed/l2_adapters/native_plugin_l2_adapter.py @sammshen @hlin99
/lmcache/v1/distributed/l2_adapters/fs_native_l2_adapter.py @sammshen @hlin99

# Offline analysis tools
/lmcache/tools/ @yoo-kumaneko

# Tests
/tests/ @hickeyma @sammshen @ApostaC @deng451e
Expand Down
Loading
Loading