Components
What is a Component?
Section titled “What is a Component?”An ACT component is a WebAssembly module that exports the act-world world:
world act-world { export act:core/tool-provider;}It’s a single .wasm file containing:
- Tool implementations
- JSON Schemas for all tool arguments
- Localized descriptions and documentation
- Component metadata (name, version, author)
Component Info
Section titled “Component Info”Component metadata lives in a WASM custom section named act:component, encoded as dCBOR (RFC 8949). This allows tools like act info to inspect a component without instantiating it.
$ act info my-component.wasmName: my-componentVersion: 0.1.0Description: A useful set of toolsTools: 3Tool Definitions
Section titled “Tool Definitions”Each tool declares:
| Field | Type | Purpose |
|---|---|---|
name | string | Machine-readable identifier |
description | localized-string | Human/agent-readable description |
input-schema | JSON Schema | Argument validation schema |
annotations | map | Hints like std:read-only, std:destructive |
usage-hints | list | When to use this tool |
anti-usage-hints | list | When NOT to use this tool |
examples | list | Example invocations |
Localized Strings
Section titled “Localized Strings”Descriptions use the localized-string variant:
// Simple — single languagelocalized_string::plain("Encode text as base64")
// Localized — multiple languages (BCP 47)localized_string::localized(vec![ ("en", "Encode text as base64"), ("ru", "Закодировать текст в base64"),])Component Types
Section titled “Component Types”Clients (Static Tools)
Section titled “Clients (Static Tools)”Fixed set of known tools. Examples:
component-http-client— HTTP fetchcomponent-sqlite— SQL database accesscomponent-filesystem— file operations
Bridges (Dynamic Tools)
Section titled “Bridges (Dynamic Tools)”Generate tools at runtime from external specs. The tool set depends on the connected service:
component-openapi-bridge— tools from an OpenAPI speccomponent-mcp-bridge— tools from an MCP servercomponent-act-http-bridge— tools from a remote ACT component
Language Support
Section titled “Language Support”| Language | Path | Streaming |
|---|---|---|
| Rust | Native wasip3 | Full async + stream |
| Python | componentize-py | Async func (wasip3) |
| JS/TS | jco / componentize-js | Limited (no streams) |
| Go | TinyGo | Cooperative (wasip2 shim) |
| C/C++ | wasi-sdk | Via wasip2 shim |
Distribution
Section titled “Distribution”A .wasm file is the package. No archive formats needed — schemas, docs, and assets are embedded in the binary.
# Run a component from the registryact run dev.actcore:component-sqlite@0.1.0
# Cached at ~/.cache/actcore/