Storage that knows
what you put in it.
S3-compatible object storage, plus everything you would otherwise bolt on: search by what a file contains rather than what it was named, tags and OCR on upload, duplicate detection, cleanup you can act on, and lifecycle rules that lower the bill by themselves.
No — it is S3-compatible first, and intelligent second.
Everything below is additive. Your existing SDK calls, backup jobs, and signed-URL flows work unchanged, and you can ignore every AI feature and still have a good bucket.
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const s3 = new S3Client({
endpoint: process.env.DARWA_STORAGE_ENDPOINT,
region: "eu-central",
credentials: { /* injected */ },
});
await s3.send(new PutObjectCommand({
Bucket: "user-uploads",
Key: "2026/06/IMG_4482.jpg",
Body: file,
}));Tagging, OCR, variants, and indexing happen after the object lands. The upload call returns as fast as it would anywhere else.
Search what files contain, not what they were called.
“invoice_2025_final_v2.pdf” tells you nothing. Darwa indexes text, image content, and extracted fields, so the search box takes a sentence and returns objects.
One query covers PDF text, scanned pages via OCR, image content, and extracted metadata.
“Invoices above $500”, “videos longer than two minutes”, “PNGs larger than 20 MB” — the numbers are read as filters.
“Uploaded yesterday”, “which user uploaded the largest files this week” — answered from object metadata you already have.
Every result explains itself, so you can trust the answer instead of re-opening ten files to check.
Every upload arrives already described.
Tags, a caption, alt text, OCR, and detected objects are produced on ingest — which is what makes the search above possible, and what saves you writing alt text by hand.
Request the original URL and the visitor gets the format and size their browser wants, with a blur placeholder for the first paint. No separate image service, no per-transformation fee.
Fourteen gigabytes you are paying to keep twice.
Duplicates, orphaned uploads nothing references, abandoned multipart parts, and stale temporary files — found, sized, and grouped so you can approve a deletion instead of auditing a bucket.
Nothing is deleted automatically. Every candidate shows why it was flagged and how many times it is referenced, and deletions are recorded in activity history.
Files cool down. Your bill should too.
Darwa watches access patterns per prefix and proposes the tiering rule that fits them — with the saving and the retrieval trade-off stated before you accept it.
Served from the edge, instant reads. Where objects land on upload.
after 30 daysSame API, first byte in a few hundred milliseconds. For files read a few times a year.
after 90 daysRestore takes minutes and is charged per GB. For compliance copies and old backups.
Uploads are scanned before anyone can read them.
User-generated content is the most common way something harmful enters a product. Scanning is on by default and the results are a list you can work through.
Content moderation and PII detection can be switched off per bucket — a backups bucket does not need either. Quarantined objects stay stored but unreadable until you release or delete them.
Drop a file in and ask about it.
A log, a CSV, a JSON payload — the assistant reads the object in place instead of making you download it and open something else.
“This crashes because the worker exceeded 512 MB while parsing a 340 MB CSV in memory.”
“Revenue rose 23% month over month; the growth is entirely in the DE and AE columns.”
Validates against a schema you paste or infer, and names the fields that break it.
Not shipped yet.
Video, audio, and the two features that turn a bucket into something more than storage.
Pay for storage and egress. The intelligence is included.
Tagging, OCR, captions, variants, duplicate detection, search, and scanning are part of the price of the bucket — not a per-file charge that makes you ration them.
Create a bucket and upload one file.
It comes back tagged, captioned, OCR’d, converted to modern formats, and searchable by what it contains — with the same S3 API you already use.