Dbos.Transact.Cli 0.0.0-alpha.0.47

This is a prerelease version of Dbos.Transact.Cli.
dotnet tool install --global Dbos.Transact.Cli --version 0.0.0-alpha.0.47
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Dbos.Transact.Cli --version 0.0.0-alpha.0.47
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Dbos.Transact.Cli&version=0.0.0-alpha.0.47&prerelease
                    
nuke :add-package Dbos.Transact.Cli --version 0.0.0-alpha.0.47
                    

dbos-transact-csharp

A C#/.NET port of dbos-transact-java — a lightweight durable-workflow library built on top of a relational database.

Status: alpha (0.0.0-alpha.x) — published to NuGet for early testing. The API closely mirrors the Java reference implementation.

What DBOS Transact gives you

  • Durable workflows checkpointed to the database, with automatic resume-on-restart.
  • Durable queues with no external broker.
  • Scheduled execution — cron and long durable sleeps.
  • Workflow events and notifications with exactly-once delivery.
  • Async workflow handles with status polling and result retrieval.
  • Admin HTTP endpoints and conductor (WebSocket) protocol parity with the other DBOS runtimes.

Quick Start

Install

dotnet add package Dbos.Transact --version 0.0.0-alpha.0.43
dotnet add package Dbos.Transact.Postgres --version 0.0.0-alpha.0.43

Or use SQLite for a zero-dependency local setup:

dotnet add package Dbos.Transact --version 0.0.0-alpha.0.43
dotnet add package Dbos.Transact.Sqlite --version 0.0.0-alpha.0.43

Declare steps and a workflow

using Dbos.Transact.Workflow;

// Steps — durable, checkpointed on each call
public interface IMySteps
{
    [Step] Task<string> FetchDataAsync(string url);
    [Step] Task SaveResultAsync(string data);
}

public sealed class MySteps : IMySteps
{
    public async Task<string> FetchDataAsync(string url) { /* ... */ }
    public async Task SaveResultAsync(string data) { /* ... */ }
}

// Workflow — resumes from the last completed step after a crash
public interface IMyWorkflow
{
    Task RunAsync(string url);
}

public sealed class MyWorkflow(IMySteps steps) : IMyWorkflow
{
    [Workflow]
    public async Task RunAsync(string url)
    {
        var data = await steps.FetchDataAsync(url);
        await steps.SaveResultAsync(data);
    }
}

Register, launch, and run

using Dbos.Transact;
using Dbos.Transact.Sqlite;

await using var dbos = Dbos.Builder("my-app")
    .UseSqlite("Data Source=myapp.db")
    .Build();

var stepProxy = dbos.RegisterProxy<IMySteps>(new MySteps());
dbos.RegisterProxy<IMyWorkflow>(new MyWorkflow(stepProxy));

await dbos.LaunchAsync();

var handle = await dbos.StartWorkflowAsync<object?>(
    workflowName: nameof(MyWorkflow.RunAsync),
    className: typeof(MyWorkflow).FullName,
    instanceName: null,
    args: ["https://example.com"]);

await handle.GetResultAsync();

With Microsoft.Extensions.Hosting:

services.AddDbos("my-app", builder => builder.UsePostgres(connectionString));
services.AddDbosWorkflow<IMySteps, MySteps>();
services.AddDbosWorkflow<IMyWorkflow, MyWorkflow>();
// Or auto-register every [Workflow]/[Step]/[Scheduled]-bearing type in an assembly:
// services.AddDbosWorkflowsFromAssembly(typeof(Program).Assembly);

For a full walkthrough see docs/raw/csharp-programming-guide.md.

Packages

NuGet Role
Dbos.Transact Core — dialect-agnostic. [Workflow] / [Step] / [Scheduled] surface, executor, registries, portable serializer, migrations.
Dbos.Transact.Postgres Npgsql-backed Postgres dialect. LISTEN/NOTIFY, SKIP LOCKED, advisory locks.
Dbos.Transact.Sqlite Microsoft.Data.Sqlite-backed dialect. First-class production target for small single-host projects; Litestream is the documented backup path.
Dbos.Transact.Hosting Microsoft.Extensions.Hosting integration — services.AddDbos(…) + AddDbosWorkflow<TInterface, TImpl>().
Dbos.Transact.SemanticKernel Microsoft Semantic Kernel bridge. kernel.AddDbosPlugin(dbos, tools) checkpoints every [Step]+[KernelFunction] tool invocation; kernel.AddDurableChatCompletion(dbos) checkpoints every LLM turn. Together they let an agent loop replay end-to-end without re-spending tokens or re-firing tool side effects.
Dbos.Transact.Cli System.CommandLine-based CLI (migrate, reset, workflow).

Target framework

net8.0 (current LTS). Multi-targeting net10.0 can be added later if there is demand.

Documentation

Upstream references

License

MIT

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.0.0-alpha.0.47 70 5/5/2026
0.0.0-alpha.0.43 57 5/4/2026
0.0.0-alpha.0.42 54 5/4/2026
0.0.0-alpha.0.40 65 5/3/2026
0.0.0-alpha.0.35 61 5/2/2026