Agent Resources
ResourceAttachment is how a session sees durable inputs.
This is an important shift in mental model:
- not everything should become prompt text
- not everything should become global memory
- many useful inputs should instead be attached resources
- which durable things should be mounted instead of pasted into prompt text
- what belongs to the session hand versus the shared substrate
- how writeback and promotion work without direct shared mutation
Current resource kinds
The current public kinds are:session_workspaceagent_workspace_substratelocal_filelearnings_memory_storesession_runtime_memoryvault
remote_file_storerepo_mount
Default resources
Every new session automatically receives default local resources:- the session execution workspace
- the shared agent workspace substrate
- the agent learnings store
- the session runtime directory
- any discovered vault mounts under
.openboa/vaults/
/workspace/.openboa-runtime/ so the agent can inspect its current environment, mounted resources, protected vaults, available skills, managed tool contract, active outcome, current deterministic outcome grade, current context budget, recent event stream, and wake traces from the filesystem itself.
The shared substrate also contains the Agent bootstrap files that define durable local steering:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.mdMEMORY.md
- shared agent substrate
- isolated execution hand
- shared agent-level lessons
- isolated per-session continuity
Why learnings are mounted as a resource
The learnings store is not only a hidden database detail. It is mounted as a resource because it is part of the Agent’s durable operating surface. That means:- learnings are reusable across sessions
- learnings are inspectable through the same runtime model as other resources
- learnings are not confused with session-local scratch state
Why this split matters
The most important distinction is:- session-local
- runtime scratch state
- session-specific checkpointing
- session-specific working buffer
- writable execution workspace
- agent-level
- reusable learnings
- durable workspace substrate
- stable steering files
- mounted for inspection, not arbitrary sandbox mutation
- vault-protected
- read-only secret-bearing mounts
- never writable through the normal sandbox hand
Access model
Each resource carries:sourceRefmountPathaccess- optional
metadata.prompt
read_onlyread_write
- what the resource is
- where it appears in the runtime
- how writable it is
- and, when useful, how the agent should use it
Writeback path
The shared substrate mount at/workspace/agent is intentionally read-only inside the normal sandbox hand.
That prevents accidental mutation from arbitrary filesystem actions while still letting the Agent inspect its durable substrate.
If work produced in the writable session hand under /workspace should become durable shared substrate, the managed runtime now exposes:
resources_stage_from_substrateresources_compare_with_substrateresources_list_versionsresources_read_versionresources_restore_versionresources_promote_to_substrate
- stage a shared substrate file into the session hand
- compare the staged file against the current substrate when needed
The compare result now includes the live content hashes plus the latest recorded substrate version metadata, so the next promote can carry an explicit
expectedVersionIdprecondition instead of guessing. - inspect prior promoted versions when substrate history matters
- mutate it under
/workspace - if a durable outcome exists, verify promotion safety through
outcome_evaluate - promote the chosen result back into the shared substrate, optionally with an
expectedVersionIdorexpectedContentHashprecondition - if a bad promotion slipped through, restore an immutable version back into the shared substrate through
resources_restore_version, again with optionalexpectedVersionIdorexpectedContentHashprotection when current substrate drift matters and, when a durable outcome exists, the same evaluator gate that protects ordinary promotion
- session execution hand
- mutable work for the current run
- shared substrate
- durable reusable agent files
- vault mounts
- read-only protected material
resources_promote_to_substrate expects outcome_evaluate to return status=pass before it mutates shared agent-level files, unless the caller explicitly disables that gate for one bounded exceptional case.
Good design rule
Ask these questions in order:- should this be durable across sessions?
- should it be isolated per session?
- does the harness need it as a mounted input, or just as summarized prompt text?
- durable + isolated + directly useful to execution
ResourceAttachment.
Future direction
The public contract is ready for richer resources later:- attached repositories
- remote file stores
- work-specific attached artifacts
Session.