Skip to main content

ACT — sandboxed, signed tools for AI agents

Every agent tool you install today runs with your permissions: your files, your keys, the whole network. ACT packages a tool as one WebAssembly component that declares what it needs — this directory, these hosts — and the host enforces it: anything undeclared is denied, anything declared still waits for your grant, and every decision lands in an audit trail. The same .wasm is an MCP server, a CLI tool, and it runs in a browser tab.

Try it in your browser → real pandas on your CSV, sandboxed to the one file you hand it. Nothing to install.

act: see what a tool can touch, grant it one directory, watch it ask when nothing was granted

mkdir -p /tmp/demo
npx @actcore/act call actpkg.dev/library/sqlite query \
  --args '{"sql":"SELECT sqlite_version()"}' \
  --session-args '{"database_path":"/tmp/demo/app.db"}' \
  --allow 'fs=/tmp/demo/**'

Docs · Components · Website

What's in this repo

  • 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

Metadata

Release files for act-cli 0.14.6

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.6
File Size Uploaded
act_cli-0.14.6.tar.gz 415.4 kB Details

Built distributions (wheels)

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

Total release size: 159.3 MB

Release files / act_cli-0.14.6.tar.gz

Download URL act_cli-0.14.6.tar.gz
Size 415.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f07cf24e3b9ece5dd3be00957bdd5e17a57610795f93c7dbca168e024f0d8d11
BLAKE2b-256 checksum
How to use checksums
a9dfafc43889b8419c9f255cf7db0979f884db1621c3b0d5606c47720f51b58d
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-win_arm64.whl

Download URL act_cli-0.14.6-py3-none-win_arm64.whl
Size 15.1 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
8be82ac78d0d3beff8c4416ad9c0321e9a5ccb3121c7086eb7ec5a1f68c976bb
BLAKE2b-256 checksum
How to use checksums
5fe93fd1c4b137f9a2be5d2224aea0a2dbf72ede8ef7c5e1b89d6908daae3f43
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-win_amd64.whl

Download URL act_cli-0.14.6-py3-none-win_amd64.whl
Size 17.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
520fa6a395fe654e143147b80a8e29fc52678dd0899f9964b6460f9510387099
BLAKE2b-256 checksum
How to use checksums
f0a76bfdaa50af84fe7dae97b9ad8cba552e5413e90b0a3b3af6ccdf2b200b74
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-musllinux_1_2_x86_64.whl

Download URL act_cli-0.14.6-py3-none-musllinux_1_2_x86_64.whl
Size 16.6 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e6a2b58cd3b4517c0a648970b90349210e5ea9036946e54c193a5cfb75d632d6
BLAKE2b-256 checksum
How to use checksums
2fe29c528315d687bfc013bc02b1eb9fcda3936a1da21579dbb623495e022e40
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-musllinux_1_2_riscv64.whl

Download URL act_cli-0.14.6-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
fe5daac097b253f0da3ba2d8f149ca0e508d556fc6e0ca20034855693be73fbc
BLAKE2b-256 checksum
How to use checksums
46bb055068bce3dd27d7c0cffd038568788bf1743c32ae6b77a0a828817ee391
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-musllinux_1_2_aarch64.whl

Download URL act_cli-0.14.6-py3-none-musllinux_1_2_aarch64.whl
Size 15.1 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
fc28acf5678f962f497821a282c873efe62457052f904f46ea62d37dc58290a0
BLAKE2b-256 checksum
How to use checksums
d2035e0e24c1c54dbd83bf3ad008615c54a6a7b1fb83a9dea63ad24ee93b54f5
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-manylinux_2_39_riscv64.whl

Download URL act_cli-0.14.6-py3-none-manylinux_2_39_riscv64.whl
Size 16.0 MB
Tags Linux glibc 2.39+ RISC-V 64 Python 3
SHA-256 checksum
How to use checksums
5ad65bff9728218b702a149e632dd9e041e3c8f15e9ea685ef6891fdca3a414a
BLAKE2b-256 checksum
How to use checksums
8d9e019392ab40663dac413218e8e2f57f3dcb9938607cd4ec7d8feba587f533
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-manylinux_2_34_x86_64.whl

Download URL act_cli-0.14.6-py3-none-manylinux_2_34_x86_64.whl
Size 16.8 MB
Tags Linux glibc 2.34+ x86-64 Python 3
SHA-256 checksum
How to use checksums
c6006908cb55a67a170794a9fd41b3057d5a00edd034a1d3a55b1d52e4946ff6
BLAKE2b-256 checksum
How to use checksums
aff3e14bcf0b4f662eb76d808289bfed758fa9c9444d95b1fe130d066105ae20
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-manylinux_2_34_aarch64.whl

Download URL act_cli-0.14.6-py3-none-manylinux_2_34_aarch64.whl
Size 15.2 MB
Tags Linux glibc 2.34+ ARM64 Python 3
SHA-256 checksum
How to use checksums
f40e4a6337b0fd0b2eb402de5a73208b18d9a458dffead8c5d958af4bfeaca26
BLAKE2b-256 checksum
How to use checksums
510c22acb3f5ed8292147fc4c35d0ee3e3669b61ad4b5646a4b6dd3d88fdef47
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-macosx_11_0_arm64.whl

Download URL act_cli-0.14.6-py3-none-macosx_11_0_arm64.whl
Size 14.9 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4dcd022b3bec0c24483a5e3e92322742c3a0b71e17792b5e76db0cceeb37c14f
BLAKE2b-256 checksum
How to use checksums
e449a0cb3a00523f474d77ae7d18572f9938ff747374f287cd8d8b74d8eeeebe
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 Oct 7, 2026.

Transparency log

Release files / act_cli-0.14.6-py3-none-macosx_10_12_x86_64.whl

Download URL act_cli-0.14.6-py3-none-macosx_10_12_x86_64.whl
Size 16.1 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f5ecf3bb0a49d4d51ab8e1e7ccc989d4928cbab7451bcbecb5ccaa2769a129bf
BLAKE2b-256 checksum
How to use checksums
7f4e4a7c0dd35a645ebf72b0b471bff86d676e165c09920f804039574a64e78d
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 Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.14.6 This release

11 release files

0.9.0

11 release files

0.8.3

11 release files

0.8.2

11 release files

0.7.6

11 release files

0.7.5

11 release files

0.7.4

11 release files

0.6.0

11 release files

0.5.1

11 release files

0.5.0

11 release files

0.4.0

11 release files

0.3.9

11 release files

0.3.3

11 release files

0.3.2

11 release files

0.3.1

11 release files

0.3.0

11 release files

0.2.1

11 release files

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