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 registriesact-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 ghcr.io/actpkg/sqlite:0.1.0
# Call a tool
act call ghcr.io/actpkg/sqlite:0.1.0 query \
--args '{"sql":"SELECT sqlite_version()"}' \
-m database_path=/data/app.db \
--grant '{"wasi:filesystem":{"mode":"allowlist","allow":[{"path":"/data/**","mode":"rw"}]}}'
# Serve over HTTP
act run -l ghcr.io/actpkg/sqlite:0.1.0
# Serve over MCP stdio
act run --mcp ghcr.io/actpkg/sqlite:0.1.0
Components can be referenced as:
- OCI refs:
ghcr.io/actpkg/sqlite:0.1.0 - 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) |
pull |
Download a component from OCI or HTTP to local file |
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:92342c │ 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 denied by user
audit: ● read tool-error 1ms args:43ebc7 req:00392e
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/**.
HTTP Endpoints (run -l)
| Method | Path | Description |
|---|---|---|
GET |
/info |
Component metadata |
POST |
/metadata-schema |
JSON Schema for metadata |
POST/QUERY |
/tools |
List tools |
POST/QUERY |
/tools/{name} |
Call a tool (SSE with Accept: text/event-stream) |
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/actpkg/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:
- Base from
Cargo.toml,pyproject.toml, orpackage.json(name, version, description) - Inline patch from the same manifest (
[package.metadata.act-component],[tool.act-component], oractComponent) 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.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| act_build-0.14.1.tar.gz | 119.3 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| act_build-0.14.1-py3-none-win_arm64.whl | Python 3 | none | Windows ARM64 | Details |
| act_build-0.14.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| act_build-0.14.1-py3-none-musllinux_1_2_x86_64.whl | Python 3 | none | Linux musl 1.2+ x86-64 | Details |
| act_build-0.14.1-py3-none-musllinux_1_2_riscv64.whl | Python 3 | none | Linux musl 1.2+ RISC-V 64 | Details |
| act_build-0.14.1-py3-none-musllinux_1_2_aarch64.whl | Python 3 | none | Linux musl 1.2+ ARM64 | Details |
| act_build-0.14.1-py3-none-manylinux_2_39_riscv64.whl | Python 3 | none | Linux glibc 2.39+ RISC-V 64 | Details |
| act_build-0.14.1-py3-none-manylinux_2_34_x86_64.whl | Python 3 | none | Linux glibc 2.34+ x86-64 | Details |
| act_build-0.14.1-py3-none-manylinux_2_34_aarch64.whl | Python 3 | none | Linux glibc 2.34+ ARM64 | Details |
| act_build-0.14.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| act_build-0.14.1-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.1.tar.gz
| Download URL | act_build-0.14.1.tar.gz |
|---|---|
| Size | 119.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
52064f74b51bfb91fd4848fc8004f63cc903911bb47836983baf3fa6c11d71ec
|
|
BLAKE2b-256 checksum How to use checksums |
2b4d08f9e16da0ee205ed02808788a73374cbc49b228eb1c5359a50f5791e856
|
| 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 logRelease files / act_build-0.14.1-py3-none-win_arm64.whl
| Download URL | act_build-0.14.1-py3-none-win_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
731e5cbc0443a56a524494bbad1a51d37e5f396abbdaf0c11a31862497cb4419
|
|
BLAKE2b-256 checksum How to use checksums |
b7f768ecce19ea6736a638a412fc3212f9b135ceae21536e126dab8492b76d0c
|
| 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 logRelease files / act_build-0.14.1-py3-none-win_amd64.whl
| Download URL | act_build-0.14.1-py3-none-win_amd64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
380bdc3ab6b12df6a0537e2e2f5a75fb850e98adffef10cafdc42b41af2b168a
|
|
BLAKE2b-256 checksum How to use checksums |
d50c2f28ecdad05ec5a2fb66fc4f38a9e67c96a29557675ebfd48bf487558b72
|
| 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 logRelease files / act_build-0.14.1-py3-none-musllinux_1_2_x86_64.whl
| Download URL | act_build-0.14.1-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 |
1a486bf48b5e87732b29611b18607c630b39a17fcf54984a422ed271bd419399
|
|
BLAKE2b-256 checksum How to use checksums |
ec7bd154a9e5d975bf8e5c728f50a0d5beed23e65ba4a6996f2fa8275b2625c6
|
| 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 logRelease files / act_build-0.14.1-py3-none-musllinux_1_2_riscv64.whl
| Download URL | act_build-0.14.1-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 |
297cb0b460e5a2e8ff09f2c285a0f1a6e69a71a3a4fa1a58db3d01f405725fd2
|
|
BLAKE2b-256 checksum How to use checksums |
95b166ead431e01b94aee14886ea1e472d59ff440626dbccd6292d05ce16ed22
|
| 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 logRelease files / act_build-0.14.1-py3-none-musllinux_1_2_aarch64.whl
| Download URL | act_build-0.14.1-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 |
d3883b80dcc2bc42c082a8494599de0c450b3d0615ef9bf2ff2c8fc892b59a21
|
|
BLAKE2b-256 checksum How to use checksums |
c2cb935d6e8de0a2a1bf352333b8988c5489615a329db1cfb8819b046672fb43
|
| 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 logRelease files / act_build-0.14.1-py3-none-manylinux_2_39_riscv64.whl
| Download URL | act_build-0.14.1-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 |
f46c82ace24e5fd645d2bd348cf40acdf164c06600745bc5c04aec01a6fe029c
|
|
BLAKE2b-256 checksum How to use checksums |
3266416a8b38a0c16b07643c1230f13289f68e877a44aa1586079b5a9fcd1f8b
|
| 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 logRelease files / act_build-0.14.1-py3-none-manylinux_2_34_x86_64.whl
| Download URL | act_build-0.14.1-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 |
ce30991c24dec10ea152a4812a2539eca6248e3694df4a9f7a48434c4ca3745a
|
|
BLAKE2b-256 checksum How to use checksums |
edcf00be2a1c64680c9ae7f51df4d25e14a7a3e997f81fe637f295c0de42fc3a
|
| 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 logRelease files / act_build-0.14.1-py3-none-manylinux_2_34_aarch64.whl
| Download URL | act_build-0.14.1-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 |
3c8aeead14fbb725eb0cd5267bc3dd022ae4b9058f359d59d23e1adf15f3a38c
|
|
BLAKE2b-256 checksum How to use checksums |
1de573e169a8f0e2e7076f25d02b9619049793ae4da547050b09eaea6ffbf4b6
|
| 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 logRelease files / act_build-0.14.1-py3-none-macosx_11_0_arm64.whl
| Download URL | act_build-0.14.1-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 |
b7e72a7f54ce45a796880ba2b2c2871bb56595b1161b1d0a4694fbacce56363c
|
|
BLAKE2b-256 checksum How to use checksums |
7e3119906d934705226265564924d0bfbc58ee9af2eec307751723ce7443b723
|
| 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 logRelease files / act_build-0.14.1-py3-none-macosx_10_12_x86_64.whl
| Download URL | act_build-0.14.1-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 |
9fa7dc0beceb9c865e4f1d56702fa8fd5a46e3f64768848fa71191a4ed9af4b7
|
|
BLAKE2b-256 checksum How to use checksums |
11e12e76e818fda10040e79da5105befa8398df426aa87f45f7c14efe76f3a50
|
| 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