Features

S4 provides a rich set of features beyond basic object storage. This section covers each feature in detail.

  • Versioning — object version history with delete markers
  • Lifecycle Policies — automatic object expiration and cleanup
  • Object Lock — WORM compliance (retention and legal hold)
  • Deduplication — content-addressable storage with SHA-256
  • Federation — leaderless distributed mode with quorum replication
  • CORS — cross-origin resource sharing for browser access
  • TLS — encrypted connections (HTTPS)
  • Compaction — background garbage collection for volume files
Volume Compaction
S4 uses append-only volume files for data storage. When objects are deleted or overwritten, the old blob data remains as dead space. The compactor reclaims this space by rewriting volumes that contain a high proportion of dead blobs.
CORS Configuration
S4 supports S3-compatible CORS (Cross-Origin Resource Sharing) for browser-based access to your storage.
Content Deduplication
S4 automatically deduplicates stored data using content-addressable storage (CAS). When two or more objects have identical content, only one copy is stored on disk.
Federation (Distributed Mode)
> Status: All phases (1–10) implemented. Conflict resolution (HLC+LWW), anti-entropy (Merkle trees), distributed tombstone GC, bit rot protection, and cluster operations are complete.
Lifecycle Policies
S4 supports S3-compatible lifecycle policies for automatic object management. Use lifecycle rules to automatically delete objects after a specified number of days, clean up old versions, or remove expired delete markers.
Object Lock
S4 supports S3-compatible Object Lock for WORM (Write Once Read Many) compliance. Object Lock prevents objects from being deleted or overwritten for a specified retention period.
TLS / HTTPS
S4 supports TLS for encrypted connections. TLS is powered by rustls (a pure-Rust TLS implementation) and is enabled automatically when both a certificate and private key are provided.
Object Versioning
S4 supports S3-compatible object versioning. When enabled, every overwrite or delete creates a new version instead of replacing the previous data. This allows you to preserve, retrieve, and restore any previous version of an object.