SingleRunner.ts
SingleRunner.ts overview
Section titled “SingleRunner.ts overview”Single-process cluster layer for durable entities and workflows. It wires
Sharding with no-op runner communication, no-op runner health checks,
SQL-backed message storage, environment-based sharding configuration, and
either SQL-backed or in-memory runner storage.
This layer is meant for local, embedded, or small single-node setups where the process handles all cluster work itself. It still requires a SQL client because mailbox messages and replies are stored in SQL.
Since v4.0.0
Exports Grouped by Category
Section titled “Exports Grouped by Category”layers
Section titled “layers”Provides a SQL-backed single-node cluster for running durable entities and workflows.
When to use
Use to run durable cluster entities and workflows in a local, embedded, or small single-node process while keeping mailbox and reply state in SQL.
Details
The layer provides Sharding, Runners, and MessageStorage. It loads
ShardingConfig from environment variables and overlays
options.shardingConfig when provided. Message storage is always SQL-backed;
runner storage is SQL-backed by default and switches to in-memory storage
when runnerStorage is set to "memory".
Gotchas
- Even when
runnerStorageis"memory", message storage remains SQL-backed, so callers must still provideSqlClient. - Runner communication and runner health are no-op services, so this layer is for single-process use rather than multi-runner coordination.
See
ShardingConfig.layerFromEnvfor loading environment configuration before applyingshardingConfigoverridesSqlMessageStorage.layerfor the SQL-backed message storage that this layer providesSqlRunnerStorage.layerfor the default SQL-backed runner storage selected whenrunnerStorageis omitted or"sql"RunnerStorage.layerMemoryfor the in-memory runner storage selected byrunnerStorage: "memory"
Signature
declare const layer: (options?: { readonly shardingConfig?: Partial<ShardingConfig.ShardingConfig["Service"]> | undefined readonly runnerStorage?: "memory" | "sql" | undefined}) => Layer.Layer<Sharding.Sharding | Runners.Runners | MessageStorage.MessageStorage, ConfigError, SqlClient.SqlClient>Since v4.0.0