Skip to main content

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.

Compatibility DisclaimerThe compatibility information for other S3-compatible platforms (OpenStack Swift, Ceph, Riak CS, OpenIO) is provided for informational purposes only and based on available documentation. This information may be inexact or outdated. For critical decisions, conduct your own testing.Last updated: May 25, 2022

Garage S3 Compatibility Status

Garage implements a substantial subset of the Amazon S3 API. All unimplemented endpoints return 501 Not Implemented. Some x-amz- headers are not implemented.

High-Level Features

FeatureGarage StatusNotes
Signature v4✅ ImplementedRecommended authentication method
Signature v2❌ MissingDeprecated by AWS
URL path-style✅ Implementedhost.tld/bucket/key
URL vhost-style✅ Implementedbucket.host.tld/key
Presigned URLs✅ ImplementedTemporary access links
SSE-C encryption✅ ImplementedCustomer-provided keys
Bucket versioning❌ MissingNot yet supported

Endpoint Implementation Status

Core Bucket & Object Operations

EndpointStatusNotes
CreateBucket✅ Implemented
DeleteBucket✅ Implemented
GetBucketLocation✅ Implemented
HeadBucket✅ Implemented
ListBuckets✅ Implemented
HeadObject✅ Implemented
GetObject✅ Implemented
PutObject✅ Implemented
CopyObject✅ Implemented
DeleteObject✅ Implemented
DeleteObjects✅ ImplementedBatch delete
ListObjects✅ ImplementedSee notes below
ListObjectsV2✅ Implemented
PostObject✅ ImplementedBrowser-based uploads
ListObjects Implementation NoteThe encoding-type=url parameter is implemented but may have edge cases. URL-encoded fields match ListObjectsV2 behavior.

Multipart Upload

EndpointStatusNotes
CreateMultipartUpload✅ Implemented
UploadPart✅ Implemented
UploadPartCopy✅ Implemented
CompleteMultipartUpload✅ Implemented
AbortMultipartUpload✅ Implemented
ListMultipartUpload✅ Implemented
ListParts✅ Implemented

Website Hosting

EndpointStatusNotes
PutBucketWebsite⚠️ PartialSee notes below
GetBucketWebsite✅ Implemented
DeleteBucketWebsite✅ Implemented
PutBucketWebsite LimitationsOnly stores the index document suffix and error document path. Redirect rules are not supported.

CORS (Cross-Origin Resource Sharing)

EndpointStatusNotes
PutBucketCors✅ Implemented
GetBucketCors✅ Implemented
DeleteBucketCors✅ Implemented

Lifecycle Management

EndpointStatusNotes
PutBucketLifecycleConfiguration⚠️ PartialSee notes below
GetBucketLifecycleConfiguration✅ Implemented
DeleteBucketLifecycle✅ Implemented
PutBucketLifecycleConfiguration LimitationsSupported actions:
  • AbortIncompleteMultipartUpload
  • Expiration (without ExpiredObjectDeleteMarker)
Not supported:
  • Versioning-dependent operations
  • Storage class transitions
  • Deprecated Prefix in Rule (use Filter instead)

Versioning

EndpointStatusNotes
GetBucketVersioning⚠️ StubAlways returns “not enabled”
PutBucketVersioning❌ MissingVersioning not supported
ListObjectVersions❌ MissingVersioning not supported
Bucket versioning is not yet supported in Garage. If you need this feature, please share your use case in Issue #166.

Access Control (ACLs & Policies)

Custom Permission SystemGarage does not implement AWS ACLs or bucket policies. Instead, it uses its own permission system based on per-access-key-per-bucket logic. Use the Garage CLI to manage permissions.
EndpointStatusNotes
PutBucketPolicy❌ MissingUse Garage CLI
GetBucketPolicy❌ MissingUse Garage CLI
DeleteBucketPolicy❌ MissingUse Garage CLI
GetBucketPolicyStatus❌ MissingUse Garage CLI
PutBucketAcl❌ MissingUse Garage CLI
GetBucketAcl❌ MissingUse Garage CLI
PutObjectAcl❌ MissingUse Garage CLI
GetObjectAcl❌ MissingUse Garage CLI

Replication

Replication is not currently supported. If you have a use case for replication, please open an issue on the Garage repository.
EndpointStatus
PutBucketReplication❌ Missing
GetBucketReplication❌ Missing
DeleteBucketReplication❌ Missing

Object Locking

Object locking (retention and legal hold) is not currently supported.

Bucket Encryption

Encryption RecommendationGarage does not implement server-side bucket encryption configuration. Instead:
  • Encrypt your server partitions at the storage level
  • Use client-side encryption
  • Use SSE-C (Customer-Provided Keys) for per-object encryption
If you have a specific use case for bucket-level encryption configuration, please open an issue.
EndpointStatus
PutBucketEncryption❌ Missing
GetBucketEncryption❌ Missing
DeleteBucketEncryption❌ Missing

Tagging

EndpointStatus
PutBucketTagging❌ Missing
GetBucketTagging❌ Missing
DeleteBucketTagging❌ Missing
PutObjectTagging❌ Missing
GetObjectTagging❌ Missing
DeleteObjectTagging❌ Missing

Notifications


Other Endpoints

EndpointStatus
GetObjectTorrent❌ Missing

AWS-Specific Features Not Implemented

The following AWS-specific endpoints are not implemented and are unlikely to be supported:
  • Bucket Analytics
  • Intelligent Tiering
  • Inventory Configuration
  • Metrics Configuration
  • Ownership Controls
  • Public Access Block
  • Transfer Acceleration
  • Request Payment
  • Logging
  • Object SELECT queries
  • Glacier/Archive operations

Using S3 Clients with Garage

Most S3-compatible clients work with Garage. Popular tools include:
  • AWS CLI - Official command-line tool
  • s3cmd - Feature-rich CLI client
  • rclone - Sync and backup tool
  • Minio Client (mc) - Modern CLI alternative
  • Cyberduck - GUI client (macOS/Windows)
  • WinSCP - GUI client (Windows)
For SDK integration, Garage works with:
  • AWS SDK for JavaScript/Node.js
  • AWS SDK for Python (boto3)
  • AWS SDK for Go
  • AWS SDK for Rust
  • AWS SDK for Java

Configuration Tips

  1. Set the endpoint URL to your Garage instance
  2. Configure signature version 4
  3. Disable SSL verification if using self-signed certificates in development
  4. Use path-style URLs if virtual-host style is not configured

Compatibility Testing

Garage’s S3 compatibility is continuously tested against common S3 clients and SDKs. However, some edge cases may not be covered. If you encounter compatibility issues:
  1. Check this compatibility matrix
  2. Search existing issues on the Garage repository
  3. Report the issue with:
    • Client/SDK name and version
    • Garage version
    • Request details and error messages
    • Minimal reproduction steps

Contributing

If you find errors in this compatibility matrix or have tested additional endpoints, please:
  1. Open a pull request on the Garage repository
  2. Update the compatibility documentation
  3. Include testing methodology and results
Help us keep this information accurate and up-to-date!

Build docs developers (and LLMs) love