Use your existing database
Configure DurableStack to use your existing SQL provider.
services.AddDurableStack(options =>
{
options.UsePostgreSql(connectionString);
});
DurableStack is a background job runtime that uses your existing database to run deferred work, recurring jobs, and one-off tasks safely in distributed environments.
Execution is coordinated through your database, with lease-based distributed workers, retries, and built-in operational events for tracking what happens in production.
Start today with .NET. Other runtimes are planned for the future.
Configure DurableStack to use your existing SQL provider.
services.AddDurableStack(options =>
{
options.UsePostgreSql(connectionString);
});
Register recurring execution using cron syntax.
[DurableJob(Name = "email-dispatch", MaxAttempts = 3)]
[RecurringJob("* * * * *", TimeZone = "UTC")]
public sealed class EmailDispatchJob : IDurableJob
{
public async Task ExecuteAsync(EmailDispatchArgs args, JobContext context, CancellationToken cancellationToken)
{
// run the task
}
}
Hook DurableStack traces into your telemetry pipeline.
services.AddOpenTelemetry()
.WithTracing(builder => builder
.AddSource("DurableStack")
.AddOtlpExporter());
Queue a one-time job to run immediately.
await scheduler.EnqueueAsync(
new SendWelcomeEmailJob(userId));
Add tenant identity so telemetry can sync to hosted observability platform (app.durablestack.com).
services.AddDurableStack(options =>
{
options.TenantId = "tenant_123";
options.ClientSecret = "your-client-secret";
});
Trigger the same recurring job immediately when needed.
await scheduler.TriggerRecurringNowAsync(
"daily-summary");
We are actively shaping the Python SDK. It will include the same concepts as .NET: provider configuration, recurring jobs, one-off enqueue execution, and observability integration.
Switch to the .NET tab to see production-ready code examples available today.
The Node.js runtime is planned and will mirror the same programming model as .NET with provider setup, scheduling, one-off execution, and OpenTelemetry-first observability hooks.
Use the .NET tab today for concrete implementation examples while Node.js runtime support and TypeScript SDK guidance are in active development.
DurableStack is designed to keep background execution predictable, safe, and observable as your application scales.
Uses your existing SQL Server, Postgres, SQLite, or MySQL database to coordinate all job scheduling and execution. No external queue or state system required.
Multiple application instances can run safely at the same time. DurableStack ensures only one worker executes a job using lease-based coordination.
Failed jobs are automatically retried with controlled backoff. If a worker crashes mid-execution, jobs are safely reclaimed and re-run.
Cron-style recurring jobs are materialized into durable execution slots, ensuring consistent execution even in multi-worker environments.
Emit structured runtime events into OpenTelemetry, custom sinks, or the hosted observability dashboard. Use what fits your stack.
No Redis, no RabbitMQ, no separate scheduler service. Everything runs directly from your application database and scales with your existing infrastructure.
Using the optional observability platform, configure alert rules and be notified if anything unexpected happens, such as job failure, an instance going offline, or a long-running execution.
Works across SQL Server, PostgreSQL, SQLite, and MySQL with consistent execution semantics across all providers.
DurableStack doesn't just run background jobs, it gives you a live view into how those jobs behave in production.
As your system scales, you don't have to stitch together logging, metrics, and job state across multiple tools. Execution and observability stay connected through the same runtime model.
You can start with a single worker and a few jobs, and immediately see the same system state you would see in a distributed production environment.
Track runs, success rates, failures, and worker health across all projects and tenants.
Create rules that notify you when failures spike, workers go offline, or jobs start retrying.
Drill into job history, outcomes, durations, and errors to understand what's happening.
Organize by tenants and projects with fine-grained access and clear separation.
Get an overview of system health, job runs, and worker status in real time.
Create rules and get notified when failures spike, workers go offline, or issues occur.
See every job run, its status, attempts, duration, and any errors.
Manage tenants and projects with secure secrets and scoped access.
Click any image to view a larger screenshot.