Skip to main content
Version: 1.0

Providers

Overview​

Providers are swappable host plugins—executables (usually dedicated to longer-lived processes) that deliver common functionalities called capabilities. Providers are typically responsible for capabilities that are not considered part of the core business logic of an application, such as...

  • Sending notifications
  • Fetching secret values
  • Accessing databases
  • Serving content over HTTP

For example, when writing a web service that exposes a RESTful API, the HTTP server and the database are not parts of your business logic—your primary concern is structuring your API so that users can easily get the data they need. If you were to write this web service in a component, you would depend on providers to fulfill HTTP and database functionality in order to execute your business logic. In wasmCloud, providers are self-contained processes that implement a well-defined API.

Explicit linking required

Not every component should be able to access every provider. Securing and restricting communication between components and providers is important to avoid components gaining access to functionalities they should not have access to. To contact a particular provider, a component must be explicitly linked at runtime to the provider.

Types of providers​

Providers may be first-party (meaning they are maintained as part of the wasmCloud project) or third-party.

You can find a complete list of first-party providers on the wasmCloud GitHub Packages page. First-party providers are named to specify the interface being used and the specific functionality implemented with the interface (e.g. "keyvalue" for the WASI interface and "Redis" for the specific functionality).

First-party providers may be external or built-in. External providers run on the wasmCloud lattice like components—they are "external" in the sense that they are external to any given wasmCloud host. All third-party providers are external, and generally, when we talk about providers, we are talking about external providers. There is, however, a small set of built-in providers that represent wasmCloud's trusted compute base and are built directly into the wasmCloud host.

External providers​

Since external providers are standalone entities on the lattice, they may be scaled and updated independently of any given wasmCloud host.

External first-party providers include:

In Wadm manifests, you can refer to the wasmCloud GitHub Packages registry for OCI images of providers—for example: ghcr.io/wasmcloud/keyvalue-redis:0.23.0

Built-in providers​

Because built-in providers are part of the wasmCloud host itself, they do not communicate over NATS and run in the same process as the host. Updating a built-in provider requires updating the host. Built-in providers include:

Built-in providers form wasmCloud's trusted compute base—carefully vetted code providing core functionalities. You can learn more about using built-in providers on the Linking at runtime page.

Keep reading​

Continue to learn more about interfaces that providers use to communicate with components (or one another), or...