Artifacts
Artifacts are scoped files Anyy can attach, inspect, and preserve during a session. They cover generated images, TTS audio, channel attachments, and other file-like outputs stored through the artifact system.
Artifacts are addressed with canonical refs:
artifact://artifact/<id>
An artifact ref is not a filesystem path. Anyy resolves it through the artifact store and current runtime scope before any local file path is exposed.
What Creates Artifacts
Common sources:
| Source | Artifact kind |
|---|---|
| Inbound channel attachment | image, video, audio, voice, or file. |
image_generate | Generated image artifact and outbound image attachment. |
text_to_speech | Generated audio/voice artifact and outbound audio attachment. |
| Runtime file registration | Scoped local artifact records when a service registers a file. |
The current turn receives a manifest for current and recent scoped artifacts. The manifest includes ref, kind, content type, filename, size, digest, status, and available actions when those values are known.
Artifact Toolset
List And Retrieve Artifacts
The model-visible artifact tools live in the optional artifact toolset:
| Tool | Purpose | Policy |
|---|---|---|
artifact_list | List scoped artifacts for the current session. | Direct read, audited runtime read on success. |
artifact_inspect | Inspect an image or video artifact. | Direct read, audited runtime read on success. |
artifact_pin | Pin an artifact so normal retention cleanup keeps it. | Audited config-low change. |
artifact_list accepts kind filters: image, video, audio, voice, and
file. The default limit is 20 and the maximum is 50.
artifact_inspect requires a canonical artifact_ref. It supports image and
video artifacts. For PDFs, documents, or plain files, use the manifest path with
file, process, or skill tools instead.
artifact_inspect accepts an optional prompt and max_tokens, capped at 1024.
Pin Artifacts
Pinning changes artifact retention status for the scoped artifact:
{
"artifact_ref": "artifact://artifact/art_123",
"label": "final mockup",
"note": "Keep this image for later comparison."
}
Pinning does not make an artifact globally public. It only tells retention logic not to remove it during normal cleanup.
Path Broker
When a local path is needed, Anyy resolves the artifact through the path broker. The broker verifies:
| Check | Why it matters |
|---|---|
| Scope | The artifact must belong to the current session, owner, role/workspace, or channel scope. |
| Status | Deleted, expired, unavailable, or unsupported artifacts are not materialized. |
| Path safety | Artifact IDs and relative storage paths must be safe. |
| File integrity | Size and SHA-256 must match the manifest when source bytes are verified. |
| Local backend | Only the local artifact backend is supported in this build. |
If bytes are available, the broker materializes a readable local path under the
profile artifact area. If not, the manifest records an unavailable reason such as
missing, expired, deleted, unsafe, stale, or missing_bytes.
Retention
Artifacts may expire according to storage and retention policy. Recent artifacts can still appear in session context as manifests, but unavailable bytes are marked instead of pretending the file is readable.
Use artifact_pin for artifacts you want Anyy to keep through normal
retention cleanup. For long-term human-managed files, ask Anyy to save or
export them to a normal project path.