Runtime Extensions¶
Hermes exposes host capabilities to WASM modules via Runtime Extensions (HREs). Each extension defines WIT interfaces that modules can import and call. Extensions are typically singletons and receive a context for each call that includes the application name, module ID, event name, execution counter, and a VFS handle.
Key characteristics
- WIT-based API definitions with generated Rust bindings.
- Context propagation per call; extensions can register background tasks on first use.
- Capability scoping and input validation to reduce attack surface.
Notable extensions (hermes/bin/src/runtime_extensions/hermes)
| Extension | Description |
|---|---|
| http_gateway | HTTP server, hostname routing, endpoint subscriptions, request classification, static file serving. |
| http_request | Module-side API to send HTTP requests via async gateway machinery. |
| kv_store | Simple key/value storage patterns. |
| sqlite | Embedded SQLite access via host functions. |
| ipfs | Publish/subscribe, DHT, file add/get/pin, and peer eviction using an embedded node. |
| cardano | Chain following and eventing helpers for Cardano integration. |
| crypto | Key management and cryptographic utilities (e.g., BIP39, BIP32-Ed25519). |
| cron | Scheduled events for modules. |
| logging | Structured logging APIs from modules. |
Context hooks
- Extensions can register once-per-process initialization when a context is first observed (e.g., start the HTTP gateway, set up IPFS streams).
See also