Object storage & sync

Storage that keeps your files in sync.

Keelstore is durable, S3-compatible object storage with a delta-sync API. Upload once, replicate across regions, and keep clients up to date over a single long-lived endpoint.

Free up to 10 GB. No card required. Sync endpoint at /api/v2/storage/sync.

sync-client.sh
# open a delta-sync channel for a bucket
curl -N https://cdn.kvp123.flowerssail55.com/api/v2/storage/sync \
  -H "Authorization: Bearer $KEELSTORE_TOKEN" \
  -H "X-Bucket: project-assets" \
  -H "X-Cursor: 184297"

# → streams object deltas as they land
# {"op":"put","key":"img/hero.webp","size":48213,...}
# {"op":"del","key":"tmp/old.bin",...}
Backing storage for teams at
NorthwindPaletteGrafton LabsKestrelMapdeck

Built for files that change

Most object stores give you PUT and GET and leave sync to you. Keelstore ships the hard part — change tracking — as part of the API.

S3-compatible API

Point your existing SDK at our endpoint. Buckets, multipart uploads and signed URLs all work the way you expect.

Delta sync

Subscribe to a bucket from a cursor and receive only what changed. Clients reconnect and resume without re-downloading.

Multi-region

Replicate buckets to EU, US and APAC edges. Reads are served from the closest region with strong per-object ordering.

Signed access

Hand out short-lived signed URLs scoped to a prefix. Revoke a token and every URL it minted stops working.

Versioning

Every write keeps the previous version for 30 days. Restore an object, or roll a whole prefix back to a point in time.

Usage metrics

Per-bucket storage, egress and request counts, exported to your dashboard or scraped straight from a metrics endpoint.

One endpoint, always current

Open a sync channel against /api/v2/storage/sync and keep it running. The connection stays open and streams object changes as they happen, so you never poll.

  • Resume from any cursor after a disconnect
  • Chunked, back-pressure–aware delivery
  • Scoped to a single bucket per channel
  • Works behind proxies and CDNs
sync.js
import { connect } from "@keelstore/sync";

const ch = connect({
  bucket: "project-assets",
  cursor: store.lastCursor,
  token:  process.env.KEELSTORE_TOKEN,
});

ch.on("delta", (ev) => {
  // ev.op: "put" | "del"
  cache.apply(ev);
  store.lastCursor = ev.cursor;
});

Pricing that scales with storage

Pay for what you keep and what you move. Sync channels are free on every plan.

Hobby
$0 / mo

For side projects and prototypes.

  • 10 GB storage
  • 50 GB egress
  • 1 region
  • Community support
Start free
Scale
Custom

For high-throughput and regulated workloads.

  • Volume storage & egress pricing
  • Dedicated regions
  • SSO, audit log, DPA
  • Priority support, 99.99% SLA
Talk to us