mirror of
https://github.com/kvcache-ai/Mooncake.git
synced 2026-11-05 01:17:55 +00:00
[GH-ISSUE #3896] [build] macOS/Apple Silicon: TCP-only transfer engine path is blocked by unconditional infiniband/verbs.h include (and wheel setup.py hard-blocks darwin) #996
Labels
No labels
ascend
auto-closed
bug
bug
CI/Build
Common
documentation
enhancement
feature request
good first issue
help wanted
high priority
MetaX
nightly-failure
pull-request
PyTorch Backend
question
RFC
Roadmap
stale
Store
Tests
Transfer Engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/Mooncake#996
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @now-ing on GitHub (Sep 6, 2026).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/3896
Summary
Mooncake's TCP transport cannot even be compiled on macOS today, because
tcp_transport.hunconditionally includes the RDMA verbs header, and the wheelsetup.pyexplicitly exits on darwin. With PD-disaggregated serving now reaching Apple-Silicon clusters (e.g. vllm-metal's new experimental PD path: vllm-project/vllm-metal#709), a TCP-only Mooncake client on macOS would be a natural fit for Mac prefill/decode pools — but the build blocks it before any transport logic is reached.Evidence (main @ 2026-09-06)
mooncake-transfer-engine/include/transport/tcp_transport/tcp_transport.h:17-18:The TCP transport header includes
infiniband/verbs.hunconditionally — on macOS there is no libibverbs/rdma-core, so any TU that pulls this header fails immediately. Per the docs,protocol=tcpis a first-class DRAM↔DRAM path that shouldn't need verbs at all (https://kvcache-ai.github.io/Mooncake/getting_started/supported-protocols/).mooncake-wheel/setup.py:10-12:(Notably the same file already contains pre-written darwin arm64/x86_64 + macosx tag recognition helpers — the guard is the only thing standing in the way of at least experimental wheels.)
Additionally
mooncake-transfer-engine/include/transport/common.hincludes<numa.h>(Linux-only libnuma) unconditionally, anddependencies.shcovers only rpm/deb distros, so a TCP-only macOS build would need that include gated too.Environment
pip install mooncake-transfer-engine(no darwin wheel exists on PyPI — only manylinux x86_64/aarch64)Suggestion (happy to PR)
tcp_transport.hbehind#ifdef(or move verbs-dependent bits to an rdma-specific header) so the TCP transport compiles where only a plain socket stack exists.<numa.h>incommon.h(fallback stubs when__APPLE__).setup.pydarwin hard-exit into an explicit--allow-unsupported/ experimental wheel path, since the tag helpers are already written.If maintainers are open to it, I can start with (1) + (2) as a small PR targeting a TCP-only
USE_TCP=ON-style CMake option for non-Linux platforms. Context: we're wiring PD disaggregation across a pure Mac cluster (vllm-metal#709) and Mooncake's TCP backend is the obvious production-grade transfer layer to grow into.@github-actions[bot] commented on GitHub (Sep 6, 2026):
Thanks for opening this issue, @now-ing!
24534365A maintainer will triage this when possible. To help us respond faster, please include:
Useful links: Documentation · Contributing guide
@he-yufeng commented on GitHub (Sep 6, 2026):
Duplicate of #3894 (identical body, same submitter, same minute). Closing to keep one thread; please continue in #3894.