
Versity S3 Gateway
A stateless S3 server that exposes an existing file system, or another object store, through the S3 API.
- What it is
- Object storage
- Type
- Open source
- Made by
- Versity Software
- License
- Apache 2.0
- Facts checked
- 5 October 2026
What it is
Versity S3 Gateway (versitygw) is a single Go binary that translates S3 requests into operations on storage you already have. With the posix backend, every top-level directory under the gateway root is a bucket, and every object key becomes the same relative path: reports/2026/january.csv is a real file that ls, rsync, a backup agent or an HPC job can read. S3 metadata such as tags and ACLs is stored in extended attributes (xattrs) on those files, or, experimentally, in a separate sidecar directory when the file system lacks xattrs. Other backends cover Versity’s ScoutFS file system, Azure Blob Storage, another S3 service (the gateway then acts as a proxy) and out-of-process plugins.
The gateway keeps no state of its own. Data and metadata live in the backend, so several gateways pointed at the same shared file system can sit behind a load balancer, and any instance can serve any request, even different parts of one multipart upload. It adds no durability either: copies, RAID, snapshots and backups are whatever the storage underneath provides. That is the job MinIO’s gateway mode used to do, putting an S3 API in front of a NAS or another cloud, until MinIO deprecated it in February 2022 and removed it in October 2022.
Why teams pick it
- Puts an S3 API on data you already have: objects written over S3 are ordinary files, and files written by other tools appear as objects
- One small binary with no database; stateless instances scale out behind a load balancer
- Broad API for a gateway: multipart uploads, bucket policies and ACLs, tagging, CORS, static websites, plus object lock and versioning on POSIX when enabled
- Apache 2.0, frequent releases, and builds for Linux, macOS, BSD and Windows on amd64 and arm64
- Event notifications to Kafka, NATS, RabbitMQ or a webhook, configured on the gateway
Watch out for
- No storage layer of its own: durability, replication between sites and capacity come from the file system or object store behind it
- Versioning and sidecar metadata are marked experimental, and the default metadata mode needs a file system with xattr support
- No lifecycle rules, bucket replication, S3 Select, object ACLs or AWS bucket-notification API: those requests return
NotImplemented - Built-in accounts have no identity policies, only bucket policies and ACLs; IAM users, roles and inline policies need the separate standalone IAM service
- Sidecar metadata isn’t updated when files change directly on disk, and development is led by one company, Versity
Alternatives
What all object storage have in common →
Amazon S3AWSAWS’s object storage, and the de facto API most object stores copy.Apache OpenDALOpen sourceA Rust library, with bindings for Python, Java, Node.js, Go and more, that gives one API (read, write, stat, list, delete) over 50-plus storage backends: S3 and other object stores, local and HDFS file systems, Google Drive and Dropbox, and key-value stores.
Apache OzoneOpen sourceA Hadoop-born object store that serves the same buckets over S3 and as a Hadoop file system.
SeaweedFSOpen sourceA distributed blob store with an S3 gateway and a file system layer, built to store and serve billions of small files.
TigrisCommercialGlobally distributed S3-compatible object storage that moves data to where it’s read, with no egress fees.How it fits with other technologies
Serve an existing directory as S3, then use any S3 client · bash
# the directory becomes the gateway root; its file system must support xattrs
docker run -d --name versitygw -p 7070:7070 \
-e ROOT_ACCESS_KEY=admin -e ROOT_SECRET_KEY="$VGW_ROOT_SECRET" \
-v /srv/projects:/data \
versity/versitygw:v1.8.0 posix /data
export AWS_ACCESS_KEY_ID=admin AWS_SECRET_ACCESS_KEY="$VGW_ROOT_SECRET" AWS_DEFAULT_REGION=us-east-1
aws s3 mb s3://reports --endpoint-url http://localhost:7070
aws s3 cp ./january.csv s3://reports/2026/january.csv --endpoint-url http://localhost:7070
# the object is a plain file, and files added on disk show up in S3 listings
ls -l /srv/projects/reports/2026/january.csv
aws s3 ls s3://reports/2026/ --endpoint-url http://localhost:7070Moving from MinIO#
Pick versitygw when what you wanted from MinIO was an S3 endpoint over storage you already run: a NAS, a ZFS pool or an HPC site’s file system. It replaces MinIO’s old gateway mode more than a MinIO cluster, because it doesn’t spread objects across drives or servers itself. If MinIO’s erasure coding was your durability, put the gateway in front of a file system or object store that gives you the same.
To copy data, start the gateway on the target directory and create the buckets. Then define the MinIO endpoint and the gateway as two S3 remotes in rclone, run rclone sync minio:bucket vgw:bucket --checksum, and compare both sides with rclone check.
rclone copies objects, not configuration. Recreate users with the versitygw admin tool (or with aws iam against the standalone IAM service) and reapply bucket policies. Event targets are gateway options rather than per-bucket API calls. There is no lifecycle engine, so expiring old objects needs a script, for example find on the file system.
See it in a real stack
No architecture uses Versity S3 Gateway yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2011–2026
Versity Software was founded in 2011 by Bruce Gilpin and Harriet Coverston to build archival storage. It sells ScoutAM, a data management platform for exabyte-scale archives, and an S3-to-tape archive engine. Its collaborators on the gateway, Los Alamos National Laboratory and the Pawsey Supercomputing Research Centre, keep their data in large file systems while more and more tools expect S3.
MinIO had covered that need with a NAS gateway that put an S3 API on a file system. In February 2022 it deprecated all its gateways, saying features such as versioning and object locking couldn’t work in gateway mode, and in October 2022 it removed the code, telling users to stay on old releases if they wanted it.
Versity started versitygw in 2023 as an Apache 2.0 project to meet what it called “the community’s need for a reliable open source, high-performance object to file translation tool”. It is written in Go and ships as a single binary. The first tagged release, v0.1, came out in June 2023 and v1.0.0 in June 2024.
Why it’s built this way
- Map object keys straight to file paths
- Data stays usable by
ls,rsync, backup software and HPC jobs without going through the gateway, and there is no proprietary on-disk format to get locked into. - Keep S3 metadata in extended attributes
- Metadata travels with each file, so there is no separate database to run, replicate or back up.
- Stateless gateways
- Any instance can serve any request, so throughput and availability grow by adding gateways behind a load balancer, with no state to synchronise.
- Pluggable backends
- The same S3 front end can serve POSIX file systems, ScoutFS, Azure Blob Storage, another S3 service or a custom plugin.
Timeline
- 2011
Versity founded by Bruce Gilpin and Harriet Coverston
- 2022
MinIO deprecates its gateways (February) and removes them (October)
- 2023
versitygw v0.1 released in June
- 2024
v1.0.0 released in June
- 2026
v1.8.0 released in September
Sources18 · facts checked 5 October 2026
- Versity S3 Gateway product page
- versity/versitygw on GitHub
- versitygw wiki: Key features
- versitygw wiki: POSIX backend
- versitygw wiki: POSIX metadata
- versitygw wiki: POSIX transparent namespace
- versitygw wiki: Load balancing
- versitygw wiki: S3 API reference
- versitygw wiki: Differences from AWS S3
- versitygw wiki: Event notifications
- versitygw wiki: System requirements
- versitygw wiki: Docker
- versitygw wiki: Quickstart
- MinIO RELEASE.2022-10-29T06-21-33Z: gateway removed
- MinIO blog: Deprecation of the MinIO gateway (2022)
- rclone: Amazon S3 and compatible storage
- rclone sync
- rclone check