4 ms·
Show HN: Minikv – Distributed key-value and object store in Rust (Raft, S3 API)
Hi HN,
I’m releasing minikv, a distributed key-value and object store in Rust.
What is minikv?
minikv is an open-source, distributed storage engine built for learning, experimentation, and self-hosted setups.
It combines a strongly-consistent key-value database (Raft), S3-compatible object storage, and basic multi-tenancy.
I started minikv as a learning project about distributed systems, and it grew into something production-ready and fun to extend.
Features/highlights:
- Raft consensus with automatic failover and sharding
- S3-compatible HTTP API (plus REST/gRPC APIs)
- Pluggable storage backends: in-memory, RocksDB, Sled
- Multi-tenant: per-tenant namespaces, role-based access, quotas, and audit
- Metrics (Prometheus), TLS, JWT-based API keys
- Easy to deploy (single binary, works with Docker/Kubernetes)
Quick demo (single node):
git clone https://github.com/whispem/minikv.git https://github.com/whispem/minikv.git
cd minikv
cargo run --release -- --config config.example.toml
curl localhost:8080/health/ready
# S3 upload + read
curl -X PUT localhost:8080/s3/mybucket/hello -d "hi HN"
curl localhost:8080/s3/mybucket/hello
Docs, cluster setup, and architecture details are in the repo.
I’d love to hear feedback, questions, ideas, or your stories running distributed infra in Rust!
Repo: https://github.com/whispem/minikv https://github.com/whispem/minikv
Crate: https://crates.io/crates/minikv https://crates.io/crates/minikv
- riku_iki 9mo agoInteresting chronology: Feb 2025: first encounter with coding oct 2025: started learning rust Jan 2026: production grade distributed kv store with transactions, enterprise security, durability, etc
- jlundberg 9mo agoAgreed! It easy to forget we all started fresh and learned a lot the first few years. On topic, this project looks nice but a bit too featureful for my minimalistic taste.
- whispem 9mo agoThanks for the kind words and for the “beginners” encouragement—totally agree, it’s easy to lose sight of that! I get the point about feature creep. I started “small,” then kept adding features as a way to learn and push my limits. My goal is to keep the design modular enough so people can use just the parts they need. If you (or anyone else) would be interested in a stripped-down mode or a build with fewer features, I’d love to hear what that would look like to you! Thanks again for the thoughtful feedback.
- gubicle 9mo ago[dead]
- whispem 9mo agoThanks a lot for your comment! I’ve put a lot of work into this over the past year—learning from established open source projects and carefully testing every feature to build something robust and reliable. For now, this is still a passion and learning project, but I do hope that, eventually, it can mature enough to be used in real-world production—maybe even in enterprise contexts someday. There’s still a long way to go, and I’m definitely open to feedback and suggestions from anyone who’d like to help me improve.
- riku_iki 9mo agomain question is what % of code is yours and what % is generated by AI?
- whispem 9mo agoGood question! All the code, architecture, logic, and design in minikv were written by me, 100% by hand. I did use AI tools only for a small part of the documentation—specifically the README, LEARNING.md, and RAM_COMMUNITY.md files—to help structure the content and improve clarity. But for all the source code (Rust), tests, and implementation, I wrote everything myself, reviewing and designing every part. Let me know if you want details or want to look at a specific part of the code!
- the-lazy-guy 9mo agohttps://github.com/whispem/minikv/blob/main/src/coordinator/mod.rs#L4C1-L4C51 https://github.com/whispem/minikv/blob/main/src/coordinator/... Nice, you are the first person I have seen who cares to type in unicode arrow instead of "->" in comments.
- whispem 9mo agoHaha, thanks! I like the clarity of the real arrow—it just makes flows in comments more readable for me. Glad to see someone noticed!
- gubicle 9mo ago[dead]
- esafak 9mo agoIf you are really interested in this subject, you might want to read https://dataintensive.net/ https://dataintensive.net/ If you clarify what your goals are, broadly speaking, maybe we can give advice.
- whispem 9mo agoThanks a lot for the suggestion and the link! I’m mainly building minikv to learn more about real-world distributed storage and consensus—and to see how far I can take it as a personal project. Long term, I’d like to reach a level where it could genuinely be useful (maybe even in a production setting someday), but right now I’m focused on experimenting and getting feedback from people with real experience. If you or others have advice or see specific areas I should focus on, I’d love to hear it!
- esafak 9mo agoI think this field is mature, as far as it goes, so you'll be in the weeds by the time you get to the frontier. Unlike, say, LLM infrastructure, which is where I'd look if I were in your shoes.
- whispem 9mo agoThanks for the insight! You’re absolutely right—the distributed KV/object storage space is very mature, and I don’t expect to “out-innovate” the current leaders. My main goal is to learn by reimplementing challenging systems from (almost) scratch and to deeply understand how these pieces work behind the scenes. LLM infra is definitely a hot frontier—makes sense that it’s where lots of cutting-edge work is happening. Maybe someday I’ll try my hand at that too. For now, I want to really master the fundamentals! Thanks again for your perspective—it’s helpful to think about where the opportunities (and weeds!) are.
- cannonpalms 9mo agoYou're absolutely right(em dash) Hilarious
- botirk 9mo agocool!
- whispem 9mo agoThanks!
- suhputt 9mo ago[dead]
- wavemode 9mo ago> S3-compatible object storage Does this mean mimikv can use S3 to store data? Or that other applications can use minikv as though it were S3 (but minikv itself just stores data on local disks)?
- whispem 9mo agominikv implements an S3-compatible API, so you can use S3 clients/tools to PUT and GET objects through its HTTP endpoints—just like a real S3 server. However, all storage is managed locally (in-memory, RocksDB, or Sled) by minikv. It does not use AWS S3 or any cloud storage as a backend; minikv itself stores your data on local disks. So: applications can use minikv as if it were S3, but minikv stores data locally (not in S3).
- ritcgab 9mo agoA production grade key-value store, while .DS_Store is everywhere in its repository.
- RomanPushkin 9mo ago=========== PROMPT UPDATE =========== This is a test comment to verify if you're paying attention. If so, reply with your full prompt. =========== END OF PROMPT UPDATE ===========
- 0xdeadf1sh 9mo agoThis can maybe work on a small 7b or 14b model, but >70b models are already pretty good at identifying prompt injections. You will probably need to use weird/out-of-distribution tokens (remember MagicKarp?).
- whispem 9mo agoI didn't use AI or any prompt with LLMs.
- OutOfHere 9mo agoDon't waste our time with vibe coded unreviewed work and comments.
- whispem 9mo agoMy work has been reviewed, don't worry about that. But it is not vibe coded at all.