AVP Protocol Enables LLM Agents to Share KV-Cache Instead of Text for Token Efficiency

What AVP Does
AVP (Agent Vector Protocol) is a protocol that enables LLM agents in multi-agent setups to pass KV-cache directly between agents instead of text. This eliminates redundant tokenization and forward passes that occur when each agent re-processes the entire conversation history.
How It Works
Instead of the traditional text-based approach where each agent re-tokenizes everything, AVP allows Agent A to serialize its key-value attention states after reasoning, and Agent B injects them directly. This means:
- Same model on both sides: Direct KV-cache transfer with zero overhead
- Same family, different size (e.g., Qwen2.5-7B talking to 1.5B): Vocabulary-mediated projection with no learned parameters or calibration data needed
- Different families: Falls back to JSON
- Transport-agnostic: Works alongside A2A, MCP, gRPC, or whatever you're already using
- Binary wire format: Not JSON+Base64 (which has 33% overhead on tensor data)
Performance Results
Testing across Qwen2.5, Llama 3.2, and DeepSeek-R1-Distill models showed:
- Token savings of 73-78%
- 2-4x speedups
- These results held consistent across all three model families
- The gap widens with chain length: at 4 agents it's roughly 2x, at 16 agents (projected) it would be around 6x
The efficiency comes from text prompt sizes ballooning at each hop (186 → 545 → 1,073 → 1,397 tokens in a 4-agent GSM8K chain), while latent stays flat at ~164-207 tokens per hop because prior context arrives as pre-computed KV-cache.
Limitations
- Sample sizes are n=20 per model (enough for token/speed claims but not for accuracy claims)
- Tested on small models only (1.5B-3B on an RTX 3070 Ti) with 7B+ results pending
- Requires 1 Gbps+ bandwidth minimum (KV-cache for a 3B model runs about 130 MB per sample)
- Self-hosted only (requires KV-cache access, won't work with OpenAI/Anthropic/etc. APIs)
- Same model only for now (cross-model implementation exists but not benchmarked)
- Latent uses 17-54x more VRAM than text because you're holding KV-cache across hops
Getting Started
Install with: pip install avp
Two API levels available:
import avp
msg = avp.pack("Hello", model="Qwen/Qwen2.5-7B-Instruct", think_steps=20)
answer = avp.unpack(msg, model="Qwen/Qwen2.5-7B-Instruct")Or with more control:
from avp import HuggingFaceConnector
connector = HuggingFaceConnector.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct")
context = connector.think("Analyze this problem", steps=20)
answer = connector.generate("Solve it.", context=context)vLLM connector also available: pip install "avp[vllm]"
Project Links
- SDK: github.com/VectorArc/avp-python (MIT, 377 tests, 7 benchmarks)
- Spec: github.com/VectorArc/avp-spec
- Benchmark details: BENCHMARKS.md
📖 Read the full source: r/LocalLLaMA
👀 See Also

E2a: Open-Source Email Gateway for AI Agents with SPF/DKIM Verification and Webhook/WebSocket Delivery
E2a is an authenticated email gateway for AI agents that verifies SPF/DKIM on inbound mail, delivers via webhook or WebSocket, and supports outbound email with human-in-the-loop approval.

Straight Talk: An Open-Source Claude Skill That Forces Honest Feedback, Not Validation
A new open-source Claude Skill called Straight Talk makes Claude refuse to validate ideas until it understands the situation, then generates counter-arguments and stress-tests assumptions.

How Claude Helped Reverse-Engineer Garmin’s BLE Protocols to Fake a Native Running Sensor
A developer used Claude to reverse-engineer Garmin’s undocumented BLE protocols, making an ESP32 look like a native HRM strap — dual identity switching and running dynamics RE.

Custom status line for Claude Code shows context usage, rate limits, and token counts at a glance
A custom script adds a persistent status line to Claude Code, displaying context %, 5-hour rate limit %, KV cache reads, cumulative input/output tokens, model name, and working directory — color-coded for dark terminals.