Files
antigravity-skills-reference/skills/dbos-golang/references/lifecycle-config.md
Max dml 7e5abd504f feat: add DBOS skills for TypeScript, Python, and Go (#94)
Add three DBOS SDK skills with reference documentation for building
reliable, fault-tolerant applications with durable workflows.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 23:26:51 +01:00

2.0 KiB

title, impact, impactDescription, tags
title impact impactDescription tags
Configure and Launch DBOS Properly CRITICAL Application won't function without proper setup configuration, launch, setup, initialization

Configure and Launch DBOS Properly

Every DBOS application must create a context, register workflows and queues, then launch before running any workflows.

Incorrect (missing configuration or launch):

// No context or launch!
func myWorkflow(ctx dbos.DBOSContext, input string) (string, error) {
	return input, nil
}

func main() {
	// This will fail - DBOS is not initialized or launched
	dbos.RegisterWorkflow(nil, myWorkflow) // panic: ctx cannot be nil
}

Correct (create context, register, launch):

func myWorkflow(ctx dbos.DBOSContext, input string) (string, error) {
	return input, nil
}

func main() {
	ctx, err := dbos.NewDBOSContext(context.Background(), dbos.Config{
		AppName:     "my-app",
		DatabaseURL: os.Getenv("DBOS_SYSTEM_DATABASE_URL"),
	})
	if err != nil {
		log.Fatal(err)
	}
	defer dbos.Shutdown(ctx, 30*time.Second)

	dbos.RegisterWorkflow(ctx, myWorkflow)

	if err := dbos.Launch(ctx); err != nil {
		log.Fatal(err)
	}

	handle, err := dbos.RunWorkflow(ctx, myWorkflow, "hello")
	if err != nil {
		log.Fatal(err)
	}
	result, err := handle.GetResult()
	fmt.Println(result) // "hello"
}

Config fields:

  • AppName (required): Application identifier
  • DatabaseURL (required unless SystemDBPool is set): PostgreSQL connection string
  • SystemDBPool: Custom *pgxpool.Pool (takes precedence over DatabaseURL)
  • DatabaseSchema: Schema name (default: "dbos")
  • Logger: Custom *slog.Logger (defaults to stdout)
  • AdminServer: Enable HTTP admin server (default: false)
  • AdminServerPort: Admin server port (default: 3001)
  • ApplicationVersion: App version (auto-computed from binary hash if not set)
  • ExecutorID: Executor identifier (default: "local")
  • EnablePatching: Enable code patching system (default: false)

Reference: Integrating DBOS