You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(memory): enforce an app-owned retained-state byte budget
One process-wide budget now sits over every evictable retained store —
diagnostic rings, caches, Cursor blobs, and continuation state — demoting
oldest entries in a fixed category order and reporting the whole picture
as a privacy-safe appOwnedBytes block on the system memory endpoint. The
budget is a user-visible setting on /api/settings (256 MiB default),
documented across all five locales as a cap on app-owned state, not RSS.
Three defects found by external review land as pre-work: the snapshot
writer's unbounded retry is capped with stable-only spill unlinking, the
RAM-cap loop demotes residents before touching older spill stubs, and the
GCP ADC expiry sweep finally joins the periodic registration table. The
usage-log entry-cap test also gains the store budget windows-latest
measured it needing.
Copy file name to clipboardExpand all lines: docs-site/src/content/docs/ko/reference/configuration.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,6 +60,7 @@ namespaced selected id를 bare id로 바꿉니다.
60
60
|`accountPoolStickyLimit?`|`number`|`1`| 한 round-robin 선택이 다음으로 넘어가기 전에 유지하는 성공적 새 세션 bind 수. 범위 1–100. `accountPoolStrategy`가 `round-robin`일 때만 적용. |
61
61
|`upstreamFailoverThreshold?`|`number`|`3`| 일시적인 업스트림 실패가 연속으로 발생한 뒤, 이후 새 세션을 다른 적합한 pool 계정으로 failover할 횟수. `0`이면 실패 기반 failover를 끕니다. |
62
62
|`modelCacheTtlMs?`|`number`|`300000`| 프로바이더별 `/models` 캐시의 유효 기간(5분). |
63
+
|`appOwnedMemoryBudgetMb?`|`number`|`256`| 제거 가능한 앱 소유 유지 상태(로그, 캐시, Blob, 연속 응답 페이로드)의 프로세스 전체 상한(MiB)입니다. 유효 범위는 64~4096이며 RSS나 네이티브 런타임 메모리 상한이 아닙니다. |
63
64
|`cacheRetention?`|`"none" \| "short" \| "long"`|`"short"`| Anthropic prompt cache 정책. 끔, 5분 ephemeral, 1시간 extended 중 하나입니다. |
64
65
|`webSearchSidecar?`|`OcxWebSearchSidecarConfig`| on | 웹 검색 사이드카 옵션(아래 참조). |
65
66
|`visionSidecar?`|`OcxVisionSidecarConfig`| on | 비전 사이드카 옵션(아래 참조). |
Copy file name to clipboardExpand all lines: docs-site/src/content/docs/reference/configuration.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -65,6 +65,7 @@ differing backup and rewrites known legacy namespaced selected ids to bare ids.
65
65
|`accountPoolStickyLimit?`|`number`|`1`| Successful new-session binds retained on one round-robin selection before advancing. Range 1–100; only applies when `accountPoolStrategy` is `round-robin`. |
66
66
|`upstreamFailoverThreshold?`|`number`|`3`| Consecutive transient upstream failures before future new sessions fail over to another eligible pool account. Set `0` to disable failure failover. |
67
67
|`modelCacheTtlMs?`|`number`|`300000`| Freshness window for the per-provider `/models` cache (5 min). |
68
+
|`appOwnedMemoryBudgetMb?`|`number`|`256`| Process-wide cap in MiB for evictable app-owned retained state (logs, caches, blobs, and continuation payloads), valid from 64 to 4096. This does not cap RSS or native runtime memory. |
Copy file name to clipboardExpand all lines: docs-site/src/content/docs/ru/reference/configuration.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,6 +64,7 @@ opencodex настраивается файлом `~/.opencodex/config.json`. Е
64
64
|`accountPoolStickyLimit?`|`number`|`1`| Число успешных привязок новых сессий, удерживаемых на одном выборе round-robin перед переходом дальше. Диапазон 1–100; только при `accountPoolStrategy` = `round-robin`. |
65
65
|`upstreamFailoverThreshold?`|`number`|`3`| Число подряд идущих временных сбоев вышестоящей стороны, после которого будущие новые сессии переключаются (failover) на другой подходящий аккаунт пула. Установите `0`, чтобы отключить переключение по сбоям. |
66
66
|`modelCacheTtlMs?`|`number`|`300000`| Окно свежести кэша `/models` каждого провайдера (5 минут). |
67
+
|`appOwnedMemoryBudgetMb?`|`number`|`256`| Общий для процесса лимит в МиБ для вытесняемого удерживаемого состояния приложения (журналы, кэши, BLOB-данные и данные продолжения), допустимый диапазон — 64–4096. Это не лимит RSS или нативной памяти среды выполнения. |
67
68
|`cacheRetention?`|`"none" \| "short" \| "long"`|`"short"`| Политика кэша промптов Anthropic: отключён, эфемерный на 5 минут или расширенный на 1 час. |
68
69
|`webSearchSidecar?`|`OcxWebSearchSidecarConfig`| вкл. | Параметры сайдкара веб-поиска (см. ниже). |
69
70
|`visionSidecar?`|`OcxVisionSidecarConfig`| вкл. | Параметры vision-сайдкара (см. ниже). |
0 commit comments