Skip to main content
SQLite stores use an embedded database via Drizzle ORM for higher concurrency and better query performance. All stores share the same database file (.polpo/state.db).

What’s Included

When storage: "sqlite" is set, Polpo creates all 11 stores via @polpo-ai/drizzle:
StorePurpose
TaskStoreTasks and missions
RunStoreExecution run history
SessionStoreChat sessions and messages
LogStorePersistent event log
MemoryStoreProject context memory
ApprovalStoreApproval gate requests
NotificationStoreNotification records
PeerStoreChannel gateway peers
CheckpointStoreMission checkpoints
DelayStoreMission delays
ConfigStoreKey-value metadata
All stored in a single .polpo/state.db file.

Pros and Cons

Pros: Safe concurrent access, transactional integrity, better performance at scale, same Drizzle interface as PostgreSQL. Cons: Requires better-sqlite3 and @polpo-ai/drizzle dependencies. Database file is not human-readable.

When to Use

ScenarioRecommended?
Multiple concurrent orchestratorsYes
CI/CD pipelinesYes
Large task sets (100+ tasks)Yes
Want to migrate to PostgreSQL laterYes — same Drizzle interface
Getting started / single userOptional — File is simpler

Configuration

Set the storage backend in .polpo/polpo.json:
{
  "settings": {
    "storage": "sqlite"
  }
}
That’s it. Polpo creates the database and all tables automatically on startup.