Show HN: CallFS – S3-style object store in one Go binary (MIT)
66 points| ebogdum | 7 months ago |github.com
So we wrote a single-process file service in Go that: • Speaks the S3 API (so existing tooling works). • Stores hot data on local disks for speed; cold data can sit in any S3-compatible bucket. • Exposes Prometheus metrics and JSON logs by default, because “what happened?” shouldn’t be guesswork. • Ships as a ~25 MB static binary—no external deps, MIT license.
Today it’s stable for single-node or side-by-side deployments. Clustering is on the roadmap, replication will follow, but we wanted to share the code early and hear real-world pain points. If storage glue code ever ruined your weekend, we’d love feedback and PRs.
TheDong|7 months ago
Let's test that lol.
First, I looked at the docker compose file, seems like an easy way to run it right? Wrong, the docker compose file just runs minio, a real s3 compatible thing: https://github.com/ebogdum/callfs/blob/16e1096095c809f31aa93...
Why check in a docker-compose that only runs someone else's code, not your own project?
Okay, fine, let's run it normally:
Okay, fine, your example config doesn't work with an inscrutable error.But running it without a config flag works, so let's do that:
Let's see if it's really s3 compatible now: "404" is not the response AWS gives to a make bucket request.Reading the actual docs, this is _not_ s3 compatible, not even close. So much for "Speaks the S3 API".
Just use minio, or one of the other actually functioning things in this space.
mdaniel|7 months ago
And it would have been better if in your "static binary" sentence you had included its dependence upon both PostgreSQL and Redis
jasonjmcghee|7 months ago
Would be interested to hear if this was built by OP or vibe-coded.
ebogdum|7 months ago
As for the "speaks the S3 API", the idea is that this has two backends right now, Local File System and any S3 compatible API, like AWS S3, MinIO, DigitalOcean Object Storage ... and so on. In other words you can use them all at the same time, provided you have an instance for each.
But you did give me an idea, as to the fact that I need to add some directory/bucket discovery for existing files.
Thank you very much for your feedback.
MOARDONGZPLZ|7 months ago
unknown|7 months ago
[deleted]
techn00|7 months ago
ebogdum|7 months ago
MOARDONGZPLZ|7 months ago
CONTRIBUTING :handshake-emoji:
CORE FEATURES :apple-core-emoji:
dawnerd|7 months ago
sivchari|7 months ago
cowboyscott|7 months ago
mt42or|7 months ago
ebogdum|7 months ago
Thanks for sharing your thoughts.