MacBook Pro + RTX 5090

The practical way to run one local model larger than either machine can hold alone.

June 14, 2026·Concise implementation brief
Use llama.cpp RPC over a private direct 10GbE link

Run llama-server on the Mac with Metal and expose the 5090 as a CUDA RPC worker. This logically combines their usable memory for one GGUF model. Treat it as a capacity upgrade, not a speed multiplier.

Answer

Physical memory
160 GB
128 GB unified + 32 GB VRAM
Practical budget
~140–150 GB
model + KV + runtime, workload-dependent
Best runtime
llama.cpp RPC
Metal + CUDA, standard GGUF

This is not transparent shared memory. llama.cpp places different layers and KV-cache allocations on each device, then moves activations over TCP. It can fit a model too large for 128 GB or 32 GB alone, but every generated token still waits on both machines.

!
Do not buy this expecting 5090 + Mac speeds

For models already fitting on one machine, single-box inference is often faster. A mixed Apple/NVIDIA benchmark over 10GbE saw decode slow down while capacity and prompt processing improved. No exact benchmark for this precise MacBook + 5090 pair was found.

Hardware

NeedRecommendationWhy
Mac networkThunderbolt-to-10GbE adapterOWC TB4 10G or Sonnet Solo10G; macOS-supported
Desktop network10GbE PCIe NICIntel X550-T1/T2 or a well-supported equivalent
CableCat 6A, direct between machinesNo switch required; simple, private, full duplex
Desktop OSNative Linux + NVIDIA driver/CUDA toolkitLowest-friction CUDA build and service management
Optional upgrade25GbE via SFP28Only after benchmarking; costs more and may not fix decode latency

Skip 1GbE and Wi‑Fi. Apple documents Thunderbolt IP for Mac-to-Mac; do not build this plan around a direct Thunderbolt Mac-to-PC link. 10GbE is the reliable cross-platform sweet spot.

Setup

  1. Wire a private link. Set the Mac to 192.168.50.1/24 and the Linux desktop to 192.168.50.2/24. Leave gateway and DNS blank on this interface. Confirm with ping, then measure with iperf3; target roughly 9+ Gbit/s.
  2. Build the same llama.cpp commit on both machines. RPC protocol mismatches can fail silently. Clone on both, record git rev-parse HEAD, and check out that exact SHA.
  3. Build/start the 5090 worker.
# RTX 5090 Linux desktop
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
  -DGGML_CUDA=ON -DGGML_RPC=ON
cmake --build build -j
./build/bin/rpc-server --host 192.168.50.2 --port 50052 \
  --device CUDA0 --cache
  1. Build the Mac client and inspect device names.
# MacBook Pro
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
  -DGGML_METAL=ON -DGGML_RPC=ON
cmake --build build -j
./build/bin/llama-cli --rpc 192.168.50.2:50052 --list-devices
  1. Serve a GGUF with layer splitting. Use the exact remote/local names printed above (normally RPC0 and Metal).
./build/bin/llama-server \
  --rpc 192.168.50.2:50052 \
  --device RPC0,Metal \
  --model /path/to/model.gguf \
  --n-gpu-layers all --split-mode layer \
  --ctx-size 32768 --host 127.0.0.1 --port 8080

Start with automatic memory-proportional placement. If needed, tune with --tensor-split 30,100 in device order, leaving several GB free on the 5090 and more headroom on macOS. Reduce context/parallel slots if KV cache pushes either device out of memory.

Expectations

Good for
Large quantized GGUFs that exceed either machine’s memory; private experimentation; single-user serving.
Not good for
Making models that already fit run faster; production reliability; exposing an endpoint to the internet.
Security
llama.cpp labels RPC proof-of-concept, fragile, and insecure. Bind it only to the private link and firewall port 50052 to the Mac.
Benchmark
Compare Mac-only, 5090-only, and combined with the same model, quant, context, batch, and prompt. Record prompt tok/s, generation tok/s, RAM/VRAM, and link throughput.

Alternatives: Cake is the most interesting experimental Metal/CUDA sharding project, but is less mature and uses selected safetensors models. Upstream exo currently accelerates Apple Silicon but runs Linux nodes on CPU, so it does not meaningfully use the 5090.

Sources