Garage provides a comprehensive set of features designed for geo-distributed object storage. This page outlines the key capabilities that make Garage unique.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/deuxfleurs-org/garage/llms.txt
Use this file to discover all available pages before exploring further.
Core features
S3 API compatibility
The main goal of Garage is to provide object storage compatible with the S3 API from Amazon Web Services.Garage adheres as strictly as possible to the semantics of the API as implemented by Amazon and other vendors such as MinIO and Ceph.
Geo-distribution
Garage allows you to store copies of your data in multiple geographical locations to maximize resilience to adverse events such as:- Network outages
- Power failures
- Hardware failures
Consumer-grade infrastructure
Garage runs well even at home using consumer-grade Internet connectivity (such as FTTH) and power, as long as cluster nodes span several physical locations.
- Best exploits available storage capacity
- Satisfies geo-distributed replication constraints
Standalone and self-contained
Garage is extremely simple to deploy and doesn’t depend on any external service to run.Setting up and administering storage clusters is as easy as it could be—no databases, no coordination services, no external dependencies.
Flexible topology
A Garage cluster can easily evolve over time as storage nodes are added or removed. Garage automatically rebalances data between nodes to ensure the desired number of copies. Benefits:- Start small and grow as needed
- Remove failed or outdated nodes gracefully
- No manual data migration required
Multiple replication modes
Garage supports a variety of replication modes with:- Configurable replica count
- Various levels of consistency
- Adaptation to different usage scenarios
Storage optimizations
Compression and deduplication
All data stored in Garage is deduplicated and optionally compressed using Zstd. How it works:- Objects uploaded to Garage are chunked into blocks of constant size
- Hashes of individual blocks are used to:
- Dispatch them to storage nodes
- Deduplicate identical blocks
- Optional Zstd compression reduces storage requirements
No RAFT bottleneck
Garage doesn’t use RAFT or another consensus algorithm internally to order incoming requests. This means:- Parallel request handling: All requests can be handled independently
- No central bottleneck: No single leader node processing all requests
- Faster responses: Especially beneficial when latency between cluster nodes is significant
- Internet-friendly: Particularly useful when nodes communicate through standard Internet connections
Application features
Web server for static websites
A storage bucket can easily be configured to be served directly by Garage as a static website. Key capabilities:- Domain names directly map to bucket names
- Easy platform creation for users to autonomously build and host websites
- Inherited from AWS S3 (surprisingly not supported by MinIO or Ceph)
Bucket aliases
In Garage, a bucket may have several names, known as aliases.Easy renaming
Rename buckets without copying all content—something AWS can’t do
Multiple domains
Expose the same content under different domain names for static websites
Local aliases
Different users can have different buckets with the same name, avoiding collisions
S3 compatible
Feature is invisible to S3 clients and doesn’t break AWS compatibility
my-bucket without conflicts.
Administration features
Cluster administration API
Garage provides a fully-fledged REST API to administer your cluster programmatically. Functionality includes:- Setting up and monitoring cluster nodes
- Managing access credentials
- Managing storage buckets and bucket aliases
Metrics and traces
Garage makes internal metrics available in Prometheus data format, allowing you to:- Build interactive dashboards
- Visualize cluster load
- Monitor internal state
- Monitor time spent at various processing steps
- Detect potential performance bottlenecks
- Understand internal request handling
Infrastructure integration
Kubernetes and Nomad support
Garage can automatically discover other nodes in the cluster through integration with:- Kubernetes: Native service discovery
- Nomad: When used with Consul
This eases cluster configuration by removing manual node connection steps.
Dynamic IP address support
As long as all nodes don’t change their IP address simultaneously, Garage tolerates nodes with changing/dynamic IP addresses. How it works:- Nodes regularly exchange IP addresses with peers
- Automatic reconnection using newer addresses when connections break
- Particularly useful for home deployments with dynamic DNS
Experimental features
K2V API
Garage can expose an experimental key/value storage API called K2V. What it’s for:- Storage and retrieval of many small key/value pairs
- Bulk processing capabilities
- Metadata storage related to S3 objects