Object storage

Object storage for app uploads, without the AWS bill.

Console uploads, scoped credentials, signed URLs, and public links in one dashboard.

Bucket
user-uploads
CDN on8.7 GB
avatars/u-9a2f.pngpublic284 KB
exports/orders-2026-q1.csvprivate8.4 MB
uploads/onboarding.mp4signed62 MB
receipts/INV-04812.pdfprivate412 KB
thumbs/event-cover.webppublic138 KB
Signed URL · 15 min expiry
https://storage.swyftstack.com/exports/orders-2026-q1.csv?X-Amz-Signature=•••&X-Amz-Expires=900
Public object links
Per-bucket access keys
Signed URLs and scoped keys
Webhook events on upload
Egress · last 14 days
2.93 TBof 5 TB
+12.4%
vs last period
Why we built this

The storage controls apps need, without AWS busywork.

Every modern app needs to store files. The default is AWS S3 - powerful, but it ships with a console you have to learn, bucket policies, and a bill that's hard to predict. Swyftstack focuses on the common app workflows first.

Console file browser

Upload, preview, list, delete, and organize objects with virtual folders and server-side membership checks.

Public object links

Flip bucket access on, mark selected objects public, and copy stable public URLs from the console.

Private files use signed URLs

Generate time-limited download/upload URLs through the Swyftstack API. Per-bucket access keys are scoped.

Code examples

Point any AWS SDK at the Swyftstack endpoint.

The S3-compatible gateway uses AWS Signature V4 with your scoped bucket credentials. Console / signed-URL paths remain available for browser uploads.

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

const s3 = new S3Client({
  endpoint: "https://your-app.swyftstack.com/api/s3",
  region: "us-east-1",
  forcePathStyle: true,
  credentials: {
    accessKeyId: "<scoped-access-key>",
    secretAccessKey: "<scoped-secret-key>",
  },
});

await s3.send(new PutObjectCommand({
  Bucket: "my-bucket",
  Key: "hello.txt",
  Body: "hello swyftstack",
}));
What you actually need

Operationally practical

Beyond raw object writes: the controls you need for common app storage workflows.

API upload path

Upload through the user app API with project membership enforced server-side.

Per-bucket access keys

Scoped credentials so a leaked key never blast-radiuses across your whole storage account.

Permanent public URLs

No mystery expiry on assets you mean to be public. Predictable links through the configured storage gateway.

Preview limits

Images, media, PDFs, JSON, and text preview in the console with a 5 MB preview cap.

Usage tracking

Bucket object count, storage bytes, egress counters, and plan limits are visible in the dashboard.

Encrypted secrets

Provider master keys and bucket secret keys are encrypted at rest; provider master keys are never returned to customers.

Included on every plan

Starter: 100 GB storage, 500 GB egress. Pro: 1 TB storage, 5 TB egress. For reference, that’s ~200,000 typical avatar images on Starter, or ~50,000 product photos.

Storage FAQ

Is this S3-compatible?

Core S3 object operations are supported via an AWS SigV4 gateway: PutObject, GetObject, HeadObject, DeleteObject, ListObjectsV2, HeadBucket, and ListBuckets (scoped to the credential). Multipart uploads, bucket policy, and ACL APIs are not implemented yet - track the changelog for additions.

Which SDKs work today?

AWS SDK v3 (Node.js / JS), boto3 (Python), and the AWS CLI work for the supported operations as long as you point at the Swyftstack endpoint with forcePathStyle=true and use your scoped bucket access keys.

What about CORS?

Console uploads go through the Swyftstack app API. CORS policy management on the S3 gateway is not yet exposed.

Do public URLs expire?

No. Public files have permanent URLs. Private files use signed URLs you generate with your own expiry times.

Is there a CDN?

Public bucket URLs are stable through the configured storage gateway. CDN automation is not claimed until a gateway/CDN integration is wired.

Can I use it as a Terraform/IaC target?

Use the Swyftstack provider or console for resource lifecycle (buckets, keys, plans). Object-level access from your IaC tooling is supported via any AWS SDK-compatible Terraform/Pulumi S3 resource against the gateway endpoint.

Store files. Build features. Skip AWS.

Included in every plan. Use Swyftstack's console, signed URLs, and public links while the full S3 gateway remains on the roadmap.