Paravon is a leaderless, peer‑to‑peer distributed key-value database designed to provide predictable data evolution, deterministic convergence, and secure communication across all nodes. It relies on a consistent‑hashing ring for partitioning and replication, and maintains a clear, deterministic ordering of updates for each key. Paravon’s leaderless architecture allows it to scale horizontally to thousands of nodes and operate efficiently behind standard load balancers using round‑robin or similar strategies. Any node can serve client requests, and the system naturally distributes load without requiring coordination or a central authority.
Paravon offers:
- Deterministic, conflict‑free convergence
- Leaderless replication across a consistent‑hashing ring
- Hinted handoff with preserved update ordering
- Horizontal scalability to large clusters
- Compatibility with standard load balancers
- A binary‑safe, self‑describing protocol
- Mandatory mutual TLS for all communication
- A lightweight, deterministic update model
Install with pip or your favorite PyPI package manager.
pip install paravonPython 3.14+ is required.
Run the following to test Paravon output on your terminal:
paravon --help
paractl --helpcurl -LO https://github.com/mistersouls/paravon/releases/download/0.0.1.dev0/generate-cert.sh
chmod +x generate-cert.shThis script use OpenSSL CLI
./generate-cert.sh ca./generate-cert.sh server nodes/node-1 node-1 "" 127.0.0.1./generate-cert.sh client clients/user-1 user-1mkdir -p nodes/node-1/data
echo '
node:
id: node-1
server:
api:
port: 2001
peer:
port: 6001
tls:
cafile: ./ca/ca.crt
keyfile: ./nodes/node-1/server.key
certfile: ./nodes/node-1/server.crt
storage:
data_dir: ./nodes/node-1/data
' > nodes/node-1/paranode.yamlA full configuration template is available here: https://raw.githubusercontent.com/mistersouls/paravon/refs/heads/main/paranode.yaml
mkdir -p clients/user-1
echo '
current-context: dev
contexts:
dev:
server: 127.0.0.1:2001
tls:
ca: ./ca/ca.crt
cert: ./clients/user-1/client.crt
key: ./clients/user-1/client.key
client:
client_id: user-1
timeout: 5s
' > clients/user-1/paraconf.yamlA full configuration template is available here: https://raw.githubusercontent.com/mistersouls/paravon/refs/heads/main/paraconf.yaml
paravon --config nodes/node-1/paranode.yamlParavon listens on:
- 2001 → Client
- 6001 → Admin
To change ports, edit paranode.yaml.
paractl --paraconf ./clients/user-1/paraconf.yaml \
--server 127.0.0.1:6001 \
admin node-statusparactl --paraconf ./clients/user-1/paraconf.yaml \
put users/souls '{"username": "souls"}'paractl --paraconf ./clients/user-1/paraconf.yaml \
get users/soulsparactl --paraconf ./clients/user-1/paraconf.yaml \
delete users/soulsparactl --paraconf ./clients/user-1/paraconf.yaml \
get users/souls