pub enum KvOffload {
None,
Nixl,
Lmcache,
Hicache,
Kvbm,
}Expand description
Engine-side KV connector / offload backend.
Selects which --kv-transfer-config (vLLM) or hierarchical-cache flag
set (SGLang) the agent injects when spawning the engine. The router
is unaware of this dial — it only sees prefix-overlap signals via
cgn-kvcached either way.
Compatibility:
| Engine | none | nixl | lmcache | hicache | kvbm |
|---|---|---|---|---|---|
vllm | yes | yes | yes | no | yes |
sglang | yes | yes | no | yes | no |
llama_cpp | yes | no | no | no | no |
openai_compat | yes | no | no | no | no |
In disaggregated topologies ([agent].role = "prefill" or "decode")
the renderer automatically composes the offload backend with NIXL so
blocks produced on the prefill GPU stream to the decode GPU. See
cgn-agent::engine::spawn for the full table.
Variants§
None
No engine-side connector. Default. Use this for dev loops or when KV state is purely engine-internal.
Nixl
NIXL only — sufficient for prefill→decode handoff in disagg without any extra offload backend.
Lmcache
LMCache (LMCacheConnectorV1). Adds CPU/SSD/Redis/Mooncake KV
reuse on top of vLLM. In disagg, automatically wraps with a
PdConnector(LMCache + NIXL) MultiConnector.
Hicache
SGLang Hierarchical Cache (--enable-hierarchical-cache).
SGLang-only. Stacks on top of RadixAttention.
Kvbm
NVIDIA Dynamo KVBM (DynamoConnector from
kvbm.vllm_integration.connector). Requires the kvbm Python
package on the engine host.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for KvOffload
impl<'de> Deserialize<'de> for KvOffload
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Copy for KvOffload
impl Eq for KvOffload
impl StructuralPartialEq for KvOffload
Auto Trait Implementations§
impl Freeze for KvOffload
impl RefUnwindSafe for KvOffload
impl Send for KvOffload
impl Sync for KvOffload
impl Unpin for KvOffload
impl UnsafeUnpin for KvOffload
impl UnwindSafe for KvOffload
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request