A Claude Code plugin for building applications where claude -p is the runtime.
Claude Code is usually an interface — you talk to it, it writes code. But claude -p is something more general: a process with access to the filesystem, the shell, and a broad set of tools, capable of returning structured output conforming to any schema you define. It's an engine you can embed inside an application of your own design.
Loom teaches Claude how to build on top of that engine. The architecture is simple. A server spawns a claude -p process with a prompt and a JSON schema, then streams events to a frontend via SSE. What the prompt asks, what shape the schema gives, and how the interface renders it — those are yours to decide.
This is the shift from Claude Code as a coding interface to Claude Code as a runtime. You inherit everything Anthropic built into that harness — tool use, context management, streaming, model selection, cost controls — and point it at whatever you want to make.
[Interface] ←→ [Server] ←→ [claude -p]
↕
[filesystem, shell, tools]
Three decisions define each app:
- The prompt — what Claude should do with its access to the filesystem, shell, and tools
- The schema — the shape of the output, as a JSON schema that structures Claude's response into typed data your frontend can render
- The interface — how you present it
The server is a thin relay. Claude does the work. Your interface gives it form.
For a deeper walkthrough of the architecture, patterns, and design decisions, open the interactive explainer.
This plugin ships three skills — Claude picks the right one from your request:
- loom — deployed or multi-user web apps: a Node/Express server spawns
claude -p, with per-user OAuth, rate limiting, and streaming to a browser UI. - loom-local — single-user local tools: a thin Bun (
Bun.serve()) server that inherits your existing Claude Code login. No auth, no deployment. - loom-desktop — native macOS/Windows/Linux apps via ElectroBun (Bun + system webview) with typed RPC. No HTTP server.
Loom is its own single-plugin marketplace. From inside Claude Code, add the marketplace, then install the plugin:
/plugin marketplace add popmechanic/loom
/plugin install loom@loom
loom@loom means the loom plugin from the loom marketplace. To apply it in the current session without restarting:
/reload-plugins
Verify and manage it with /plugin list, and pull future updates with /plugin marketplace update loom.
- "Build me something that reads my journal entries and finds threads I keep returning to"
- "Make a tool that analyzes a codebase and tells the story of how it evolved"
- "Create an app that watches a directory and narrates what's changing"
