by rcarmo
pi coding agent in a technicolor web trenchcoat
# Add to your Claude Code skills
git clone https://github.com/rcarmo/piclawLast scanned: 5/10/2026
{
"issues": [
{
"type": "npm-audit",
"message": "xlsx: Prototype Pollution in sheetJS",
"severity": "high"
}
],
"status": "WARNING",
"scannedAt": "2026-05-10T06:34:19.979Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}piclaw — your self-hosted AI workspace![]()
PiClaw packages the Pi Coding Agent into a self-hosted workspace with a streaming web UI, persistent state, multi-provider LLM support, and a practical built-in toolset that includes many add-ons.
It is for people who want one stateful agent workspace they can run locally or in a container without stitching together half a dozen separate services.

list_tools / list_scriptsmkdir -p ./home ./workspace
docker run -d \
--init \
--name piclaw \
--restart unless-stopped \
-p 8080:8080 \
-e PICLAW_WEB_PORT=8080 \
-v "$(pwd)/home:/config" \
-v "$(pwd)/workspace:/workspace" \
ghcr.io/rcarmo/piclaw:latest
No comments yet. Be the first to share your thoughts!
Open http://localhost:8080 and type /login to configure your LLM provider, including custom OpenAI-compatible endpoints when you are not using one of the built-in hosted providers.
[!TIP] Keep
--initenabled fordocker run/podman runso the runtime inserts a tiny init process for signal forwarding and zombie reaping. The bundleddocker-compose.ymlnow sets the equivalentinit: trueflag.
| Mount | Container path | Contents |
|---|---|---|
| Home | /config | Agent home (.pi/, .gitconfig, .bashrc) |
| Workspace | /workspace | Projects, notes, and piclaw state |
[!NOTE] In the container image,
/home/agent/.piis backed by/config/.pi. With the stockdocker run/docker-compose.ymlexamples above, Pi home state therefore persists on the host under./home/.pi/agent/.That means provider login state and model metadata should survive rebuilds/recreates when stored under files such as:
./home/.pi/agent/auth.json./home/.pi/agent/models.jsonMounting directly to
/home/agentor/home/agent/.pi/agentcan also work, but/configis the canonical documented persistence path for the container image.
[!WARNING] Never delete
/workspace/.piclaw/store/messages.db. It contains chat history, media, and task state.
[!IMPORTANT] You do not need to set provider API keys in piclaw environment variables. PiClaw reuses provider credentials configured in Pi Agent settings.
[!NOTE] Power users can place workspace-scoped shell environment overrides in
/workspace/.env.sh. PiClaw sources that file for the embedded terminal and on runtime startup, which is useful for things likePATHtweaks or persistinggh auth loginwithGH_CONFIG_DIR=/workspace/.config/gh. This hook is user-controlled: if its contents break PiClaw startup, shell behavior, or tool resolution, that breakage is the user's responsibility.
PiClaw is single-user, mobile-friendly, and streams updates over SSE.
| Area | Highlights |
|---|---|
| Chat | Thought/draft panels, steering, queued follow-ups, Adaptive Cards, /btw, link previews, threaded turns, recovery/timeout chips |
| Status UX | Tool/intended status stays visible during silence probing, recent activity restores useful context, and tool rows can show compact x ago hints in the meta row |
| Workspace | Sidebar browser, drag-and-drop uploads, file-reference pills, explorer search/reindex status |
| Editor | CodeMirror 6, search/replace, dirty-state tracking, syntax highlighting, lazy local bundle |
| Terminal | Ghostty-based web terminal as dock or tab; detachable popouts |
| Viewers | Draw.io, Office docs, CSV/TSV, PDF, images, video, code previews, kanban boards, VNC |
| Automation | /image, /flux, image_process, cdp_browser, mcp, experimental m365, Windows-only win_* tools |
For the full feature tour, see docs/web-ui.md.
Most users only need a few environment variables:
| Variable | Default | Purpose |
|---|---|---|
| PICLAW_WEB_PORT | 8080 | Web UI port |
| PICLAW_WEB_TERMINAL_ENABLED | 1 on Linux/macOS, 0 on Windows | Enable or disable the authenticated Ghostty-based web terminal |
| PICLAW_WEB_VNC_ALLOW_DIRECT | 1 on Linux/macOS/Windows | Allow or disable direct VNC targets supplied at runtime |
| PICLAW_WEB_TOTP_SECRET | (empty) | Base32 TOTP secret; enables login gate (or initialize with /totp) |
| PICLAW_WEB_PASSKEY_MODE | totp-fallback | totp-fallback, passkey-only, or totp-only |
| PICLAW_ASSISTANT_NAME | PiClaw | Display name in the UI |
| PICLAW_ENABLE_M365_EXPERIMENTAL | 0 | Enable the experimental Microsoft 365 extension bundle |
| PICLAW_KEYCHAIN_KEY | (empty) | Master key for encrypted secret storage |
| PICLAW_TRUST_PROXY | 0 | Enable when behind a reverse proxy or tunnel |
For the full list, auth setup (TOTP/passkeys), session-scoped SSH-backed remote tools, reverse proxy configuration, SSHFS/FUSE support, and the workspace environment hook, see docs/configuration.md.
bun add -g github:rcarmo/piclaw
Experimental. Linux/macOS/Windows. See docs/install-from-repo.md.
On Windows, PiClaw remains a secondary / not-officially-supported target. Shell-like child processes now run attached there (detached=false) so stdout/stderr remain capturable; Unix-like hosts still use detached process groups for cleaner tree termination on abort/shutdown.
PiClaw also has an optional Electrobun desktop wrapper around the existing local web UI:
bun run build:desktop
The desktop shell starts Piclaw on 127.0.0.1 using an available port starting at 18080, opens a native window, and stores its default workspace under the platform application-data directory. Set PICLAW_DESKTOP_URL to wrap an already-running Piclaw web server instead of starting one.
See docs/development.md.
| Area | Docs | |---|---| | Getting started | Configuration, Web UI, Install from repo | | Operations | Azure VM deployment, Reverse proxy, Release process | | Runtime internals | Architecture, Runtime flows, Runtime stream sessions, Storage model, Observability | | UI extension model | Web pane extensions, Extension UI contract, Vendored widget libraries | | Agent capabilities | Tools and skills, Visual artifact generator, MCP via pi-mcp-adapter, Keychain | | Other references | Dream memory system, Web notification delivery policy, iOS PWA reference, WhatsApp, Cross-instance interop, Experimental M365 extension, Development | | Platform study | Azure Functions feasibility study |
Work items and bug reports are tracked in GitHub Issues.
See WORKITEMS.md for board lane definitions and label taxonomy.
rcarmo/piclaw-addons)[!NOTE] piclaw is not directly affiliated with pi.dev. It is a derivative work that leverages all of its core Pi functionality and builds additional runtime, tooling, and UI layers around it.
MIT