PAXOS, FROM THE PAPER TO YOUR PROCESS

Agreement,
under uncertainty.

Messages arrive late. Machines restart. Decisions must endure. A bounded consensus engine in Odin, with an idiomatic Python interface.

MIT licensed · Odin + Python 3.12+ · v0.2.0

ONE SLOT. ONE DECISION.
A proposer sends a value to three voters; a quorum makes it chosen.propose(v)voter Avoter Bvoter Cpersisted ✓persisted ✓persisted ✓quorum → chosen
Messages may be lost.Agreement is preserved.
01 / ENGINE

Small state. Explicit effects.

Classic Paxos, Multi-Paxos and rotating ownership. Fixed-capacity storage, deterministic transitions, and a visible write-before-send contract.

02 / EXPERIENCE

Odin inside. Python outside.

Typed sessions, asyncio, owned bytes and errors that explain the next step. You choose the storage and authenticated transport.

03 / UNDERSTANDING

A library you can study.

Trace Lamport’s paper through diagrams, invariants and code. Inspect the design records and the limits of measured performance.

A SMALL FIRST EXPERIMENT

Three participants.
One ordered log.

Install the Python package with uv or pip. The in-process cluster below is memory-backed, for learning and tests. Production sessions use your journal, history and transport adapters.

Explore the Python API ↗
PYTHON paxodin
$ uv add paxodin

from paxodin.testing import Cluster

with Cluster(3) as cluster:
    receipt = cluster.append(b"hello, consensus")
    print(receipt.slot, receipt.value)

# 1 b'hello, consensus'

THE LIBRARY, OPEN

Go from intuition to implementation.

THE PAXODIN CLI

Your local project companion.

Build, test, simulate and generate documentation from a checkout.
The Odin import remains paxos.

Linux x86-64 ↗macOS · Apple Silicon ↗Windows x86-64 ↗Source tools need Odin; documentation commands also need Typst.