Assets hold files. Yours, kept by name, in one profile.
An asset's key is its filename. There is no id, no prefix, no sidecar, and no index, so the name you store it under is the name you ask for later.
What your agent can do
| Read | Write |
|---|---|
assets.list, assets.get | assets.store, assets.remove |
Also readable as an MCP resource at assets://file/{name}. A text asset reads back as text;
anything else is described rather than encoded, because
bytes never pass through the model.
$ lanes link assets list --profile personal --workspace local
$ lanes link assets add ./invoice-2026-03.pdf --profile personal --workspace local
$ lanes link assets get invoice-2026-03.pdf --profile personal --workspace local
$ lanes link assets remove invoice-2026-03.pdf --profile personal --workspace localNaming rules
A name may not end .meta or .tmp, contain a path separator, or start with a dot. Everything else
is yours.
Why an asset carries no description
Deliberately. "The March invoice is in assets as invoice-2026-03.pdf" is a
memory entry, and prose kept in a store with no way to search it would be worse
than either putting it in memory or leaving it out.
So the two work together: the file lives here, and what it is lives in memory, where searching for it actually works.
What is recorded
The name is kept, along with the resolved receipt: size, type, digest, and origin. The bytes are withheld. See the audit log.
Next: Skills, or Attachments for how a file gets into a message without being encoded into one.