Live: https://playground.actcore.dev
A browser-native AI agent stack. Paste a wasm component URL, the tool loads and runs in your tab. No server, no Node, no install.
A demonstration of @actcore/web-runtime — a browser host for ACT components. Each tool is a wasm component packed with act-build, distributed via an OCI registry, and signed by its author. The playground:
- Resolves a URL (
oci://,https://, or a dropped.wasmfile). - Pulls the bytes. Most OCI fetches go through
oci-cors-proxyso the browser sees permissive CORS; registries that serve CORS themselves (e.g.actpkg.dev) are fetched directly. - Verifies the SHA-256 of the bytes against the OCI manifest digest.
- Transpiles the component in-page via
@bytecodealliance/jco. - Instantiates it (WebAssembly Component Model, wasip3-async, JSPI).
- Exposes its
act:tools/tool-providerso you can click "Run" and see the output.
A local LLM then calls these tools — the full agent loop, in your tab, with no remote API key. Pick the engine:
- Chrome built-in (Gemini Nano) — via the Prompt API. Nothing to download and a turn takes well under a second, but it's Chrome 148+ on desktop only: there's no Chrome for Android support, and Mozilla and WebKit have both filed negative standards positions.
- WebLLM Llama-3.2-3B — a ~2 GB one-time download onto WebGPU, cached afterwards. The portable fallback, and the only option outside Chrome.
Either way the playground dispatches tools itself rather than using an engine's native tool-calling: that loop is where a consent gate and an audit record belong, and an engine that ran components internally would skip both.
This repo expects actcore/web-runtime checked out as a sibling directory (the
@actcore/web-runtime dependency is referenced via file:../host-browser).
git clone https://github.com/actcore/web-runtime ../host-browser
# host-browser fetches its WIT deps with wkg (https://github.com/bytecodealliance/wasm-pkg-tools)
cd ../host-browser && npm install && npm run sync-wit && npm run build
cd - # back to playground
npm install
npm run dev # http://localhost:5173Pushed to main triggers .github/workflows/pages.yml, which:
- Builds
@actcore/web-runtimefrom the sibling repo (PAT required, see workflow). - Builds the playground with Vite.
- Publishes to GitHub Pages.
Custom domain playground.actcore.dev set via public/CNAME.
Requires JSPI, which is on by default in Chrome/Edge 137+ and Firefox 153+ (desktop and Android). Safari has it in Tech Preview and is committed to shipping under Interop 2026.
MIT OR Apache-2.0