| name | dbos-golang |
| description | Guide for building reliable, fault-tolerant Go applications with DBOS durable workflows. Use when adding DBOS to existing Go code, creating workflows and steps, or using queues for concurrency control. |
| type | skill |
| created | 2026-02-27T00:00:00.000Z |
| domain | software-development |
| category | languages |
| risk | safe |
| source | https://docs.dbos.dev/ |
| tags | ["skill","software-development","languages","dbos","golang"] |
DBOS Go Best Practices
Guide for building reliable, fault-tolerant Go applications with DBOS durable workflows.
When to Use
Reference these guidelines when:
- Adding DBOS to existing Go code
- Creating workflows and steps
- Using queues for concurrency control
- Implementing workflow communication (events, messages, streams)
- Configuring and launching DBOS applications
- Using the DBOS Client from external applications
- Testing DBOS applications
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|
| 1 | Lifecycle | CRITICAL | lifecycle- |
| 2 | Workflow | CRITICAL | workflow- |
| 3 | Step | HIGH | step- |
| 4 | Queue | HIGH | queue- |
| 5 | Communication | MEDIUM | comm- |
| 6 | Pattern | MEDIUM | pattern- |
| 7 | Testing | LOW-MEDIUM | test- |
| 8 | Client | MEDIUM | client- |
| 9 | Advanced | LOW | advanced- |
Critical Rules
Installation
Install the DBOS Go module:
go get github.com/dbos-inc/dbos-transact-golang/dbos@latest
DBOS Configuration and Launch
A DBOS application MUST create a context, register workflows, and launch before running any workflows:
package main
import (
"context"
"log"
"os"
"time"
"github.com/dbos-inc/dbos-transact-golang/dbos"
)
{
ctx, err := dbos.NewDBOSContext(context.Background(), dbos.Config{
AppName: ,
DatabaseURL: os.Getenv(),
})
err != {
log.Fatal(err)
}
dbos.Shutdown(ctx, *time.Second)
dbos.RegisterWorkflow(ctx, myWorkflow)
err := dbos.Launch(ctx); err != {
log.Fatal(err)
}
}