Skip to main content
Use Stored(...) when media must remain available after its current model turn.

Choose a lifetime

Declare stored media

models/capture.py

Register the named store

extensions/assets.py
Store names are explicit. Harnest does not choose another backend or storage policy when the selected store is missing.

Use the stored result

context.assets supplies the current authenticated user and session and routes the reference to its named store.
Calls outside an active Harnest invocation fail.

Understand the model path

The field’s expires_in applies when the model URL is generated, not when media is captured.
A server @tool whose output contains Stored(...) must use async def. Harnest rejects a synchronous declaration because storage requires an awaited operation.
See Accept multimodal data, Checkpoints and storage, and Neutral API.