paxodin
A typed Python interface to the Paxos-Odin consensus engine. Synchronous sessions, asyncio, explicit durability, and errors that explain how to recover. Python 3.12+; no runtime Python dependencies.
Website · Book · API reference · Design records
Install
uv add paxodin
# Or: python -m pip install paxodin
Release wheels contain the native Odin library. Supported release targets are Linux x86-64, macOS 12+ on Apple Silicon, and Windows x86-64, tested on CPython 3.12, 3.13 and 3.14. Source builds require Odin dev-2026-09 or newer. Free-threaded Python and PyPy are not qualified. Check the wheel's manylinux tag for its Linux glibc floor.
Try three participants
from paxodin.testing import Cluster
with Cluster(3) as cluster:
receipt = cluster.append(b"set counter 41")
print(receipt.slot, receipt.value)
Cluster is an in-process, memory-backed test helper. It is not durable. For a
production participant, provide FileJournal, FileHistory, and an authenticated
transport to Session or AsyncSession; see the API guide.
What success means
An append receipt means this participant knows the command in its durable, contiguous released prefix. It does not mean your application has applied it or that every peer has received it. A timeout ends the wait; it cannot cancel a proposal that peers might choose. Use command ids and application deduplication when retrying.
The initial profile supports seven members, a 256-slot window, a 64-slot recovery chunk and 1,024-byte commands. The Python SDK supports fixed membership and single-leader replication. Reconfiguration, rotating ownership and learners are available in the Odin core but not exposed by this SDK release. Neither layer provides lease-based local reads.
Develop
From python/paxodin/ in the monorepo:
uv sync --locked
uv run pytest
uv run ruff check .
uv run mypy
Detailed documentation is maintained in Typst in the book and POD 0011. The API
reference is generated from Python docstrings. The separate paxodin CLI in
GitHub releases drives repository builds, tests, simulations and documentation;
installing the Python package does not install that executable.
Authors and license
Authored by Vikrant Rathore, with assistance from Ronak Rathore. Copyright © 2026 Vikrant Rathore and Ronak Rathore. Released under the MIT License.
Release files for paxodin 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| paxodin-0.2.0.tar.gz | 118.8 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| paxodin-0.2.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| paxodin-0.2.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| paxodin-0.2.0-py3-none-macosx_12_0_arm64.whl | Python 3 | none | macOS 12.0+ ARM64 | Details |
Total release size: 746.0 kB
Release files / paxodin-0.2.0.tar.gz
| Download URL | paxodin-0.2.0.tar.gz |
|---|---|
| Size | 118.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9de22fe79c61f02d0dab1b5b750c95519b95f8b52aa219647a8a9b613ff88e0d
|
|
BLAKE2b-256 checksum How to use checksums |
42ac222f81b43011a379bcbe4330c17a6858c932a1e26744057ff59d0734d984
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / paxodin-0.2.0-py3-none-win_amd64.whl
| Download URL | paxodin-0.2.0-py3-none-win_amd64.whl |
|---|---|
| Size | 269.8 kB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e132590196a2d90d36c3c4d610af7c88ca0140634614268fc85ac3f34385d69b
|
|
BLAKE2b-256 checksum How to use checksums |
0a7d180a573e2d1a71ada9d1ca6e56fc7140d169bff66a90b815f15b567c823c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / paxodin-0.2.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | paxodin-0.2.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 185.0 kB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
06cdc23e7f5626da2a06099f6cd0775902a0324505070bc794dc306115f12e67
|
|
BLAKE2b-256 checksum How to use checksums |
a045fef7831d026b2bc1c07b2085a0256eb635c6db5ed179ca5cc49f94e693db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / paxodin-0.2.0-py3-none-macosx_12_0_arm64.whl
| Download URL | paxodin-0.2.0-py3-none-macosx_12_0_arm64.whl |
|---|---|
| Size | 172.4 kB |
| Tags | Python 3 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
87993b152537dde89d48c7b3c9b366011e3518b3cead7fd59fe2b6b3068ada17
|
|
BLAKE2b-256 checksum How to use checksums |
ecbb7c763121fae0eade04cdbea4a7348ce964eb829f681e9600271a3953f557
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|