MICRO SITES PUBLIC ALPHA
A tiny source tree.
A complete product.
Use your existing coding harness to create the source. The Micro CLI builds and verifies it; the runner serves it and provides the trusted product capabilities.
START WITH A HARNESS
Describe the outcome, not the infrastructure.
Add the focused Micro skill, the local MCP tools, or both. The skill teaches the complete workflow; MCP gives the harness typed access to the Micro CLI.
Install the skill globally for Codex.
npx skills add microdotdo/micro-mcp --skill micro-sites -g -a codex -yAdd the MCP tools across the Codex CLI and editor.
codex mcp add micro -- npx -y @microdotdo/micro-mcp
codex mcp listInstall the skill globally for Claude Code.
npx skills add microdotdo/micro-mcp --skill micro-sites -g -a claude-code -yAdd the MCP tools in Claude Code user scope.
claude mcp add --transport stdio --scope user micro -- npx -y @microdotdo/micro-mcp
claude mcp listInstall the skill globally for Cursor.
npx skills add microdotdo/micro-mcp --skill micro-sites -g -a cursor -yAdd the MCP tools by saving this as ~/.cursor/mcp.json.
{
"mcpServers": {
"micro": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@microdotdo/micro-mcp"]
}
}
}Install the bundled skill as a Pi package. Pi does not provide native MCP support.
pi install npm:@microdotdo/micro-mcpInstall only the skill with the cross-agent installer.
npx skills add microdotdo/micro-mcp --skill micro-sites -g -a pi -yThen ask for a focused site. Include the audience, pages, authenticated journey, data, products, and protected files that matter. Or browse the curated gallery and ask it to remix a licensed source snapshot.
Build a clean Micro where I sell a downloadable preset pack.
Include sign-in, checkout, and a protected download.The harness works locally using your own model account. Micro does not receive the prompt or charge for model inference.
PROJECT SHAPE
Code and assets. No infrastructure manifest.
preset-shop/
public/
index.html
app.js
styles.css
app.ab # optional Abla server
.micro/build/app.wasm # or Wasm from Rust / another toolchain
micro.yaml # optional productspublic/ is immutable deployment content. Dynamic routes may come from app.ab or a compatible Wasm module built by the project's chosen toolchain. Protected or paid files are uploaded separately and never belong in public/.
BROWSER SDK
Human-facing product flows in a few calls.
await Micro.currentUser()
await Micro.auth.open()
Micro.auth.loginWithMicro({ returnTo: "/library" })
await Micro.purchase("preset-pack")
await Micro.purchases()
await Micro.download("preset-files")The runner injects the versioned SDK into HTML. It handles auth dialogs, checkout, current purchase state, project records, invocation, and protected download grants. The server authorizes every operation independently.
SERVER WASM
Use the toolchain that fits the site.
A Micro may be static, use Abla's concise server model, compile Rust, or bring any compatible micro.wasm.v1 module. Abla can return ordinary responses or server-rendered HTML. In every case, the runner supplies the authenticated app user and a bounded platform call for records, purchases, entitlements, time, and randomness. The guest receives no dashboard cookie, database credential, storage path, or provider token.
fun handle(request: MicroRequest): MicroResponse {
val user = microCurrentUser(request)
val access = microHasEntitlement(request, "preset-files")
renderAccount(user, access)
}CLI WORKFLOW
Preview first. Claim only on success.
micro build
micro dev
micro deploy --preview
micro signup --email you@example.com
micro account status --wait
micro deploy preset-shopA preview uses an opaque temporary URL and reserves nothing. The first verified production deployment creates the project, claims the slug, stores the source revision, and activates the bundle in one transaction. Later deployments keep data and resources intact and can be rolled back.
BOUNDED RUNTIME
Every budget is independent.
SECURITY MODEL
The runner owns authority.
Project identity comes from the resolved host. App identity comes from a host-only secure session. Login with Micro exchanges a verified global identity for a new project-local app session; the resulting cookie cannot authorize the dashboard. Data and objects are unconditionally project-scoped. Purchases and entitlements come from the authoritative ledger. Internal APIs stay on the private overlay; public /_micro/ operations are runner-owned and cannot be shadowed by site assets or guest routes.
There is no WASI filesystem, environment, subprocess, raw socket, or DNS access. Unknown imports, unbounded memories, oversized content, invalid HTML paths, and unsupported response headers are rejected.