Please help us test confdb - a new way to manage and share snap configurations

Hi everyone, :wave:

We’re excited to invite you to test out confdb, a powerful new configuration mechanism currently available as an experimental feature in snapd!

As we continue to develop and refine this feature, we need your help. We’re asking developers to try it out, experiment with it in your own snaps, and share your feedback with us to help make it the solution to a lot of your snap configuration issues.

What is confdb?

Traditionally, snap configuration has been tightly coupled to individual snaps. This can make it difficult to share configurations between snaps securely without relying on overly-privileged interfaces.

Confdb solves this by separating configuration data from the snap installation using an external confdb-schema assertion. This opens up a new way to manage, isolate, and share configuration data across the snap ecosystem safely.

Key Features & Use Cases we’d love to see tested:

  • Cross-Snap Configuration Sharing: Confdb is perfect for deduplicating settings. For example, instead of configuring network proxy settings individually for all your snaps, you can use confdb to define a single shared set that all snaps can read from.

  • Custodian & Observer Models: You can designate a specific snap to act as a “custodian” to control, validate, and write the configuration data (via change-view-<plug> hooks). Other snaps can then act as “observers” that read the configuration and trigger their own hooks (observe-view-<plug>) when the config is updated.

  • Fine-Grained Access Control: Using views and storage paths, you can restrict exactly which configuration values a snap is allowed to see or modify.

What else is in the Pipeline?

Confdb is just getting started. One of the major features currently in the pipeline is the ability to delegate remote access to confdb views to specific store accounts, which will make managing configurations across fleets of devices much more flexible. These are not ready yet but I just wanted to give you a taster of where we are going.

How to Get Started

Because confdb is currently experimental, you’ll need to enable it via a feature flag on a recent version of snapd:

Bash

sudo snap set system experimental.confdb=true

You can read up on how it works in the Confdb configuration mechanism docs and follow the Configure snaps with confdb guide. If you learn best by looking at code, check out our network proxy demo on GitHub to see a complete working example.

We are here to help! :handshake:

Because this is an experimental feature, the documentation and implementation are still evolving, and we know there might be a learning curve.

We promise to support you! If you want to try this out but get stuck writing your schema assertion, debugging hooks, or conceptualizing how to fit it into your current workflow, please drop a reply in this thread. We will provide hands-on assistance to get your confdb setup working smoothly.

Please take it for a spin, test its limits, and let us know what you think. What works brilliantly? What feels clunky? Your real-world feedback is what will get this feature ready for stable production.

Happy hacking! :rocket:

1 Like

Seems the links have moved: