Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
e7be729
Bump golang.org/x/net in /mooncake-common/k8s-lease (#2742)
dependabot[bot] Jul 4, 2026
1fe59e6
[TE] Add TPU (PJRT) staging support to TENT (#2733)
Liwink Jul 4, 2026
8567ab0
[Store] Make batch_query_keys read-only and return all replica types …
smartssw Jul 4, 2026
f704fb8
[Doc] Add agent guidance (#2712)
Aionw Jul 4, 2026
275e84c
[TransferEngine] Prefer private-range IPv4 GIDs over link-local IPv6 …
n-WN Jul 5, 2026
65edc67
[TE] Downgrade unrecognized mem addr log from ERROR to INFO (#2734)
ascend-direct-dev Jul 5, 2026
bb1b084
[Store] Enable hugepage mmap in allocate_buffer_numa_segments (#2417)
mikegguo Jul 5, 2026
f66d16d
[TENT] Fix data race on local SegmentDesc via copy-on-write snapshots…
n-WN Jul 5, 2026
bd8cc9f
[Store] rust: format mooncake store bindings (#2737)
Aionw Jul 5, 2026
4febcca
[TE] Fix MNNVL staging path reading capabilities from RDMA transport …
staryxchen Jul 6, 2026
712f472
[Store] add etcd tenant quota connector (#2687)
Lin-z-w Jul 6, 2026
023cb88
[Store] Fix ConfigDict global segment size validation (#2661)
bitborne Jul 6, 2026
3adc3aa
[Store] Refactor store buffer headers and slice splitting (#2732)
Aionw Jul 6, 2026
d4a1f39
[TENT] SelectionPolicy: per-policy SL/TC/qp_pool schema (RFC #2568 st…
catyans Jul 6, 2026
29b22aa
[Store] feat: allow configuring client tenant id (#2755)
Lin-z-w Jul 6, 2026
118382f
[TE] Fix cross-GPU NVLink/MNNVL event-stream device mismatch (#2722) …
xiangui33423 Jul 6, 2026
af29ca7
[TE] Route cross-host targets over rdma automatically in rdma+hip mul…
Lzy17 Jul 6, 2026
d4cfe3c
Bump golang.org/x/net (#2730)
dependabot[bot] Jul 6, 2026
f1f5e40
[CI/Build] Add dedicated tent-ci job with CUDA/CPU matrix (#2720)
staryxchen Jul 6, 2026
a407c52
[Doc] Update README with LightX2V deployment details (#2767)
stmatengss Jul 6, 2026
7c03cc9
[Store] Add BatchEvict candidate-selection benchmark (#2584)
jacklin78911-collab Jul 7, 2026
dd4f40d
docs: clarify local SSD offload configuration (#2728)
feichai0017 Jul 7, 2026
cf635de
[Wheel] Validate MooncakeConfig fields with fail-fast errors (#2456)
SuperMarioYL Jul 7, 2026
8ceac27
[Store] Externalize S3 client config via environment variables (#2649)
mzygQAQ Jul 7, 2026
a3585aa
[TENT] Per-pool QP allocation with per-pool SL/TC (RFC #2568 step 2) …
catyans Jul 7, 2026
fbf32ca
[TENT] Make RDMA NIC allow/deny list configurable via MC_FILTER_NIC(_…
catyans Jul 7, 2026
f9aef2e
[CI] Extract reusable wheel build/publish workflows (#2723)
mgoin Jul 7, 2026
2e21a45
[Store] Support local_buffer_size in mooncake_client (#2740) (#2739)
NUABO Jul 7, 2026
84b2d91
[TENT] Opt-in earliest-deadline-first dispatch in admission queue (RF…
catyans Jul 7, 2026
0d7f0a0
[Bench] Enable replay speedup and multi-threading in SSD Benchmarking…
alogfans Jul 8, 2026
09c32f9
[TENT] Deadline-infeasible drop + degradation hook (RFC #2519 step 3)…
catyans Jul 8, 2026
454c349
[Store] Fix S3 list objects pagination (#2778)
feichai0017 Jul 8, 2026
83ff47f
[Store] feat: add optional RFC #1527 KV events publisher on master (#…
stmatengss Jul 8, 2026
713edc5
[TENT] RailMonitor: prefer same-name device for cross-NUMA rail mappi…
catyans Jul 8, 2026
e07774f
[Build] Bump golang.org/x/net in /mooncake-p2p-store/src/p2pstore (#2…
dependabot[bot] Jul 8, 2026
f1c762a
[Store] fix: reject empty keys in HTTP metadata server (#2770)
VectorPeak Jul 8, 2026
df84a55
[wip] docs: add vLLM V1 MooncakeStore KV cache sharing benchmark (#2773)
LujhCoconut Jul 8, 2026
c989668
[Build] Bump golang.org/x/crypto (#2789)
dependabot[bot] Jul 8, 2026
866ed32
[Store] Fix --host parameter to support ip:port format for TransferEn…
NUABO Jul 9, 2026
da11646
[TENT] Opt-in per-entry priority promotion (#2528) (#2788)
catyans Jul 10, 2026
6273d18
[TENT] Expose Request.deadline_ns and policy_name to Python bindings …
catyans Jul 10, 2026
130b959
[Bugfix][TENT] Fix silent TPU data corruption for transfers larger th…
Liwink Jul 10, 2026
3d0748c
[Doc] Reorganize performance docs (#2824)
ykwd Jul 10, 2026
0b4a12c
[Bugfix] Skip os.chmod when binary is already readable and executable…
Csrayz Jul 10, 2026
8dee809
[CI/Build] Fix compile warnings (#2825)
Aionw Jul 10, 2026
98ff4e4
[Store] Refactor: Extract snapshot orchestration into MasterSnapshotM…
xiangui33423 Jul 10, 2026
d409ed8
[TENT] Add IntentType enum to Request for Transfer Intent API (#2810)
catyans Jul 10, 2026
4188e3a
[TENT] admission queue: deadline proximity promotion for dispatch (#2…
catyans Jul 10, 2026
6894c2d
[TransferEngine] Add show-link diagnostic tool for NIC topology (#2820)
catyans Jul 11, 2026
29b4946
[TransferEngine] Add graceful shutdown for SIGTERM/SIGINT (#2812)
catyans Jul 12, 2026
721ec57
[TransferEngine] Validate batch memory registrations (#2854)
feichai0017 Jul 12, 2026
2dfa138
[TE] Make ThreadLocalStorage per-instance and reclaim per-thread hold…
n-WN Jul 12, 2026
5507b5c
[EP] Cap active RoCE QPs for IBGDA kernels (#2544)
UNIDY2002 Jul 13, 2026
4293dce
[EP] add DeepEP V2 elastic buffer (#2503)
UNIDY2002 Jul 13, 2026
7192ff4
[TE] Add host control fallback for IBGDA QP setup (#2867)
UNIDY2002 Jul 13, 2026
60e6d33
feat: LOCAL_DISK drain migration via Move flow (Option A)
liangxu2000 Jul 16, 2026
3f0bb08
[Store] Complete LOCAL_DISK drain: gate LD metadata removal on drain …
liangxu2000 Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 184 additions & 0 deletions .github/workflows/_build-wheel.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
name: _build-wheel

# Shared build for one wheel variant (matrixed over Python version), used by the
# Release and Pre-Release workflows so both build identically.

on:
workflow_call:
inputs:
runner:
type: string
required: true
container:
# x86 builds run in manylinux2_28 so the wheel's libstdc++/glibc floor
# stays low enough to import on RHEL/Rocky/Alma 8+. '' = bare runner.
type: string
default: ''
python-versions:
type: string
default: '["3.10", "3.11", "3.12", "3.13"]'
cuda:
# none | container | sbsa-12.8 | sbsa-13.0
type: string
default: none
cmake-args:
# Space-separated -D flags. No semicolons; use ep-torch-versions for those.
type: string
required: true
cmake-generator:
type: string
default: ''
ep-torch-versions:
type: string
default: ''
build-with-ep:
type: string
default: '0'
variant-flag:
# build_wheel.sh variant set to 1, e.g. CU13_BUILD, NON_CUDA_BUILD
type: string
default: ''
torch-cuda-arch-list:
type: string
default: ''
build-nvlink-allocator:
type: boolean
default: false
artifact-prefix:
type: string
required: true

env:
SCCACHE_GHA_ENABLED: "true"

jobs:
build:
runs-on: ${{ inputs.runner }}
container: ${{ inputs.container }}
permissions:
contents: read
strategy:
matrix:
python-version: ${{ fromJSON(inputs.python-versions) }}
env:
BUILD_WITH_EP: ${{ inputs.build-with-ep }}
TORCH_CUDA_ARCH_LIST: ${{ inputs.torch-cuda-arch-list }}
CMAKE_ARGS: ${{ inputs.cmake-args }}
CMAKE_GEN: ${{ inputs.cmake-generator }}
EP_TORCH_VERSIONS_INPUT: ${{ inputs.ep-torch-versions }}
VARIANT_FLAG: ${{ inputs.variant-flag }}
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Mark workspace safe for git (container runs as root)
if: ${{ inputs.container != '' }}
run: git config --global --add safe.directory '*'

- name: Set version from tag
run: echo "VERSION=${GITHUB_REF_NAME#v}" >> "$GITHUB_ENV"

- name: Select Python ${{ matrix.python-version }} from manylinux image
if: ${{ inputs.container != '' }}
run: |
PYV_NODOT=$(echo "${{ matrix.python-version }}" | tr -d '.')
PYBIN="/opt/python/cp${PYV_NODOT}-cp${PYV_NODOT}/bin"
echo "$PYBIN" >> "$GITHUB_PATH"
"$PYBIN/pip" install --quiet "cmake<4" setuptools wheel

- name: Set up Python ${{ matrix.python-version }}
if: ${{ inputs.container == '' }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Free up disk space
if: ${{ inputs.container == '' }}
run: |
sudo rm -rf /usr/share/dotnet /opt/ghc /opt/hostedtoolcache/CodeQL /usr/local/lib/android
df -h

- name: Install CUDA Toolkit (arm64 SBSA)
if: ${{ startsWith(inputs.cuda, 'sbsa-') }}
run: |
ver="${{ inputs.cuda }}"; ver="${ver#sbsa-}"
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/sbsa/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get install -y "cuda-toolkit-${ver/./-}"
echo "/usr/local/cuda/bin" >> "$GITHUB_PATH"
/usr/local/cuda/bin/nvcc --version

- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.9

- name: Configure sccache
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');

- name: Configure project
run: |
SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo"
if [ -n "$SUDO" ] && command -v apt-get >/dev/null 2>&1; then
$SUDO apt-get update -y || true
fi
$SUDO bash -x dependencies.sh -y
echo "/usr/local/go/bin" >> "$GITHUB_PATH"
gen=(); [ -n "$CMAKE_GEN" ] && gen=(-G "$CMAKE_GEN")
ep=(); [ -n "$EP_TORCH_VERSIONS_INPUT" ] && ep=(-DEP_TORCH_VERSIONS="$EP_TORCH_VERSIONS_INPUT")
mkdir -p build && cd build
# shellcheck disable=SC2086
cmake "${gen[@]}" .. $CMAKE_ARGS "${ep[@]}" -DPython3_EXECUTABLE="$(which python3)"

- name: Build project
run: |
for dir in /usr/local/cuda/lib64/stubs /usr/local/cuda/targets/*/lib/stubs; do
[ -d "$dir" ] && export LIBRARY_PATH="$dir:${LIBRARY_PATH:-}"
done
[ -d /usr/local/cuda ] && export CUDA_HOME=/usr/local/cuda
SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo -E"
cd build
cmake --build . -j"$(nproc)"
$SUDO cmake --install .

- name: Build nvlink_allocator.so
if: ${{ inputs.build-nvlink-allocator }}
run: |
export PATH=/usr/local/nvidia/bin:/usr/local/nvidia/lib64:$PATH
if [ -d /usr/local/cuda/lib64/stubs ]; then
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/stubs:${LD_LIBRARY_PATH:-}
export LIBRARY_PATH=/usr/local/cuda/lib64/stubs:${LIBRARY_PATH:-}
fi
mkdir -p build/mooncake-transfer-engine/nvlink-allocator
cd mooncake-transfer-engine/nvlink-allocator
bash build.sh ../../build/mooncake-transfer-engine/nvlink-allocator/

- name: Run sccache stat for check
if: ${{ env.SCCACHE_PATH != '' }}
run: ${SCCACHE_PATH} --show-stats

- name: Generate Python version tag
id: pytag
run: echo "tag=$(echo ${{ matrix.python-version }} | tr -d '.')" >> "$GITHUB_OUTPUT"

- name: Build Python wheel
run: |
[ -d /usr/local/cuda ] && export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}:/usr/local/lib"
variant=()
[ -n "$VARIANT_FLAG" ] && variant=("$VARIANT_FLAG=1")
env "${variant[@]}" \
PYTHON_VERSION="${{ matrix.python-version }}" \
OUTPUT_DIR="dist-py${{ steps.pytag.outputs.tag }}" \
./scripts/build_wheel.sh
env:
VERSION: ${{ env.VERSION }}

- name: Upload Python wheel artifact
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact-prefix }}-py${{ steps.pytag.outputs.tag }}
path: mooncake-wheel/dist-py${{ steps.pytag.outputs.tag }}/*.whl
49 changes: 49 additions & 0 deletions .github/workflows/_publish-wheel.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: _publish-wheel

# Shared publish tail: collect this run's wheels, attach to the GitHub Release,
# and upload to PyPI. Used by the Release workflows.

on:
workflow_call:
inputs:
artifact-pattern:
type: string
required: true
secrets:
pypi-token:
required: false

jobs:
publish:
runs-on: ubuntu-22.04
permissions:
contents: write
id-token: write
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Download all wheel artifacts
uses: actions/download-artifact@v4
with:
path: mooncake-wheel/dist-all
pattern: ${{ inputs.artifact-pattern }}

- name: Prepare wheels for release
run: |
mkdir -p mooncake-wheel/dist-release
find mooncake-wheel/dist-all -name "*.whl" -exec cp {} mooncake-wheel/dist-release/ \;
echo "Collected wheels for release:"
ls -la mooncake-wheel/dist-release/

- name: Upload wheels to GitHub Release
uses: softprops/action-gh-release@v1
with:
files: mooncake-wheel/dist-release/*.whl

- name: Publish package to PyPI
if: ${{ github.repository == 'kvcache-ai/Mooncake' }}
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: mooncake-wheel/dist-release/
password: ${{ secrets.pypi-token }}
Loading
Loading