Voodoo Store
Application infrastructure in a store.
Voodoo Store is a standalone, 100% Rust embedded application-state engine built around one goal:
A Voodoo application should be able to run robustly with Voodoo + Voodoo Store and no mandatory external infrastructure by default.
It is being built for the Voodoo ecosystem, but the core is not coupled to Voodoo Framework. The engine and .vstore format are designed to remain language-neutral and independently usable.
SQLite made the database a file. Voodoo Store aims to make application infrastructure a store.
Status
Current published Python binding: v0.2.2. Core and bindings remain pre-1.0.
Voodoo Store is pre-1.0, but the Rust core and the published Python binding are already suitable for controlled single-node development and production experiments where the current compatibility and operational limits are understood. The next integration line is 0.3 Native Surface Convergence: exposing more of the existing Rust primitives directly to Python and Voodoo rather than reimplementing them over KV.
The current engine includes:
- versioned, checksummed
.vstorefiles and strong persistent Store identity; - checksummed append-only logging, atomic transactions and deterministic crash recovery;
- Linux/macOS/Windows single-writer locking and explicit durability modes;
- byte-oriented KV, CAS, counters, prefix scans and TTL;
- Collections with schema/codec metadata and secondary/unique indexes;
- durable Queues with leases, delay, priority, retry/NACK, dead state and stale-ACK protection;
- durable Jobs with 128-bit IDs, idempotency, retry/backoff, deadlines and execution history;
- one-shot, interval and deterministic UTC Cron scheduling;
- durable Triggers;
- Topics, Streams, replay, durable subscriptions and Consumer Groups;
- durable request/reply correlation and RPC state;
- transactional Outbox events;
- content-addressed SHA-256 object storage, deduplication, verification, references and orphan GC;
- durable Workflow/HITL state with waits, signals, timers and history;
- verify, backup, create-only restore, logical snapshots and compact-copy;
- structured health/storage accounting;
- standalone
voodoo-storeCLI; - C ABI v2 foundation with transactions,
last_errorand panic containment; - deterministic corruption, torn-write and process-crash testing;
- CI across Format, Clippy, Linux, macOS, Windows and Rust 1.85 MSRV.
This is not yet a production 1.0. File/API compatibility should still be considered pre-1.0, and important data should be backed up before upgrading experimental deployments.
Start here
Build and test:
cargo build --workspace
cargo test --workspace
Run the executable application-state example:
cargo run -p voodoo-store-core --example application_state -- application.vstore
The example commits application state, a durable Job and an Outbox Event through one transaction:
BEGIN
PUT order:42:status = paid
ENQUEUE JOB email.send_receipt(order:42)
EMIT EVENT order.paid(order:42)
COMMIT
If that transaction does not commit, none of those staged mutations become visible after recovery.
See docs/QUICKSTART.md for the full walkthrough.
North Star
The standard Voodoo deployment is intentionally small:
Application
|
+-- Voodoo Runtime
|
`-- application.vstore
A normal application should not need Redis, PostgreSQL, RabbitMQ, Kafka, Celery, a separate cron service, or a separate local object service merely to get robust application infrastructure.
External infrastructure remains available as optional adapters when scale or deployment topology genuinely requires it.
Architecture
Applications / Frameworks
|
+-- Voodoo Runtime / Framework
+-- Rust
+-- C / native bindings
+-- Python binding
+-- future Node / Go / Swift bindings
|
Stable APIs / bindings
|
voodoo-store-core
|
+-- Data: KV / TTL / Collections / Indexes
+-- Work: Queues / Jobs / Scheduler / Cron / Triggers
+-- Messaging: Topics / Streams / Consumer Groups / RPC / Outbox
+-- Objects
+-- Workflow state
+-- Operations / health / lifecycle
|
Transaction / Commit Layer
|
Append-only Checksummed Log
|
Recovery / Verification
|
Versioned .vstore Header
|
Filesystem + File Locking
The Store persists durable semantics. Voodoo Runtime executes application code, HTTP handlers, AI inference, external calls and Identity/Auth behavior.
Cross-domain transactions
A major Voodoo Store goal is to remove the split-brain normally created by a database plus external work infrastructure.
Current typed transaction primitives already allow application state, Jobs, Outbox Events and durable RPC Requests to share a Store transaction.
use voodoo_store_core::{JobSpec, Store};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut store = Store::open("application.vstore")?;
let mut tx = store.begin()?;
tx.put(b"order:42:status", b"paid")?;
tx.enqueue_job(JobSpec::new(b"email.send_receipt", b"order:42"), 1_000)?;
tx.emit_event(b"order.paid", b"order:42", 1_000)?;
tx.request_rpc(b"payments.capture", b"order:42", 1_000, Some(31_000))?;
tx.commit()?;
Ok(())
}
The public cross-domain transaction surface will continue expanding to additional primitives before 1.0.
Durability
use voodoo_store_core::{Durability, Store, StoreOptions};
let store = Store::open_with_options(
"application.vstore",
StoreOptions {
durability: Durability::Strict,
repair_torn_tail: true,
},
)?;
Strictusessync_all()on commit.Datausessync_data()on commit and is the default.Relaxedrelies on later operating-system flushing.
Only an incomplete physical tail is automatically repairable. Corruption inside the durable prefix is surfaced as an error rather than silently discarded.
Current good-fit workloads
The current pre-1.0 line is a reasonable target for controlled use in:
- Voodoo Runtime development;
- SaaS/internal-tool prototypes and early deployments;
- desktop/local-first applications;
- AI agent and automation state;
- edge gateways and robotics controllers;
- single-node APIs that want durable Jobs/Queues without deploying an infrastructure stack.
Pin the exact Store version and keep backups for important pre-1.0 stores.
Known pre-1.0 limits
The main remaining work before a 1.0 claim includes:
- continuous fuzzing and long-running durability soak tests;
- filesystem/power-loss proof for generation activation and stronger repair tooling;
- completing Python/native convergence for cross-domain transactions;
- migrating Voodoo Framework compatibility adapters onto the native messaging/object/query surfaces;
- richer Collection migration/composite-index/query-planner support and physical ordered range seeks;
- live-query/watch convenience APIs above the durable change feed;
- quotas, richer metrics and tracing;
- streaming object I/O and lifecycle policies;
- complete C ABI coverage and additional first-class language bindings;
- encryption-at-rest/key-rotation design;
- later replication/sync and Voodoo Protocol integration.
Store Studio and distributed operation are later milestones and do not block controlled single-node use.
CLI
The workspace includes the standalone voodoo-store binary. Examples:
cargo run -p voodoo-store-cli -- put application.vstore hello world
cargo run -p voodoo-store-cli -- get application.vstore hello
cargo run -p voodoo-store-cli -- health application.vstore
cargo run -p voodoo-store-cli -- verify application.vstore
cargo run -p voodoo-store-cli -- backup application.vstore application.backup.vstore
The CLI also exposes lifecycle, Queue, Collection, Messaging, Object, Job, Scheduler, Cron, Trigger and Workflow operations. See docs/QUICKSTART.md for usage guidance.
C ABI
voodoo-store-ffi is the portability foundation for non-Rust bindings. The current ABI includes Store handles, KV operations, buffered transactions, thread-local last_error reporting and panic containment. Higher-level primitive coverage is still expanding before the ABI is considered complete.
Public header:
include/voodoo_store.h
Workspace
crates/
voodoo-store-core/ # correctness-critical embedded engine
voodoo-store-ffi/ # C ABI portability layer
voodoo-store-cli/ # standalone inspection and operation CLI
include/
voodoo_store.h
docs/
ARCHITECTURE.md
SPEC.md
INVARIANTS.md
ROADMAP.md
QUICKSTART.md
Voodoo integration
Voodoo Framework/Runtime already consumes the published Python binding behind higher-level primitives while the engine stays independently usable. The 0.3 convergence work removes remaining compatibility implementations where the Rust core already has a native primitive.
Voodoo Model -> Store Collections / data
Voodoo @task -> Store Jobs / Queues
Voodoo Scheduler -> Store schedules / Cron
Voodoo events -> Store Topics / Streams / Outbox
Voodoo ObjectStore -> Store Objects
Execution / HITL -> Store Workflow state
Runtime Identity -> durable state persisted through Store
Identity/Auth semantics remain in Voodoo Runtime, not in Voodoo Store.
Compatibility principle
The lowest-level durable contract is bytes. Voodoo Store does not persist host-specific Python pickle, Java serialization, V8 objects or Go gob as its core format. Typed codecs and schemas are layered above the engine so a compatible Store can be accessed from multiple runtimes.
Development principle
Correctness comes before feature count and benchmarks:
SPEC
-> INVARIANTS
-> IMPLEMENTATION
-> TESTS
-> FAULT INJECTION
-> FUZZING
-> BENCHMARKS
-> OPTIMIZATION
License
Apache-2.0
Release files for voodoo-store 0.3.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 | |
|---|---|---|---|
| voodoo_store-0.3.0.tar.gz | 96.8 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| voodoo_store-0.3.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| voodoo_store-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| voodoo_store-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| voodoo_store-0.3.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
| voodoo_store-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl | CPython 3.9 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 3.5 MB
Release files / voodoo_store-0.3.0.tar.gz
| Download URL | voodoo_store-0.3.0.tar.gz |
|---|---|
| Size | 96.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d73a2f86a752ed13ea2d15782a75ff7eb87cf93b814424a3a7ba0951b6de6353
|
|
BLAKE2b-256 checksum How to use checksums |
065987ff7237dfe48ad727f347ee5e8f30cf24076edb579e158df3c315f3ab16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / voodoo_store-0.3.0-cp39-abi3-win_amd64.whl
| Download URL | voodoo_store-0.3.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 570.0 kB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
585460dfec5b3d5673a23e33e32d39802bcc8c9da1c1172584199a1273f73962
|
|
BLAKE2b-256 checksum How to use checksums |
21ade7c78b7e3f2c8e41467d8245fd82e222ada920689ffa00e018b5bf5f27f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / voodoo_store-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | voodoo_store-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 734.6 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
db4949a36c27fee1fc7db3fa6536a648b63a5b5b5328e49348acb571e65220af
|
|
BLAKE2b-256 checksum How to use checksums |
534c6f4f2685409eb479d4274801f6a9c39ac1a997ad34deccd08fee752b1ddb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / voodoo_store-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | voodoo_store-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 724.4 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
8aadeac26842cb55d7a57415d3bdab40cf2f405843d419ab5582ac99fd6c113c
|
|
BLAKE2b-256 checksum How to use checksums |
f9e5cb99b64b6388159601622ebd61360d4c1eee9550347b08d1a053e6be5b4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / voodoo_store-0.3.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | voodoo_store-0.3.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 657.7 kB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e6c7c498edc5839c4516657208d79b8aca91bc0045f091cc8cf5d9e749eb969a
|
|
BLAKE2b-256 checksum How to use checksums |
a22fe8dd48fa9fc30fdef2deffcfcc4abbedd601e94053124923590b764d33bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / voodoo_store-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | voodoo_store-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 687.7 kB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a0d69bb5129d81c76e79d63a3f6b7c58711d0773c24c817931e0346ee779a296
|
|
BLAKE2b-256 checksum How to use checksums |
6cee5763bfad156ff643cba254156af058fe46e0d9fc6375f0cc6d271329f2cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency log