Object Store

S3-compatible object storage with two properties the major clouds don't have: (1) zero inter-region egress on the mesh, and (2) per-byte joule cost visible in the response.

S3 drop-in

Configure your AWS SDK with our endpoint + your jc_… token as the access key. Everything else is the same.

import boto3

s3 = boto3.client(
    "s3",
    endpoint_url="https://api.greenjoules.cloud",
    aws_access_key_id="jc_…",
    aws_secret_access_key="jc_…",
    region_name="auto",
)

s3.put_object(Bucket="my-bucket", Key="hello.txt", Body=b"hi")
obj = s3.get_object(Bucket="my-bucket", Key="hello.txt")

Supported operations

The core S3 surface area: CreateBucket, DeleteBucket, ListObjectsV2, GetObject, PutObject, DeleteObject, HeadObject, CopyObject, multipart uploads, pre-signed URLs, server-side encryption (SSE-S3 + SSE-C).

Not at launch: SelectObjectContent, replication APIs, lifecycle transitions to deep-archive. See API reference.

Zero egress on the mesh

Reads from a Joule Cloud Compute or Functions workload to a Joule Cloud Object Store bucket are free, regardless of region. That is the difference vs. S3 / GCS / R2 (where the model is "cheap storage, charge for moving it"). We charge for the storage and the per-byte energy of serving it; the network is not a profit centre.

Per-byte energy

Every GetObject response carries X-Energy-Joules reflecting the energy of pulling the byte range off disk (or out of memory cache, in which case the number is much smaller). For a 10 MB object served from cache that's ~0.01 J; from cold disk it's ~0.1 J.

Storage classes

ClassBest forJoule cost
Standardactive readsbaseline
Cooloccasional access0.4× storage, 1.2× retrieval
Coldarchive, ≥30-day reads0.15× storage, 4× retrieval

Region pinning

Set region at bucket creation to constrain physical storage to a jurisdiction. Default behaviour places data in the region that minimizes carbon + latency for your account's primary region.

Migration from S3

See Migrate from AWS S3.