skills/dagger-codegen/references/generated-clients.md
Load when: Working on
dagger client install, implementing ClientGenerator, or adding client support to an SDK.
Generated clients let regular programs (not modules) use Dagger APIs with full dependency support.
Command: dagger client install (experimental, hidden)
Supported: Go, TypeScript only
| Aspect | In-Module | Generated Client |
|---|---|---|
| Context | Inside module function | Regular program |
| Connection | Automatic | Connect() / Close() |
| Dependencies | Engine resolves | serveModuleDependencies() |
| Command | dagger develop | dagger client install |
At core/sdk.go:20:
type ClientGenerator interface {
GenerateClient(ctx, deps, outputDir, dev) error
}
output/
├── dagger/
│ ├── dagger.gen.go # Types + Connect() + Close()
│ └── dag/
│ └── dag.gen.go # Global dag.* helpers
In _dagger.gen.go/client.go.tmpl:
func Connect(ctx context.Context, opts ...ClientOpt) (*Client, error) {
// Start engine connection
// Call serveModuleDependencies()
}
func (c *Client) Close() error { ... }
client, _ := dagger.Connect(ctx)
defer client.Close()
out, _ := client.Container().
From("alpine").
WithExec([]string{"echo", "hello"}).
Stdout(ctx)
ClientGenerator