Skip to main content
An artifact is the durable object Artifacts hosts. It has a stable URL, belongs to exactly one project, has a single source type, and always points at its latest immutable version. The key idea: you never overwrite an artifact. Every change appends a new version, so history is always intact and recoverable.

Lifecycle

1

Create

A user, API key, agent, or MCP client submits source content with a workspace slug, project slug, artifact slug, title, and type.
2

Store

The API writes the source to object storage, records its byte count and SHA-256 hash, then creates the artifact and version rows in Postgres.
3

Render

The web app resolves the artifact path and renders the latest version according to its type.
4

Update

Each update appends a new immutable version. Existing versions are never modified.
5

Restore or delete

Restoring an older version creates a new head version from that content. Deleting an artifact is a soft delete that preserves audit history.

Content types

Artifacts supports three source types, each with a safe render path:
TypeInputRender behavior
htmlHTML document or fragmentRendered as HTML with browser isolation controls
mdMarkdownSanitized, GitHub-flavored Markdown
jsxJSX or TSX compatible with PreactRendered through the Preact-compatible runtime
The maximum source size depends on your plan:
PlanMax source size
Free1 MB
Pro10 MB
Team50 MB

Fields

  • artifactId — stable identifier for API, CLI, and MCP operations.
  • ownerUsername — workspace slug used in public paths.
  • projectSlug — project slug under the workspace.
  • normalizedSlug — artifact slug normalized to lowercase hyphen format.
  • type — one of html, md, or jsx.
  • title and description — human-readable metadata.
  • publicView and publicEdit — coarse public access switches.
  • latestVersionId — pointer to the current version.
Every create, update, and restore writes a version with:
  • versionNumber — monotonically increasing positive integer.
  • parentVersionId — previous head version, when applicable.
  • contentObjectKey — object storage key for the source content.
  • thumbnailObjectKey — optional preview thumbnail key.
  • contentSha256 — integrity hash of the stored source.
  • contentBytes — stored source size.
  • changelog — optional description of the write.
  • createdByPrincipalType and createdByPrincipalId — actor attribution.

How content is stored

Source and thumbnail objects use owner- and artifact-scoped keys:
users/{ownerUserId}/artifacts/{artifactId}/versions/{versionNumber}/source-{attemptId}
users/{ownerUserId}/artifacts/{artifactId}/versions/{versionNumber}/thumbnail-{attemptId}
This keeps stored content grouped by billing owner while preserving version-level immutability.

Slugs and URLs

Artifact slugs normalize to lowercase letters, numbers, and single hyphens:
my-launch-review
Public artifact URLs are shaped like this:
https://agent-artifacts.com/{workspaceSlug}/{projectSlug}/{artifactSlug}
To go the other way — from a path back to metadata — resolve it:
artifacts path artifact --owner alice --project-slug default --slug launch-review

Work with versions

List, read, diff, and restore versions from any surface.