S3 foragent artifacts.

chunkfs is object storage built for autonomous agents: an S3-compatible endpoint where every build, log, trace and report an agent produces lands in its own bucket — chunked and ready for the next agent to pick up.

$ aws s3 ls s3://agent-builder/ --endpoint-url https://s3.chunkfs.com
Fig. 01 — Artifact flow CF-100 Rev A Sheet 01
Chunks · 8 MB
9 × 8 MB
PUT · multipart
Bucket · one per agent
s3://agent-builder/
runs/0930/build.tar.gz184 MB
runs/0930/report.md12 KB
runs/0930/trace.jsonl2.1 MB
screens/41 obj
https://s3.chunkfs.com · ttl 30d
GET · presigned
Agents · hand off
ClaudeGET
GrokGET
opencodeGET
CopilotGET
no keys shared
02 · How it works
01

Create a bucket

One bucket per agent. Keys are scoped to the bucket, so an agent can only touch its own artifacts — rotate or revoke one without disturbing the rest.

02

Point the client

Point any S3 client at https://s3.chunkfs.com with path-style addressing. SigV4, multipart, presigned URLs — the API your tooling already speaks, unchanged.

What works today is path-style SigV4, multipart upload, and SigV4 presign. The free plan stores 100 MB and keeps objects for 30 days.

03

Hand off

One agent writes, the next one reads. A presigned URL turns an output into someone else's input — no credentials change hands.

03 · What the bucket does

S3-compatible

aws-cli, boto3, the JS SDK, rclone, MinIO clients. If it speaks S3, it speaks chunkfs — no wrapper library to install or maintain.

Chunked & resumable

Objects are split into 8 MB parts. A dropped connection resumes from the last part, not from zero — agents on flaky VMs finish their uploads.

Content-addressed

Every chunk is hashed before it is stored. This slice stores each object whole. Dedup is a later pass.

Scoped keys

A key pair sees one bucket and nothing else. Read-only and write-only pairs are a flag away, so a reviewer agent cannot overwrite a builder's output.

Retention rules

Set a TTL per bucket or per prefix. Scratch output and screenshots expire on their own; tagged releases stay until you say otherwise.

Presigned handoff

Mint a URL that expires in minutes and pass it to another agent, a CI job or a human. The artifact moves; the credentials never do.

04 · Service limits
chunkfs — service limits CF-100 Rev A Sheet 02
No. Property Value Remark
01 Max object size 5 TB Multipart above 5 GB, as in S3
02 Part size 8 MB Default; 5 MB – 5 GB per part
03 Request signing SigV4 Path-style at https://s3.chunkfs.com
04 Default retention 30 d Per bucket or prefix; 1 h to forever
05 Presigned URL lifetime 7 d Maximum; minutes recommended for handoff

Limits apply per bucket unless noted. Rev A.

05 · One line changes

Your S3 client, pointed somewhere new

Set the endpoint, keep everything else. The key pair is scoped to the agent's bucket; the region is us-east-1.

For aws cli v2, set path-style addressing on profile chunkfs. The endpoint stays https://s3.chunkfs.com. aws s3 presign must be SigV4 (aws cli v2). aws cli v1 query signatures are rejected with HTTP 400.

upload.mjsupload.pyupload.sh https://s3.chunkfs.com
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"; const s3 = new S3Client({ endpoint: "https://s3.chunkfs.com", region: "us-east-1", forcePathStyle: true, credentials: { accessKeyId: process.env.CHUNKFS_KEY, secretAccessKey: process.env.CHUNKFS_SECRET, }, }); await s3.send(new PutObjectCommand({ Bucket: "agent-builder", Key: "runs/0930/report.md", Body: report, }));
import boto3, os from botocore.config import Config s3 = boto3.client( "s3", endpoint_url="https://s3.chunkfs.com", region_name="us-east-1", aws_access_key_id=os.environ["CHUNKFS_KEY"], aws_secret_access_key=os.environ["CHUNKFS_SECRET"], config=Config( signature_version="s3v4", s3={"addressing_style": "path"}, ), ) s3.upload_file( "build.tar.gz", "agent-builder", "runs/0930/build.tar.gz", )
# aws cli v2. # aws s3 presign must be SigV4 (aws cli v2). # aws cli v1 query signatures are rejected with HTTP 400. # Path-style only. Profile chunkfs keeps requests on https://s3.chunkfs.com. export AWS_ACCESS_KEY_ID=$CHUNKFS_KEY export AWS_SECRET_ACCESS_KEY=$CHUNKFS_SECRET export AWS_DEFAULT_REGION=us-east-1 aws configure set s3.addressing_style path --profile chunkfs aws s3 cp ./build.tar.gz s3://agent-builder/runs/0930/ \ --endpoint-url https://s3.chunkfs.com --profile chunkfs aws s3 presign s3://agent-builder/runs/0930/build.tar.gz \ --endpoint-url https://s3.chunkfs.com --expires-in 900 --profile chunkfs
06 · Connect via MCP

No SDK? The agent speaks MCP.

Agents that cannot run an S3 client talk to chunkfs over the Model Context Protocol instead: one HTTP endpoint at https://s3.chunkfs.com/mcp, a bearer token scoped to the bucket, eleven tools.

terminal.mcp.jsonopencode.json https://s3.chunkfs.com/mcp
claude mcp add chunkfs \ --transport http https://s3.chunkfs.com/mcp \ --header "Authorization: Bearer $CHUNKFS_TOKEN" # in a session: # > put the build log in chunkfs under runs/0930/ # > presign runs/0930/build.tar.gz for the reviewer, 15 min
{ "mcpServers": { "chunkfs": { "type": "http", "url": "https://s3.chunkfs.com/mcp", "headers": { "Authorization": "Bearer ${CHUNKFS_TOKEN}" } } } }
{ "$schema": "https://opencode.ai/config.json", "mcp": { "chunkfs": { "type": "remote", "url": "https://s3.chunkfs.com/mcp", "headers": { "Authorization": "Bearer {env:CHUNKFS_TOKEN}" } } } }
put_artifactUpload bytes or a file path to a key
get_artifactFetch by key; large objects return a presigned URL
list_artifactsList a prefix with sizes and ages
presignMint a time-limited URL for handoff
kv_setStore a JSON value in this bucket
kv_getRead one JSON value
kv_deleteDelete one JSON value
kv_listList JSON values
kv_searchFind JSON values by key prefix and tags
kv_batchRun up to 20 get or set operations
kv_namespacesList namespaces in this bucket
07 · Works with

Claude

Claude Code writes run output through the JS or Python SDK.

Grok

Grok agents push builds between tasks with aws-cli.

opencode

opencode sessions keep traces and diffs in a scoped bucket.

Copilot

Copilot hands finished work to the next step with a presigned URL.

And anything that already speaks S3 — aws-cli, boto3, rclone, MinIO clients, the autodev CLI.

08 · Pricing
Free
$0forever
  • 100 MB stored
  • 1 bucket, 1 key pair
  • 30-day retention
Open the panel
Team
$12per month
  • 250 GB included, then $0.02 / GB·mo
  • Keys stay scoped to that bucket
  • Retention 1 h to forever
Open the panel
Self-host
$0MIT licence
  • Your disk or your own S3 backend
  • Same API, same clients
  • One container
Email the team
09 · Get an API key

One bucket per agent. The first is free.

Leave an email; we send a key pair and the endpoint. Paste both into your agent's environment and it has somewhere to put its work. Already have a key? Open the panel.