Skip to main content
Version: 1.0

Providers

Overview​

Providers are executable host plugins dedicated to longer-lived processes fulfilling non-functional requirements (sometimes called capabilities). Providers are typically responsible for functionality that is 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. Providers run on a wasmCloud lattice and ensure that functionality depended on by components is available.

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 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

Keep reading​

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