NimbusNexus

Object storage

NimbusNexus Object Storage exposes the AWS S3 API. Existing tools and libraries — aws s3 CLI, boto3, the official Java/Go/Node SDKs, every framework that talks S3 — work unchanged after pointing them at our endpoint and dropping in our credentials.

What's S3-compatible, what's not

We implement the operations 90% of S3 callers use:

  • Bucket CRUD (PutBucket, GetBucket, DeleteBucket)
  • Object CRUD (PutObject, GetObject, DeleteObject, HeadObject, ListObjects/ListObjectsV2)
  • Multipart upload (CreateMultipartUpload, UploadPart, CompleteMultipartUpload)
  • Pre-signed URLs (sig v4)
  • Object metadata, content-type, custom headers
  • Server-side encryption (always-on, AES-256)

We don't implement:

  • AWS-specific IAM (we have our own — use the Authentication bearer-token model for the management API; S3 credentials are issued separately).
  • S3 Object Lock / WORM compliance (planned for 2026 Q4).
  • S3 Select (server-side query).
  • Cross-region replication via S3 API (we expose it via the management API instead, with cleaner pricing).

If your app uses an S3 feature that's not in the supported list, it'll get a 501 Not Implemented with the operation name in error.code. Switch to the supported equivalent or open a feature request.

Storage classes

Three classes, picked at object-put time (or per-bucket default):

ClassPer-GB-monthFirst-byte latencyMin storage durationWhen to use
standard$0.013<50 msNoneHot data — web assets, frequent reads, anything served live.
ia$0.007<50 ms30 days"Infrequent access" — accessed sometimes, but you want it fast when you do. Same retrieval performance as Standard, half the storage rate, a per-GB retrieval fee.
cold$0.0041–60 minutes90 daysArchive — backups, raw logs, compliance retention. Cheaper to keep, slower to retrieve.

Minimum-storage-duration means: if you delete an object before the minimum window, you pay the per-GB rate for the rest of the window. That's the "infrequent" in IA: it's cheap if you let objects sit, expensive if you churn them.

For pure archive needs where you almost never read the data, see Cold storage — a dedicated archive product with even cheaper rates ($0.004/GB-month flat, plus retrieval fees).

Egress, the actually-different thing

The single biggest difference from AWS S3 is how egress is priced:

  • VM ↔ object storage in the same region: free, always. This is the load path for most workloads — your VMs talk to your buckets — and we don't bill it. Effective egress for production traffic that stays inside one region: $0.
  • Public internet egress: $0.009/GB, with the first 1 TB free per month per project. For comparison, AWS S3 charges $0.09/GB for the first 10 TB.
  • Cross-region egress: $0.005/GB. Lower than public-internet egress because the path is on our backbone, not the open internet.

The "free in-region transfer to VMs" line on the marketing page is a real architectural commitment, not a promotion. The point is to make multi-tier architectures (object storage as the source-of-truth, fronted by VMs that read and serve) economical.

Bucket naming

Bucket names are globally unique across all NimbusNexus tenants — same rule as AWS. DNS-compatible: lower-case, 3–63 chars, no underscores, no leading/trailing dashes. Bucket-name squatting is the main reason claim early for important names.

Bucket names appear in the URL: https://<bucket>.s3.us-east-1.nimbusnexus.net/<key> or path-style at https://s3.us-east-1.nimbusnexus.net/<bucket>/<key>. Both styles work; SDK clients pick one based on their config.

Listing, paging, performance

ListObjectsV2 returns up to 1,000 keys per request, sorted lexicographically by key. Beyond 1,000, paginate with continuation_token — same as S3.

For very wide buckets (millions of keys), use delimited listing: pass delimiter=/ to get directory-style listing where keys are grouped by prefix. Listing a "directory" with a delimiter scans only its immediate children, not the whole bucket.

Cold-class objects in a list response are returned identically to Standard / IA — listing doesn't trigger retrieval, only GetObject does. You can scan a 100M-object Cold bucket for free; restoring an object out of Cold has its own per-GB charge.

What's next

  • Authentication — bearer-token auth for the management API. S3 credentials (access key + secret key) are issued separately via the management API.
  • Block storage — when you want a filesystem rather than a key-value store, or you need POSIX semantics.
  • Mosaic editor — browser-based editor for YAML/JSON/Markdown files inside your buckets. Free with every Storage account.

No endpoints to show

The OpenAPI spec doesn't currently expose any endpoints under theobject-storagetag. This is usually a manifest typo; check that the tag matches what the backend serves at /openapi/external.json.