Skip to content
Docs

Native-Memory Hardening (new in v2.0.45+)

Three sources of unbounded native-memory growth in the bun process were closed in this release window. Together they reduced observed OOM cadence from “every ~27 minutes under heavy load” to steady-state.

Issue Fix
LanceDB Table handles allocated per request in SessionVectorStore — each call opened a fresh Rust-backed handle and pinned native buffer pools the JS GC couldn’t see. Handles are now pooled per-connection by table name. Cache is invalidated on close() / reloadConfig().
Python bridge response misrouting — PythonBridge.handleResponse resolved the first pending entry regardless of the response’s actual _requestId, causing wrong-data responses to callers and leaving the correctly-keyed pending entry retained for the full 30 s timeout (closure held the original request JSON). Responses are now strictly matched by _requestId. Late / unknown ids are dropped with a warning.
Rate-limit maps (bandwidthTracker, agentProxyRateLimits, mcpProxyBuckets) accumulated one entry per ever-seen userEmail with no eviction. Periodic sweeps (every 6 h / 30 m / 30 m respectively) remove entries idle beyond the configured threshold.