I’m sharing the alpha release of S2C, a state machine replication system built atop S3.
The goal is to enable a distributed application to maintain consistent state without needing a quorum of nodes for availability or consistency.
The idea came from a side project that was using S3 and where I needed strongly consistent distributed state but wanted to avoid adding a separate consensus dependency. I initially tried to use S3 directly for coordination, but it became messy. Eventually, I realized I need a replicated state machine with a deterministic log, and then it ended up as a standalone project.
To mitigate S3's latency and API costs, it uses time- and size-based batching by default.
S2C supports: - Linearizable reads and writes (with single node) - Exactly-once command semantics (for nodes with stable identities) - Dynamic node joins and cold-start recovery from zero nodes - Split-brain safety without clocks or leases - Snapshotting, log truncation, etc.
Of course, it trades latency and S3 operation costs for operational simplicity - not meant to replace high-throughput Raft rings. And clearly, only usable in architectures that already use S3 (or compatible with similar guarantees).
It has passed chaos/fault-injection tests so far (crashes, partitions, leader kills); formal verification planned.
It’s still alpha, but I’d love for people to try it, experiment, and provide feedback.
If you’re curious, the code, and an extensive deep dive guide are here: [https://github.com/io-s2c/s2c]