Skip to content

Components

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

Terminal window
$ act info my-component.wasm
Name: my-component
Version: 0.1.0
Description: A useful set of tools
Tools: 3

Each tool declares:

FieldTypePurpose
namestringMachine-readable identifier
descriptionlocalized-stringHuman/agent-readable description
input-schemaJSON SchemaArgument validation schema
annotationsmapHints like std:read-only, std:destructive
usage-hintslistWhen to use this tool
anti-usage-hintslistWhen NOT to use this tool
exampleslistExample invocations

Descriptions use the localized-string variant:

// Simple — single language
localized_string::plain("Encode text as base64")
// Localized — multiple languages (BCP 47)
localized_string::localized(vec![
("en", "Encode text as base64"),
("ru", "Закодировать текст в base64"),
])

Fixed set of known tools. Examples:

  • component-http-client — HTTP fetch
  • component-sqlite — SQL database access
  • component-filesystem — file operations

Generate tools at runtime from external specs. The tool set depends on the connected service:

  • component-openapi-bridge — tools from an OpenAPI spec
  • component-mcp-bridge — tools from an MCP server
  • component-act-http-bridge — tools from a remote ACT component
LanguagePathStreaming
RustNative wasip3Full async + stream
Pythoncomponentize-pyAsync func (wasip3)
JS/TSjco / componentize-jsLimited (no streams)
GoTinyGoCooperative (wasip2 shim)
C/C++wasi-sdkVia wasip2 shim

A .wasm file is the package. No archive formats needed — schemas, docs, and assets are embedded in the binary.

Terminal window
# Run a component from the registry
act run dev.actcore:component-sqlite@0.1.0
# Cached at ~/.cache/actcore/