Bunkr is a distributed file system that splits, encrypts and replicates your files across a 5-node cluster. Kill any 2 nodes — your data still survives. Zero-knowledge. Single Go binary, now with a terminal-native CLI.
Bunkr now ships with a terminal-native client. Upload, encrypt, replicate, kill nodes, and watch the cluster think — all from your shell. No browser required.
A single command to upload, encrypt, replicate, and commit files to your cluster. Works over SSH, in CI pipelines, or from a tmux pane. No browser needed.
Every file you commit moves through a four-stage pipeline. Each stage is observable, every transition is logged to the WAL, and the cluster never serves a chunk it can't verify.
Files stream through a 4MB chunker. Content-addressable — identical chunks dedupe automatically.
Per-chunk keys derived via HKDF, sealed with AES-256-GCM. The server never sees your master key.
Leader fans chunks to 5 followers over gRPC. Quorum-acknowledged before commit returns.
Binary WAL with CRC32, fsynced before ack. Crash-safe — replay reconstructs state exactly.
Whatever you're doing — debugging consensus visually, scripting backups, or wiring Bunkr into a service — there's an interface that fits.
Real-time cluster visualization — leader election, kill/revive controls, encrypted upload pipeline, WebSocket event stream.
Single Go binary. Scriptable. Works over SSH, in CI, from a tmux pane.
JSON over HTTPS for control, WebSocket for the event firehose.
~7,000 lines of Go. No off-the-shelf consensus library — leader election, log replication, and snapshotting implemented from the extended paper. The hard parts, by hand.
Leader election, log replication, and snapshot install — all implemented from the extended Raft paper. Survives split-brain and clean leader handoffs.
Master key never leaves the client. Per-chunk keys derived via HKDF, AES-256-GCM seals each chunk with its own nonce and AEAD tag.
Chunks keyed by SHA-256 of plaintext. Identical bytes deduplicate across the cluster automatically. Nothing stored twice.
Every state mutation appends to a write-ahead log with a length-prefixed binary frame and CRC32. Crash mid-write? Replay drops the torn record and resumes.
Mutual-TLS gRPC between nodes. Streaming replication, backpressure-aware, with codegen'd protobuf schemas for every RPC.
WebSocket firehose of every cluster event — heartbeats, vote requests, AppendEntries, commits, kills. Watch the cluster think.
5 replicas. 3-node quorum. Lose any two — the cluster is still readable, writable, and consistent. Bring the dead nodes back and they catch up automatically via snapshot install + log replay.
The dashboard ships with two distinct moods. One quiet, one loud. Same data — pick the one you'd rather stare at all day.


One command in your terminal. No browser, no config, no signup.