Skip to content

SQLite & Test Mode

Orch8 supports SQLite as a storage backend alongside PostgreSQL. This enables two use cases: lightweight local development and zero-dependency CI testing.

File-backed SQLite

Use SQLite for local development or small self-contained deployments. The same schema as PostgreSQL, the same engine binary.

# File-backed SQLite (WAL mode)
ORCH8_STORAGE_BACKEND=sqlite
ORCH8_DATABASE_URL=./orch8.db

./orch8-server --config orch8.toml

In-memory test mode

The engine exposes a test mode that uses an in-memory SQLite instance. No external dependencies. No setup. Runs in CI without Docker.

# Rust — use test_mode() in integration tests
let engine = Engine::test_mode().await;

// Register mock handlers
engine.registry().register("send_email", |ctx| async move {
    // Inspect ctx.params, return mock output
    Ok(json!({ "sent": true, "message_id": "mock-123" }))
});

// Run your sequence and assert state
let instance = engine.create_instance(req).await?;
engine.run_to_completion(instance.id).await?;

let state = engine.get_instance(instance.id).await?;
assert_eq!(state.status, InstanceState::Completed);

Signals, queries, cron, and all engine features work identically in test mode. The mock handler registry lets you stub external side effects without making real HTTP calls.