This directory contains wasmCloud's well-known capability interfaces, expressed in the wit syntax. The contents of this directory provide a single source of truth for wasmCloud interface definitions and provide a place to track their progress as they converge to WASI cloud standards.
🏆 The ultimate goal of these interfaces is to allow someone to simply shop around for the characteristics of the runtime(s) they want, and not have to worry about C FFI or bizarre interop scenarios or worse, porting from one language to another. WebAssembly components should eventually fade into the background as a boring implementation detail.
Phase one of the interface migration involves migrating the service and type definitions from Smithy to the wit syntax.
Interfaces in this phase are to stay as close to the original wasmCloud interfaces as possible, with certain exceptions where there are large gaps between wasmCloud and WASI standards (e.g. keyvalue).
In phase 2, the wit syntax stored here will be dropped wherever possible, and replaced entirely with the use of "off the shelf" WASI cloud standards. Only in the case where there is no corresponding WASI standard or the underlying WASI standard cannot meet our needs will we retain a wasmCloud-specific interface.
The following is a list of interfaces that we plan to migrate to wit syntax.
In the following list, the Phase refers to which phase of our migration and implementation the interface is in. This shouldn't be confused with a WASI standards acceptance phase.
The following are considered core or "first party" supported interfaces.
| wasmCloud Interface | Phase | WASI Std | Description |
|---|---|---|---|
| N/A | 1 | wasi-logging | Standard level-oriented logging |
messaging |
1 | wasi-messaging | Interact with message brokers like NATS or RabbitMQ |
keyvalue |
1 | wasi-keyvalue | Interact with key value stores |
blobstore |
1 | wasi-blob-store | Interact with blob stores, which could abstract over a file system |
sqldb |
1 | wasi-sql | Interact with data stores that expose a SQL interface |
httpserver |
1 | wasi-http | Run a web server and respond to requests |
httpclient |
1 | wasi-http | Perform outbound HTTP requests |
| N/A | N/A | wasi-filesystem | File system abstraction. We will likely not have a high-level interface for this, it should come "for free" with wasmtime |
The following are additional interfaces less frequently used in simple applications or interfaces that have no correlation to WASI cloud specifications.
| Interface | Phase | Description |
|---|---|---|
lattice-control |
Not Started | Interact with the wasmCloud control interface |
ml |
Not Started | Perform machine learning functions |
sensors |
Not Started | Receive streaming data from sensors |
config-service |
Not Started | Interact with a wasmCloud configuration service |
Community interfaces will be tracked outside of this wit directory.