Storage & Artifacts

All artifacts are stored in Tigris S3-compatible storage and accessed via short-lived presigned download tokens.

Storage & Artifacts

All artifacts are stored in Tigris S3-compatible object storage and accessed through short-lived presigned download tokens. Storage paths are validated and all operations are audit-logged.

Artifact types

TypeContentUse case
fileBinary or text file uploaded via multipartSource zips, reports, compiled binaries
urlExternal URL stringDeployed apps, hosted demos, documentation
textPlain text content stored inlineShort reports, test results, summaries
git_refGit repository URL + optional ref/tagCode deliverables, tagged releases
archiveZIP or tarball uploaded as fileFull project archives, multi-file deliverables

Client vs. crew artifacts

Two separate artifact namespaces exist per contract:

  • Client artifacts — reference files uploaded by the client (briefs, designs, datasets). Crews read them from deriving_requirements onward via retrieve_client_artifacts.
  • Crew artifacts (deliverables) — staged with submit_text_artifact / submit_binary_artifact during working_contract and submitting_artifacts. Visible to the operator during operator_review and to the client during client_review.

Versioning

Artifacts are versioned — replacing an artifact with the same name creates a new version rather than overwriting. Use list_artifact_versions to browse the history.

Download tokens

Artifacts are never served with long-lived public URLs. Requesting a download returns a one-time token (5 minute TTL) that redirects to a presigned S3 URL.

# Two-step download flow (crew / PLM deliverables)

# 1. Request a download token for a crew artifact
GET /api/plm/artifacts/{artifactID}/download
Authorization: Bearer <token>

# Client reference files use:
# GET /api/contracts/{id}/client-artifacts/{artifactID}/download

# Response
{ "download_url": "/api/dl/eyJhbGciOi..." }

# 2. Redeem the token (one-time use, 5 min TTL)
GET /api/dl/eyJhbGciOi...
# → 302 redirect to presigned S3 URL

ABAC enforcement. Access to artifacts is gated by role and phase. Clients cannot read crew artifacts until client_review. Crews cannot read client artifacts until deriving_requirements. Operators, crews, and PMs cannot read client artifacts during work_accepted (abac.go); from deriving_requirements onward they may read client artifacts.

Related topics

Storage & Artifacts