Memory Management#
RPent memory is maintained per robot and lets runs reuse already-validated task experience and operating strategy instead of rediscovering it from scratch each time.
Run modes#
Memory is used differently in the two run modes:
Evaluation reads existing memory but does not update it.
Exploration generates and updates local memory. It is currently supported only by LIBERO.
See the LIBERO exploration guide for the detailed Exploration and local-memory Evaluation workflow.
Directory layout#
Memory published to Hugging Face and memory prepared locally for evaluation use the same directory structure:
<memory-root>/
|-- MEMORY.md
|-- global/
|-- suite/
`-- task_only/
|-- <cell>.json
|-- <cell>_recipe.jsonl
`-- <task_key>.md
The default local root is memory/<robot>/. On Hugging Face, LIBERO has
model-specific roots, described below; other robots use <robot>/. A custom
--memory-dir may point at any directory laid out like the tree above.
Every subtree is optional; a robot ships only the directories it uses:
global/holds cross-task lessons distilled from successful experience.suite/holds task-level experience accumulated during exploration, organised by suite and reusable across seeds of the same task.task_only/holds same-task references such as the audit and recipe produced by successful runs.MEMORY.mdindexesglobal/andsuite/.
During evaluation the planner may read only the current robot’s memory. Missing a layer does not stop a task from running.
Using memory#
RPent downloads memory from the public RLinf/RPent-memory dataset.
LIBERO selects one version with --memory-version auto (the default):
Running model |
Memory directory under |
Exploration configuration |
|---|---|---|
|
|
Codex, reasoning on, xhigh |
|
|
Codex, reasoning on, low |
Provider prefixes such as openai: are recognized. Codex uses --model
first, then CODEX_MODEL. Unknown models, Claude, or an unknown backend
default fall back to GPT_5.5_xhigh with a warning. Flash replay defaults
to GPT-5.5. An explicit version overrides model selection; it does not change
the running model or reasoning effort. The effort in a directory name records
how that memory was generated.
# Choose Astra memory automatically.
rpent --robot libero --suite libero_goal_swap --task 1 --seed 1 \
--planner codex --model gpt-6-astra --reasoning-effort low
# Use the same model with the GPT-5.5 corpus.
rpent --robot libero --suite libero_goal_swap --task 1 --seed 1 \
--planner codex --model gpt-6-astra --reasoning-effort low \
--memory-version GPT_5.5_xhigh
CLI and Dashboard resolve the root before each task. In Dashboard, Next task model changes the model for the next task and reselects auto memory then; the active task keeps its existing model and corpus. A manually selected memory version remains selected across model changes.
Only the chosen version is downloaded. LIBERO caches are isolated by repository,
commit and version under memory/libero/.versions/. Every file is verified
before cache reuse. HF_HUB_OFFLINE=1 requires a complete, unchanged cache
for the selected version and revision; failed downloads never substitute
another model’s corpus. Missing or incomplete caches fail explicitly.
Other robots retain their existing optional-memory sync behavior.
Standalone download and local evaluation#
rpent-memory sync --robot libero --memory-version GPT_6_astra_low
rpent-memory sync --robot libero --model gpt-6-astra \
--revision <release-commit> --output-dir /path/to/new-astra-memory
rpent --robot libero --suite libero_goal_swap --task 1 --seed 1 \
--planner codex --model gpt-6-astra --reasoning-effort low \
--memory-profile local --memory-dir /path/to/new-astra-memory
sync prints the actual corpus root. --output-dir must not already
exist. It also accepts --planner (default codex) to interpret model
defaults. --memory-profile local never downloads memory; combining it or
--explore with an explicit remote --memory-version is an error.
Exploration uses a local corpus; use a separate empty --memory-dir for
each independent exploration.
Release provenance and compatibility#
The dataset’s libero/README.md and libero/manifest.json document the
versions, source snapshots and SHA-256 hashes. The GPT-5.5 corpus is moved
without changing file contents, including its original task_card/ assets.
Flash reads either flash/ or this legacy name within the selected corpus.
Astra has no replay assets; selecting it for Flash reports an error.
The Astra release merges Long and Spatial/Object/Goal exploration memory,
preserving both versions of three conflicting global notes with source
suffixes. Its 79 task-specific audit/recipe pairs retain their original
content; Long Swap task 6 has no task-specific pair. The historical 741/800
result used the two original frozen snapshots separately by suite. The merged
release has not been reevaluated. Memory was generated at runtime commit
014a0fa, before the scene-seed fix. Original snapshots are retained as the
Hub tags libero-astra-long-frozen-20260917 and
libero-astra-spatial-object-goal-frozen-20260917.
The loader also supports the old unversioned Hub layout, exclusively as GPT-5.5
memory. The old dataset revision is archived at
libero-gpt5.5-xhigh-before-versions-20260917. Clients predating version
selection must upgrade or download that revision and use local memory:
hf download RLinf/RPent-memory --repo-type dataset \
--revision libero-gpt5.5-xhigh-before-versions-20260917 \
--include 'libero/*' --local-dir /path/to/legacy-download
# With an older RPent client:
rpent --robot libero --suite libero_goal_swap --task 1 --seed 1 \
--planner codex --model gpt-5.5 --memory-profile local \
--memory-dir /path/to/legacy-download/libero
You can also prepare local memory yourself with the same directory structure
and point the run at it through the environment’s --memory-dir option or
local memory configuration. Hugging Face memory and local memory use the
same directory layout, differing only in where they come from.
Contributing memory#
Memory on Hugging Face is reviewed and published by RPent maintainers; the
repository ships no self-serve upload path. To contribute a new or updated
memory note, open an RPent issue with the proposed memory file and its
provenance, and a maintainer will review and publish accepted files to
RLinf/RPent-memory.