Skip to main content

ACT CLI & Build Tools

Host and build ACT (Agent Component Tools) WebAssembly components.

This repo contains two tools:

  • act — run, call, inspect, and serve ACT components from local files, HTTP URLs, or OCI registries. Components built for wasm32-wasip2 (with async) and wasm32-wasip3 run the same way, under the same capability grants
  • act-build — post-process compiled WASM components: embed metadata, skills, and custom sections

Install

# act (CLI host)
npm i -g @actcore/act
pip install act-cli
cargo install act-cli

# act-build (build tool)
npm i -g @actcore/act-build
pip install act-build
cargo install act-build

Pre-built binaries available on GitHub Releases and Docker (ghcr.io/actcore/act).

act — Component Host

# Discover tools in a component
act info --tools actpkg.dev/library/sqlite

# Call a tool. sqlite is session-based: --session-args opens a session for
# this one call. --allow lets it touch /data and nothing else.
act call actpkg.dev/library/sqlite query \
  --args '{"sql":"SELECT sqlite_version()"}' \
  --session-args '{"database_path":"/data/app.db"}' \
  --allow 'fs=/data/**'

# Serve over MCP stdio
act run --mcp actpkg.dev/library/sqlite --allow 'fs=/data/**'

# Serve over MCP Streamable HTTP, at http://[::1]:3000/mcp
act run --mcp --http -l '[::1]:3000' actpkg.dev/library/sqlite --allow 'fs=/data/**'

Components can be referenced as:

  • OCI refs: actpkg.dev/library/sqlite (a tag or @sha256: digest is optional)
  • HTTP URLs: https://example.com/component.wasm
  • Local paths: ./component.wasm

Remote components are cached in ~/.cache/act/components/.

Commands

Command Description
run Serve a component over MCP — stdio (--mcp) or Streamable HTTP (--mcp --http -l)
call Call a tool directly, print result to stdout
info Show component metadata, tools, and schemas (--tools, --format text|json|toon)
skill Extract the Agent Skills a component embeds
pull Download a component from OCI or HTTP to a local file
session Show a session-based component's open-args-schema
store Manage the local component store (list, update, gc)
inspect Read a component's raw manifest or tool list without instantiating it
secret Store credentials a component declares (there is no get)
login Provision a declared credential by prompting

Granting capabilities

The default mode is ask: an interactive run prompts, a headless one denies. Grants come from flags, or per profile in ~/.config/act/config.toml.

Flag Effect
--allow fs the whole declared ceiling of wasi:filesystem
--allow 'fs=/data/**' only /data/**, read-write (fs=/data/**:ro for read-only)
--allow 'http=https://api.example.com' one host (and scheme)
--allow 'sockets=db.local:5432/tcp' one host, port and protocol
--allow 'db:drop=test_*' a component-defined class, narrowed by key
--deny 'fs=/data/secret/**' carve a rule out of whatever else was granted
--grant '<json>' the full form, for anything the shorthand doesn't cover

Aliases: fs = wasi:filesystem, http = wasi:http, sockets = wasi:sockets, creds = act:credentials; output always shows the full id. IPv6 goes in brackets (http=[::1]:8080). A rule never exceeds what the component declared. act run --help lists every class and its shorthand.

Audit trail

run and call write a structured audit trail to stderr: what component is running and under what capability modes, every capability decision as it resolves, and a per-call summary. It is on by default and independent of RUST_LOG — only --no-audit (or [audit] enabled = false in the config file) turns it off.

audit: act-cli/tests/fixtures/fs-canary.wasm sha256:f17cda │ act:credentials=deny wasi:filesystem=ask wasi:http=deny wasi:sockets=deny
audit: ⚠ declared ask, no prompt channel — every access will be denied: wasi:filesystem
audit: ? ask-deny  wasi:filesystem  /tmp/probe.txt   no prompt channel  mode:ask
audit: ● read  tool-error 1ms  args:43ebc7  req:0005a4

That's a real, captured transcript of one headless call with no --grant: the first line is the instantiation header (component, digest, resolved mode per capability class); the second warns that a declared ask capability has no prompt channel to answer it, so every access degrades to deny; the third is the immediate denial (denials and asks print the moment they resolve, never batched); the fourth is the per-call rollup — outcome, duration, an args: digest of the tool arguments (or the full values with --audit-args), and a req: id for joining this line back to a client log. Allowed operations coalesce into that rollup line instead of one line each, e.g. filesystem: 12 read under /data/**.

MCP over HTTP (run --mcp --http)

act run --mcp --http -l <addr> serves the same MCP server as stdio over Streamable HTTP, at one endpoint: /mcp. --http requires --mcp. The earlier REST binding (/info, /tools, …) was removed in 0.12.0.

act-build — Component Build Tool

# Embed act:component metadata, act:skill, and WASM custom sections
act-build pack target/wasm32-wasip2/release/my_component.wasm

# Validate without modifying
act-build validate target/wasm32-wasip2/release/my_component.wasm

# Publish as a CNCF Wasm OCI Artifact
act-build push my_component.wasm ghcr.io/you/my-component:0.1.0 \
  --also-tag latest \
  --source https://github.com/actpkg/my-component \
  --skip-if-identical

Metadata is resolved via merge-patch from project manifests:

  1. Base from Cargo.toml, pyproject.toml, or package.json (name, version, description)
  2. Inline patch from the same manifest ([package.metadata.act], [tool.act], or "act" in package.json)
  3. act.toml — highest priority, applied last

act-build push produces artifacts conformant with the CNCF TAG-Runtime Wasm OCI Artifact spec: manifest config has media type application/vnd.wasm.config.v0+json (with architecture, os, layerDigests, and component.{exports,imports} derived from the component's exports and imports), and the layer is application/wasm.

Authentication is resolved in order: OCI_USERNAME/OCI_PASSWORD env, then GITHUB_TOKEN for ghcr.io, then ~/.docker/config.json (or $DOCKER_CONFIG/config.json), then anonymous.

Platform Support

Architecture Linux (GNU) Linux (musl) macOS Windows Docker
x86_64 ✓ ✓ ✓ ✓ ✓
aarch64 ✓ ✓ ✓ ✓ ✓
riscv64 ✓ ✓ — — ✓

RISC-V (riscv64) is a first-class target. Regressions on RISC-V are release-blocking.

Runtime requirement: glibc 2.34

A glibc build of act or act-build requires glibc 2.34 or newer — Debian 12, Ubuntu 22.04, RHEL 9 and later. This is a supported-platform commitment, not an incidental build setting: it is asserted in CI, and lowering it is a breaking change.

Which channels it applies to:

Channel Affected
npm (@actcore/act, @actcore/act-build) No — Linux packages ship musl binaries
PyPI manylinux wheels Yes — 2.34; the riscv64 wheel needs 2.39
GitHub Releases *-linux-*-gnu Yes — 2.34
GitHub Releases *-linux-*-musl, Docker No

The floor is one symbol. DNS SVCB/HTTPS lookups call res_query(3), which glibc did not export under that name before 2.34 — earlier releases had only __res_query, and a modern glibc keeps that as a compat symbol new code cannot link against, so there is no spelling that satisfies both. Nothing else in the binary requires past glibc 2.33.

On an older distribution, use a musl build: musl exports the symbol outright and carries no floor. Building from source does not lift the requirement — it is the same call — so musl is the answer there, not cargo build.

Building

cargo build --release        # both tools
cargo build -p act-cli       # act only
cargo build -p act-build     # act-build only

Set RUST_LOG=act=debug for verbose output.

License

MIT OR Apache-2.0

Release files for act-build 0.14.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for act-build 0.14.3
File Size Uploaded
act_build-0.14.3.tar.gz 121.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for act-build 0.14.3
File
act_build-0.14.3-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
act_build-0.14.3-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
act_build-0.14.3-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
act_build-0.14.3-py3-none-musllinux_1_2_riscv64.whl Python 3 none Linux musl 1.2+ RISC-V 64 Details
act_build-0.14.3-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
act_build-0.14.3-py3-none-manylinux_2_39_riscv64.whl Python 3 none Linux glibc 2.39+ RISC-V 64 Details
act_build-0.14.3-py3-none-manylinux_2_34_x86_64.whl Python 3 none Linux glibc 2.34+ x86-64 Details
act_build-0.14.3-py3-none-manylinux_2_34_aarch64.whl Python 3 none Linux glibc 2.34+ ARM64 Details
act_build-0.14.3-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
act_build-0.14.3-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 39.6 MB

Release files / act_build-0.14.3.tar.gz

Download URL act_build-0.14.3.tar.gz
Size 121.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ab04b1b26787e93b8fddde2dc8af4f5dab1ea38871f5bfa51a62eece6e8c33e1
BLAKE2b-256 checksum
How to use checksums
1c5248b4fdfbb3455b16d6ddff88aef7b784e76852b6fdfa2e53e9067b72d2cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-win_arm64.whl

Download URL act_build-0.14.3-py3-none-win_arm64.whl
Size 3.8 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
c07e162d697b67e7d46d1a6a0a5405eb7a6f09e0d337db4c9d7df1ab112a04c1
BLAKE2b-256 checksum
How to use checksums
56e480f26a174a1496de7a071596a6f21ace203c6f20789bcf857d18e83298b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-win_amd64.whl

Download URL act_build-0.14.3-py3-none-win_amd64.whl
Size 4.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
77b7f1c2fecf555838ca7f88207fd8e30ac548d17d63a8d2ff722bf703692d36
BLAKE2b-256 checksum
How to use checksums
a6b295a70f48bc315939fd85f81b548611e6861896bf9214070ca3464951c83b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-musllinux_1_2_x86_64.whl

Download URL act_build-0.14.3-py3-none-musllinux_1_2_x86_64.whl
Size 4.1 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
36d2b5d60ab86f9339e4e1dbe7d68706c84a5816664ef9fa3945bf301a4b6349
BLAKE2b-256 checksum
How to use checksums
9ceb7835a2229f7154c5e5ca8700f6ed3711fbb3b97040ab70a0676658b08cf3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-musllinux_1_2_riscv64.whl

Download URL act_build-0.14.3-py3-none-musllinux_1_2_riscv64.whl
Size 3.9 MB
Tags Linux musl 1.2+ RISC-V 64 Python 3
SHA-256 checksum
How to use checksums
9ff38da4fb96b6d681c62b7dba8d4a9dbf27e5a6d634050b8434ff905570296d
BLAKE2b-256 checksum
How to use checksums
815bba2f585d3f5c349bc7f97b2f829ba58dc249281c65d7659a43f94f6ec8ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-musllinux_1_2_aarch64.whl

Download URL act_build-0.14.3-py3-none-musllinux_1_2_aarch64.whl
Size 3.9 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
aae5bc24f16a1eebd1978fec943cebb9ed3bc9e4b1ee0bf69b2e342fb3f82c29
BLAKE2b-256 checksum
How to use checksums
cb51e9cb8ac4e4420fa59d2376799dab1d17308660790aa06f4769061d877bd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-manylinux_2_39_riscv64.whl

Download URL act_build-0.14.3-py3-none-manylinux_2_39_riscv64.whl
Size 3.9 MB
Tags Linux glibc 2.39+ RISC-V 64 Python 3
SHA-256 checksum
How to use checksums
23a3c5d136ba21520a61fc1fe52baaddeeb6591cc133acfa4905eec7cc5633e9
BLAKE2b-256 checksum
How to use checksums
d8d91dd21197a001d72e94a90f5f597a162879f5f6cc28a5b61d85eefdcc693c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-manylinux_2_34_x86_64.whl

Download URL act_build-0.14.3-py3-none-manylinux_2_34_x86_64.whl
Size 4.1 MB
Tags Linux glibc 2.34+ x86-64 Python 3
SHA-256 checksum
How to use checksums
af62e5490233d798f2d896ab02ca511f8b4ffb0f088f3d1a24c255503a422d49
BLAKE2b-256 checksum
How to use checksums
2e18004b7ffb570667e5b70216919685bd338399a60acd74ce53e4cd7948ff77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-manylinux_2_34_aarch64.whl

Download URL act_build-0.14.3-py3-none-manylinux_2_34_aarch64.whl
Size 3.9 MB
Tags Linux glibc 2.34+ ARM64 Python 3
SHA-256 checksum
How to use checksums
54a45629953fbcf98683a0c62b7504a4906dc201b1384c3635749cc50c52f97b
BLAKE2b-256 checksum
How to use checksums
c6e7578af6528ff2bf3ba7da8c8282da3d1036e163c5618428253f1b32021d27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-macosx_11_0_arm64.whl

Download URL act_build-0.14.3-py3-none-macosx_11_0_arm64.whl
Size 3.8 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
18ee83930acdc2784d67cb3a5f3017540920449622e179ef7ebdc53e648c9760
BLAKE2b-256 checksum
How to use checksums
53a32f6686f26af158522129239a65701d1b227d2e743be2f8cb18f5fd10befa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / act_build-0.14.3-py3-none-macosx_10_12_x86_64.whl

Download URL act_build-0.14.3-py3-none-macosx_10_12_x86_64.whl
Size 4.0 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f4c828758401829866265541c73e841fea0a9e282e7a4af3c74bb9a011ae4281
BLAKE2b-256 checksum
How to use checksums
02338f5cc335d8820442f51d0c34879fcb4b67538af7f54e85dbe8206b0ae034
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page