<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/skein-a-self-hosted-s3-gateway-1ztem4oiv" -->

---
title: Skein, a self-hosted S3 gateway | daily.dev
description: Skein is an open-source, self-hosted S3-compatible gateway written in Go that sits in front of multiple cloud storage providers (Backblaze B2, Cloudflare R2,...
canonical: https://daily.dev/posts/skein-a-self-hosted-s3-gateway-1ztem4oiv
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Skein, a self-hosted S3 gateway | daily.dev
og:description: Skein is an open-source, self-hosted S3-compatible gateway written in Go that sits in front of multiple cloud storage providers (Backblaze B2, Cloudflare R2,...
og:url: https://daily.dev/posts/skein-a-self-hosted-s3-gateway-1ztem4oiv
og:image: https://api.daily.dev/og/posts/1zteM4oiv.png
og:image:alt: Skein, a self-hosted S3 gateway
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Skein, a self-hosted S3 gateway

**[Mani](https://daily.dev/sources/gr0hvpi805ho3dgwsywco)** · [@mani404](https://daily.dev/mani404) · 2 min read · 0 upvotes · 0 comments

## Summary

Skein is an open-source, self-hosted S3-compatible gateway written in Go that sits in front of multiple cloud storage providers (Backblaze B2, Cloudflare R2, S3, Wasabi, MinIO) and presents them as a single unified endpoint. It supports multiple routing strategies (round-robin, redundancy, file size and content-type rules), disk and Redis caching, a live dashboard, and a REST management API. The project was built as a Go learning exercise and aims to reduce egress costs by caching frequently accessed objects and enabling use of free tiers across multiple cloud providers.

## Content

I've been working on this project for a while.

**Skein** is a gateway that sits in front of multiple cloud storage providers — Backblaze B2, Cloudflare R2, S3, Wasabi, MinIO, whatever you use — and makes them look like one S3-compatible endpoint to the apps. You point your code at Skein, and it handles routing, redundancy, cache and usage tracking behind the scenes.

I'm not a Go developer by background but want to learn and explore. I work mostly in other languages, but for this particular tool, Go was made sense, easy to deploy, good concurrency primitives. So the code might not be the perfect, most idiomatic Go you've ever seen, but it works and all the tests pass. It's been a good learning experience honestly.

What it does right now:

- Has different routing strategies to use multiple object storages and different providers (s3-compatible) (round-robin, redundancy, file size rules, content-type rules, etc.)
- Disk + Redis caching layer
- Live dashboard and REST management API
- Works with any S3-compatible client out of the box

What it doesn't do yet — parallel listing across providers is there but multi-account migrations are still not the perfact but works.

if you're a Go person and spot something obviously wrong with the code, I'm genuinely open to feedback.

I have started this project for managing multiple object storage providers and manage fetching object storage data efficiently using cache, separatly, app independently. To reduce egress for common fetched and used objects.

And for using free tier from multi cloud storage providers and get some free space :| 😬

GitHub: [https://github.com/techgonia-devjio/skein](https://github.com/techgonia-devjio/skein)

it was fun to learn go and other things

## Similar posts on daily.dev

- [I Just Want Simple S3](https://daily.dev/posts/i-just-want-simple-s3-iiiloqzsw) · Lobsters · 1 upvotes · 0 comments

---

[View this post on daily.dev](https://daily.dev/posts/skein-a-self-hosted-s3-gateway-1ztem4oiv)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/skein-a-self-hosted-s3-gateway-1ztem4oiv","headline":"Skein, a self-hosted S3 gateway","text":"Skein is an open-source, self-hosted S3-compatible gateway written in Go that sits in front of multiple cloud storage providers (Backblaze B2, Cloudflare R2, S3, Wasabi, MinIO) and presents them as a single unified endpoint. It supports multiple routing strategies (round-robin, redundancy, file size and content-type rules), disk and Redis caching, a live dashboard, and a REST management API. The project was built as a Go learning exercise and aims to reduce egress costs by caching frequently accessed objects and enabling use of free tiers across multiple cloud providers.","url":"https://daily.dev/posts/skein-a-self-hosted-s3-gateway-1ztem4oiv","datePublished":"2026-03-12T07:54:41.449Z","dateModified":"2026-03-12T08:02:20.768Z","author":{"@type":"Person","name":"Mani","url":"https://daily.dev/mani404","image":"https://media.daily.dev/image/upload/s--O0TOmw4y--/f_auto/v1715772965/public/noProfile","description":"echo World::find(\"sw-engineer\")->where(\"skills\", \"best\")->get();\n // @mani404","worksFor":{"@type":"Organization","name":"Kreatif","logo":"https://media.daily.dev/image/upload/s--C46dCOxR--/f_auto/v1769005034/companies/kreatif"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":70}},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/gr0hvpi805ho3dgwsywco","name":"Mani"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Mani","item":"https://daily.dev/sources/gr0hvpi805ho3dgwsywco"},{"@type":"ListItem","position":3,"name":"Skein, a self-hosted S3 gateway"}]}
```

