Sandboxed components. Signed artifacts. Capability ceilings.
For AI agents in environments where works on my machine isn't enough.
npx / uvx / curl | bash run as youBuild your tool in Rust or Python with a first-class SDK — or in any of ten more languages that reach the Component Model.
#[act_tool](description = "Search the index", read_only)
fn search(query: String) -> ActResult<String> {Compile to a single .wasm component. Self-documenting — schemas, descriptions, examples baked in.
$ cargo build --target wasm32-wasip2
Compiling my-tool v0.1.0
Finished: my-tool.wasm (312 KB)Push to an OCI registry, signed with keyless cosign in CI. Pull-and-run on any host with one command.
$ act-build push my-tool.wasm actpkg.dev/me/my-tool:1.0
$ act run actpkg.dev/me/my-tool:1.0 --mcp \
--allow wasi:httpWASM isolation with zero ambient access. No filesystem, no outbound network, no syscall surface — only what the operator explicitly grants.
Components declare what they need at build time. Operators grant what they're willing to give. The host enforces the intersection — neither side can escalate past the other.
Every published component is signed with keyless cosign over GitHub’s OIDC token, binding the artifact to the workflow that built it. Verifiable provenance, no signing key to leak.
Every artifact is content-addressed and resolvable by digest, with a signature binding it to the workflow that built it. Audit once, then deploy that exact digest.
Schemas, descriptions, usage hints, examples, embedded agent skills — all baked into the binary. Agents (and humans) read it without running the component.
Rust and Python with an SDK; C, C++, Zig, Go, C#, Java, Kotlin, Scala, D, Lua and PHP verified end-to-end. The ceiling is enforced by the host, so the security model is identical across all of them.
Create your first ACT component in minutes.
npm install -g @actcore/act @actcore/act-build