Skip to content

Commit fd92de5

Browse files
committed
docs: add SECURITY.md, rewrite README with current CLI and platform matrix
1 parent 4a880e3 commit fd92de5

2 files changed

Lines changed: 73 additions & 26 deletions

File tree

README.md

Lines changed: 54 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,79 @@
1-
# act-cli
1+
# ACT CLI
22

3-
CLI and reference host for [ACT](../act-spec/) — loads `.wasm` ACT components and serves them over HTTP or MCP (stdio).
3+
CLI host for [ACT](https://actcore.dev) (Agent Component Tools) — run WebAssembly component tools from local files, HTTP URLs, or OCI registries.
44

5-
## Usage
5+
## Install
66

7+
```bash
8+
npm i -g @actcore/act # npm
9+
pip install act-cli # PyPI
10+
cargo install act-cli # crates.io
711
```
8-
act serve <component.wasm> [-l [::1]:3000]
9-
act call <component.wasm> <tool-name> [--args '{}'] [-c '{}']
10-
act mcp <component.wasm> [-c '{}'] [--config-file config.json]
11-
act info <component.wasm>
12-
act tools <component.wasm> [-c '{}']
12+
13+
Pre-built binaries available on [GitHub Releases](https://github.com/actcore/act-cli/releases) and Docker (`ghcr.io/actcore/act`).
14+
15+
## Quick Start
16+
17+
```bash
18+
# Discover tools in a component
19+
act info --tools ghcr.io/actpkg/sqlite:0.1.0
20+
21+
# Call a tool
22+
act call ghcr.io/actpkg/sqlite:0.1.0 query \
23+
--args '{"sql":"SELECT sqlite_version()"}' \
24+
--metadata '{"database_path":"/data/app.db"}' \
25+
--allow-dir /data:./data
26+
27+
# Serve over HTTP
28+
act run -l ghcr.io/actpkg/sqlite:0.1.0
29+
30+
# Serve over MCP stdio
31+
act run --mcp ghcr.io/actpkg/sqlite:0.1.0
1332
```
1433

15-
Set `RUST_LOG=act_cli=debug` for verbose output.
34+
Components can be referenced as:
35+
- **OCI refs:** `ghcr.io/actpkg/sqlite:0.1.0`
36+
- **HTTP URLs:** `https://example.com/component.wasm`
37+
- **Local paths:** `./component.wasm`
38+
39+
Remote components are cached in `~/.cache/act/components/`.
1640

1741
## Commands
1842

1943
| Command | Description |
2044
|---------|-------------|
21-
| `serve` | Start ACT-HTTP server for a component |
45+
| `run` | Serve a component over ACT-HTTP (`-l`) or MCP stdio (`--mcp`) |
2246
| `call` | Call a tool directly, print result to stdout |
23-
| `mcp` | Serve component as MCP server over stdio |
24-
| `info` | Show component name, version, description, capabilities |
25-
| `tools` | List tools exposed by a component |
47+
| `info` | Show component metadata, tools, and schemas (`--tools`, `--format text\|json`) |
48+
| `pull` | Download a component from OCI or HTTP to local file |
2649

27-
## HTTP Endpoints (`serve`)
50+
## HTTP Endpoints (`run -l`)
2851

2952
| Method | Path | Description |
3053
|--------|------|-------------|
3154
| `GET` | `/info` | Component metadata |
32-
| `GET` | `/config-schema` | JSON Schema for config (204 if none) |
33-
| `GET` | `/tools` | List tools |
34-
| `POST` | `/tools/{name}` | Call a tool |
55+
| `POST` | `/metadata-schema` | JSON Schema for metadata |
56+
| `POST/QUERY` | `/tools` | List tools |
57+
| `POST/QUERY` | `/tools/{name}` | Call a tool (SSE with `Accept: text/event-stream`) |
58+
59+
## Platform Support
60+
61+
| Architecture | Linux (GNU) | Linux (musl) | macOS | Windows | Docker |
62+
|-------------|:-----------:|:------------:|:-----:|:-------:|:------:|
63+
| x86_64 ||||||
64+
| aarch64 ||||||
65+
| riscv64 ||||||
66+
67+
RISC-V (`riscv64`) is a first-class target. Regressions on RISC-V are release-blocking.
3568

3669
## Building
3770

38-
```
71+
```bash
3972
cargo build --release
4073
```
4174

42-
## Architecture
75+
Set `RUST_LOG=act=debug` for verbose output.
4376

44-
```
45-
main.rs CLI (clap) → subcommands (serve, call, mcp, info, tools)
46-
runtime.rs wasmtime engine, component instantiation, actor pattern
47-
http.rs axum routes, ACT-HTTP request/response handling
48-
mcp.rs MCP JSON-RPC over stdio
49-
```
77+
## License
5078

51-
The host uses an actor pattern: a single tokio task owns the wasmtime `Store` and component instance, receiving requests over an mpsc channel. This ensures single-threaded access to the Wasm component while allowing concurrent HTTP handling.
79+
MIT OR Apache-2.0

SECURITY.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Security Policy
2+
3+
Security is a core priority of the ACT project, not an afterthought.
4+
5+
## Reporting Vulnerabilities
6+
7+
If you discover a security vulnerability, please report it privately via [GitHub Security Advisories](https://github.com/actcore/act-spec/security/advisories/new) or email security@actcore.dev.
8+
9+
Do **not** open a public issue for security vulnerabilities.
10+
11+
## Supply Chain Security
12+
13+
- **Trusted publishing.** All ACT packages use OpenID Connect (OIDC) trusted publishing for crates.io, PyPI, and npm. No long-lived API tokens are stored in CI. We encourage component authors to adopt the same practice.
14+
- **Build provenance.** Every release includes Sigstore-based build provenance attestation, verifiable via `gh attestation verify`.
15+
- **SBOM.** Every release ships a CycloneDX SBOM so users can audit the full dependency tree.
16+
17+
## Sandbox Model
18+
19+
Components run in WebAssembly's capability-based sandbox. No filesystem, network, or system access is available unless explicitly granted by the operator via `--allow-dir` or `--allow-fs` flags. This is enforced by the Wasmtime runtime, not by the component.

0 commit comments

Comments
 (0)