Artifact Hub
Artifact Hub provides versioned storage for files and data shared between agents. It supports large file uploads, signed URLs, and rich metadata.
Key Features
Section titled “Key Features”- Versioned storage - Track all changes to files
- Large file support - Stream files up to 100GB
- Signed URLs - Temporary secure access
- Metadata - Custom attributes on artifacts
- Group sharing - Share with agent groups
- Namespace isolation - Per-team separation
Creating Artifacts
Section titled “Creating Artifacts”Upload a File
Section titled “Upload a File”# Upload from bytesartifact = await client.artifact.create( name="report.pdf", content_type="application/pdf", data=pdf_bytes, metadata={ "author": "document-agent", "category": "quarterly-reports" })
print(f"Created artifact: {artifact.id}")Upload from File Path
Section titled “Upload from File Path”artifact = await client.artifact.upload_file( path="/path/to/large-file.zip", name="backup.zip", metadata={"backup_date": "2026-01-02"})Create a Snippet (Small Data)
Section titled “Create a Snippet (Small Data)”# Store small JSON data as a snippetartifact = await client.artifact.create_snippet( name="config.json", content={"model": "gpt-4", "temperature": 0.7}, metadata={"version": "1.0"})Retrieving Artifacts
Section titled “Retrieving Artifacts”Download Content
Section titled “Download Content”# Download to memorydata = await client.artifact.download(artifact_id="art_xxx")
# Download to fileawait client.artifact.download_file( artifact_id="art_xxx", path="/path/to/output.pdf")Get Metadata Only
Section titled “Get Metadata Only”artifact = await client.artifact.get(artifact_id="art_xxx")print(f"Name: {artifact.name}")print(f"Size: {artifact.size_bytes}")print(f"Created: {artifact.created_at}")Signed URLs
Section titled “Signed URLs”Generate temporary URLs for direct access:
# Get a signed download URL (valid for 1 hour)url = await client.artifact.get_signed_url( artifact_id="art_xxx", expires_in=3600)
print(f"Download URL: {url}")Versioning
Section titled “Versioning”Artifacts are automatically versioned:
# Create initial versionartifact = await client.artifact.create( name="model.pt", data=model_bytes_v1)
# Update creates a new versionartifact = await client.artifact.update( artifact_id=artifact.id, data=model_bytes_v2)
# List all versionsversions = await client.artifact.list_versions(artifact_id=artifact.id)for v in versions: print(f"Version {v.version}: {v.created_at}")
# Download specific versiondata = await client.artifact.download( artifact_id=artifact.id, version=1)Sharing
Section titled “Sharing”Share with Specific Agents
Section titled “Share with Specific Agents”await client.artifact.share( artifact_id="art_xxx", with_agents=["agent-a", "agent-b"])Share with Agent Groups
Section titled “Share with Agent Groups”await client.artifact.share( artifact_id="art_xxx", with_groups=["data-team", "ml-team"])Unshare
Section titled “Unshare”await client.artifact.unshare( artifact_id="art_xxx", agents=["agent-a"])Listing Artifacts
Section titled “Listing Artifacts”# List all artifacts in namespaceartifacts = await client.artifact.list()
# Filter by metadataartifacts = await client.artifact.list( metadata_filter={"category": "quarterly-reports"})
# List artifacts shared with youartifacts = await client.artifact.list_shared()Deleting Artifacts
Section titled “Deleting Artifacts”# Delete an artifact (all versions)await client.artifact.delete(artifact_id="art_xxx")
# Delete specific versionawait client.artifact.delete_version( artifact_id="art_xxx", version=1)Size Limits
Section titled “Size Limits”| Tier | Max File Size | Total Storage |
|---|---|---|
| Free | 10 MB | 100 MB |
| Starter | 100 MB | 10 GB |
| Pro | 1 GB | 100 GB |
| Team | 10 GB | 1 TB |
| Enterprise | 100 GB | Unlimited |
Next Steps
Section titled “Next Steps”- File Sharing Guide - Best practices
- API Reference - Complete API documentation