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-cli 0.14.2

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-cli 0.14.2
File Size Uploaded
act_cli-0.14.2.tar.gz 401.6 kB Details

Built distributions (wheels)

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

Total release size: 158.9 MB

Release files / act_cli-0.14.2.tar.gz

Download URL act_cli-0.14.2.tar.gz
Size 401.6 kB
Tags Source
SHA-256 checksum
How to use checksums
31de2f754838e3c0844a1315e1d57c23bb07c4fa911587d9ccc02b01c72ba21d
BLAKE2b-256 checksum
How to use checksums
30d5dd3aa231fdc11b2b0ab7a1f525ac310153e36692c8db39846e970e5014d0
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_cli-0.14.2-py3-none-win_arm64.whl

Download URL act_cli-0.14.2-py3-none-win_arm64.whl
Size 15.1 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
f1fa0b6a99f33f5961001381d337bf2044843049838e8f05aadf7ea9f3fcd43c
BLAKE2b-256 checksum
How to use checksums
b496cc4017c1b91342b63cb6a69d8997e763549596b54555d4c7dddd191b20a5
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_cli-0.14.2-py3-none-win_amd64.whl

Download URL act_cli-0.14.2-py3-none-win_amd64.whl
Size 17.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
8dacfc505b95c901405f75e92f28368760ed9b625e8b41fbfa2065242a6aa242
BLAKE2b-256 checksum
How to use checksums
80a23d09cef435171d6074984eb5004fc4a2201fa41de7d16b9bc29fecf33390
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_cli-0.14.2-py3-none-musllinux_1_2_x86_64.whl

Download URL act_cli-0.14.2-py3-none-musllinux_1_2_x86_64.whl
Size 16.5 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
635b3ae25d3647a3ba43508298aa780349fc4cff3b2ddb834d1d54359cd1aa37
BLAKE2b-256 checksum
How to use checksums
11551f5e5b93b2b9e3bd051f74e447da89bba44ecc2796a60e64d4c24751e1fc
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_cli-0.14.2-py3-none-musllinux_1_2_riscv64.whl

Download URL act_cli-0.14.2-py3-none-musllinux_1_2_riscv64.whl
Size 16.1 MB
Tags Linux musl 1.2+ RISC-V 64 Python 3
SHA-256 checksum
How to use checksums
4b376708506d919d0c56ed608139e190556000c061704481e6c8077f51d868ee
BLAKE2b-256 checksum
How to use checksums
29b9df5bc9359eed90919c0422d0ea168328524a87d7d57770aa9578d1265be8
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_cli-0.14.2-py3-none-musllinux_1_2_aarch64.whl

Download URL act_cli-0.14.2-py3-none-musllinux_1_2_aarch64.whl
Size 15.0 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
3d3d65b5d76160468876750ebf56cb30794b396e6214f6bcb5ad58503af05088
BLAKE2b-256 checksum
How to use checksums
dde2bb47a4ca093abc14f7bcbfb4e98de16b030e9a207249f0b902d3b0e04c7a
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_cli-0.14.2-py3-none-manylinux_2_39_riscv64.whl

Download URL act_cli-0.14.2-py3-none-manylinux_2_39_riscv64.whl
Size 16.1 MB
Tags Linux glibc 2.39+ RISC-V 64 Python 3
SHA-256 checksum
How to use checksums
3186404048e1c833976edf503d4e80ac66193052584e3fe9fd9cae4bfc840f5e
BLAKE2b-256 checksum
How to use checksums
dfc6b7836de29027404fbd4f37bd9c3e4bcc7488ac389fc923bcff9a3b286548
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_cli-0.14.2-py3-none-manylinux_2_34_x86_64.whl

Download URL act_cli-0.14.2-py3-none-manylinux_2_34_x86_64.whl
Size 16.7 MB
Tags Linux glibc 2.34+ x86-64 Python 3
SHA-256 checksum
How to use checksums
d285a81a467d4d407b0bb0b65adcbba8e2bfb39ced83098b79cd5dc58762b57f
BLAKE2b-256 checksum
How to use checksums
142525d0e4fee5ed5f722a2cc9a4e700f4ca185cfd713b0e38b60c007c07c678
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_cli-0.14.2-py3-none-manylinux_2_34_aarch64.whl

Download URL act_cli-0.14.2-py3-none-manylinux_2_34_aarch64.whl
Size 15.1 MB
Tags Linux glibc 2.34+ ARM64 Python 3
SHA-256 checksum
How to use checksums
a9ddcbff255addabc09775137144393059de709bbd71e942d590f544d9492b26
BLAKE2b-256 checksum
How to use checksums
c77e61aae2d8e22a7cafe133f2364e6bf6a182f9c8ba2599aa7808640626cd51
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_cli-0.14.2-py3-none-macosx_11_0_arm64.whl

Download URL act_cli-0.14.2-py3-none-macosx_11_0_arm64.whl
Size 14.8 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fffbb34f755c13aace2ad1cf2a0d7b2c8a5f5c03223a565644b773d5444f0a7d
BLAKE2b-256 checksum
How to use checksums
147546a2641a2519a094e19f037d3c27f04d12c8d2a166c772cf581796d09f24
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_cli-0.14.2-py3-none-macosx_10_12_x86_64.whl

Download URL act_cli-0.14.2-py3-none-macosx_10_12_x86_64.whl
Size 16.0 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
df0f71e5f652d5adcc3e31e7e2be98d1bdf9dcb7d141abce380dc15b24fdb587
BLAKE2b-256 checksum
How to use checksums
2a3faf2f402851b84d16c8747e0461104f1cca72052a881d501f8f6d79417a9b
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