Mooncake/mooncake-integration/ollama/docs/figures/architecture.dot

37 lines
1.9 KiB
Plaintext

// Architecture of the Ollama x Mooncake KV-cache bus.
// Render: dot -Tpng architecture.dot -o ../docs/figures/architecture.png
digraph mooncake_ollama {
rankdir=LR;
bgcolor="white";
node [fontname="Helvetica", fontsize=11, shape=box, style="rounded,filled", color="#333333"];
edge [fontname="Helvetica", fontsize=9, color="#555555"];
graph [fontname="Helvetica", labelloc=t, fontsize=14,
label="Ollama x Mooncake: global KV-cache reuse for local agent swarms"];
agents [label="Agent swarm\n(coding agents / patched Ollama)", fillcolor="#eef3fb"];
subgraph cluster_bridge {
label="ollama-mooncake-bridge (Go sidecar)";
style="rounded,filled"; fillcolor="#f4f0fb"; color="#7a5fb8"; fontcolor="#4b3b78";
key [label="cache key\n(GGUF + chained block hash)", fillcolor="#ffffff"];
radix [label="radix index\n(cross-process KV prefixes)", fillcolor="#ffffff"];
arbiter [label="cost arbiter\n(restore vs recompute)", fillcolor="#ffffff"];
orch [label="orchestrator\nLookup / Prepare / Commit", fillcolor="#ffffff"];
}
llama [label="llama.cpp server\n(KV in GPU, per slot)\nStage 1: /slots save|restore\nStage 2: cgo _ext ON_DEVICE", fillcolor="#eafaf0"];
proxy [label="mooncake-store-proxy (Python)\n1 warm MooncakeDistributedStore\nstriped batch_put_from / get_into\npre-registered RDMA staging", fillcolor="#fdf3e8"];
store [label="Mooncake Store + Transfer Engine\nDRAM pool, replicas\nRDMA / GPUDirect", fillcolor="#fbeef0"];
agents -> orch [label="HTTP / gRPC"];
orch -> key [style=dashed, arrowhead=none];
orch -> radix [style=dashed, arrowhead=none];
orch -> arbiter [style=dashed, arrowhead=none];
orch -> llama [label="restore / save KV slot"];
orch -> proxy [label="gRPC (file paths)"];
proxy -> store [label="put / get KV blobs", color="#b0413e", penwidth=2];
llama -> store [label="GPUDirect RDMA (Stage 2)", style=dashed, color="#1a7d32"];
}