Announcing dbc 0.3.0

By Matt Topol, Bryce Mecum, Ian Cook

May 8, 2026

TL;DR

dbc is the package manager for ADBC drivers. Today we’re releasing version 0.3.0. You can now import dbc as a Go library, set up dbc in GitHub Actions with our new setup-dbc action, and list installed drivers with a new list subcommand. The release also includes sharper error messages, a fix for the Windows MSI installer, and smaller polish throughout. Install or upgrade now.

When we designed dbc, our first priority was ergonomics for humans: you type dbc install postgresql and it just works. That’s still the north star. But in the months since we released dbc, we’ve seen it pulled into places we didn’t optimize for on day one:

These are great problems to have, and they each push on dbc in a different way. Applications want a library, not a CLI. CI wants pinned versions and a drop-in step for the most common runner. Agents want commands to exist where they expect them to exist, and error messages they can read.

dbc 0.3.0 is our response. It’s a release focused on making dbc a better building block—for the tools that embed it, the pipelines that run it, and the agents that call it.

• • •

What’s new in dbc 0.3.0

Embed dbc in your Go application

We keep hearing from teams building on ADBC who want their application to manage drivers directly, without shipping the dbc binary and shelling out to it. Bundling and subprocessing isn’t a bad pattern, but it adds friction and it’s a non-starter in some deployment models.

dbc is written in Go, and starting in 0.3.0 you can import it as a library and drive it programmatically:

import (
    "context"
    "fmt"

    "github.com/columnar-tech/dbc"
    "github.com/columnar-tech/dbc/config"
)

func main() {
    c, err := dbc.NewClient()
    if err != nil {
        panic(err)
    }

    ctx := context.Background()
    manifest, err := c.Install(ctx, c.GetConfig(config.ConfigUser), "mysql")
    if err != nil {
        panic(err)
    }

    fmt.Printf("installed driver %s, version %s\n", manifest.ID, manifest.Version)
}

A dbc.Client can do everything the dbc CLI can: search driver registries, install and uninstall drivers, list what’s installed, and more. Browse the full Go API documentation on pkg.go.dev.

This is our first step toward making dbc embeddable. If you have a use case for embedding dbc that isn’t covered yet—or you’d like bindings for another language—we’d like to hear about it.

Set up dbc in GitHub Actions

Installing ADBC drivers in CI used to mean either committing the shell install script to your workflow or bundling dbc yourself. Now there’s a purpose-built GitHub Action:

steps:
  - uses: actions/checkout@v6
  - uses: columnar-tech/setup-dbc@v1
  - run: dbc install mysql

setup-dbc handles installation and caching of the dbc binary, and it pins cleanly to a major version. See columnar-tech/setup-dbc for the full set of options and examples, and the new CI guides in the dbc documentation for end-to-end walkthroughs.

For CI environments that don’t use GitHub Actions—or for reproducible installs anywhere—the install scripts now accept a version:

# Linux/macOS
$ curl -LsSf "https://dbc.columnar.tech/install.sh" | sh -s -- --version "0.3.0"

# Windows
> irm "https://dbc.columnar.tech/install.ps1" | iex -Version "0.3.0"

List installed drivers with dbc list

Watching AI agents use dbc, we noticed they consistently reach for a subcommand called list to see which ADBC drivers are already installed on a system. dbc 0.3.0 adds exactly that:

$ dbc list
DRIVER     VERSION  LEVEL  LOCATION

duckdb     1.4.4    user   ~/.config/adbc/drivers
flightsql  1.11.0   user   ~/.config/adbc/drivers
postgresql 1.9.0    user   ~/.config/adbc/drivers
snowflake  1.10.3   user   ~/.config/adbc/drivers
mssql      1.3.1    system /etc/adbc/drivers

Previously, the way to view installed drivers was dbc search, which marks already-installed drivers in its output. But list is what agents (and some humans) reached for first, so now it’s there. Like every other dbc subcommand that prints output, list supports --json for machine-readable output.

It’s worth noting that dbc install is a no-op if the requested driver is already installed at the same version, so an agent doesn’t strictly need to run dbc list (or dbc search) before installing—it can just go ahead and install. If there are other subcommands you (or your AI) expect to exist and don’t, please tell us. "The agent guessed it and it worked" is a design goal.

Improving our agent skills

Alongside the work in dbc 0.3.0, we’ve been steadily improving the Columnar agent skills—the packaged guidance we ship for AI coding assistants working with ADBC and dbc. Recent changes include:

To install the Columnar agent skills, run:

npx skills add columnar-tech/skills

This is an area we’re investing in heavily, and we have more on the way. If you’re a data platform or database vendor and you’d like to collaborate with us on the ADBC agent skill for your platform—so that agents write and run connection code correctly on the first try—get in touch.

Sharper, more scriptable errors

We tightened a number of small details that add up when you’re piping dbc output or reading it inside an agent loop:

Odds and ends

A few more small fixes and improvements worth calling out:

• • •

Install or upgrade to dbc 0.3.0

To install dbc 0.3.0 or upgrade an existing installation, use any of these methods:

Linux/macOS shell:

curl -LsSf https://dbc.columnar.tech/install.sh | sh

Windows shell:

powershell -ExecutionPolicy ByPass -c "irm https://dbc.columnar.tech/install.ps1 | iex"

Windows MSI: Download https://dbc.columnar.tech/latest/dbc-latest-x64.msi and run the installer.

Homebrew:

brew install columnar-tech/tap/dbc

uv:

uv tool install dbc --upgrade

pipx:

pipx upgrade --install dbc

For full installation instructions, see the dbc installation docs.

We’d love to hear from you

We’re continuing to improve the experience of managing ADBC drivers—for humans, for the tools that embed dbc, and for the agents that call it. If you hit a rough edge, a confusing message, or a missing feature, please open an issue or chat with us in the Columnar Community Slack. If you’d prefer to reach out privately, send us a message or DM us on Slack.