Skip to content

Platform dependencies

Copy page

Tapestry runs on four external services. Being honest about which ones the platform needs, and which ones a consuming project’s operator needs, prevents the surprise of “I installed the plugin and nothing’s logging.”

These are the services the Tapestry platform itself depends on. If you’re standing the platform up (or self-hosting all of it), you need accounts at all four.

ServiceWhat it hostsWhy required
Rendermemory-mcp MCP server, project-registry, Postgres (postgres), the self-observer cron, future migrated servicesThe hosted-multitenant deployment target for every backend service. Postgres holds memory records + project registry + candidate registry. The cron emits the synthesis memo every 6h.
Vercelapps/docs-site/ (this site, at tapestry-khaki.vercel.app) + apps/web-dashboard/ (the Project Observatory console, when deployed)The frontend deployment target. Static docs + the dashboard.
OpenTelemetry collectorThe OTel transport — receives OTLP traces/logs from the discipline plugin’s hooks + future runtime servicesThe canonical telemetry transport per the coordination contract. Without it, hook events go to local hooks.jsonl only — no cross-machine observability.
Grafana CloudThe dashboards + Loki (logs) + Tempo (traces) + the OTLP gatewayThe telemetry destination. Read by the observer (queried for coordination-quality signals); read by the operator (dashboards).

Required for a consuming project (you, the operator wiring a new project)

Section titled “Required for a consuming project (you, the operator wiring a new project)”

Most consumers do NOT need accounts at the four services above — those belong to whoever stands up the backend deployment. What a consuming project needs:

ServiceWhyCost
Claude Code (Anthropic)The agent that runs in your IDE / terminal. Without it, no hooks fire, no memory recall, no observer.Per Anthropic’s pricing.
GitHub access to Lizo-RoadTown/tapestrySo /plugin marketplace add Lizo-RoadTown/tapestry resolves. Public repo — no special access needed.Free.
(Optional) Grafana Cloud OTel credentialsOnly if you want your project’s hook events to flow to the shared Grafana stack alongside other consuming projects’ telemetry. Without these, the discipline plugin still works — local hooks.jsonl is the source of truth — but no cross-machine observability for your project.Free tier sufficient for most projects.

The OTel credentials live in your .env as OTEL_EXPORTER_OTLP_* env vars — see Load-bearing files §OTEL_*. Set these in your project .env.

MissingWhat breaks
RenderThe platform backend doesn’t exist. loom-memory MCP is unreachable; consuming projects with loom-memory declared in .mcp.json get connection errors. CORE DIRECTIVE 1 says the agent should HALT and report.
VercelThis docs site doesn’t exist; the Project Observatory console doesn’t exist. Consuming projects’ Claude Code installs still work (the plugin doesn’t depend on Vercel) but you can’t read the docs or see the dashboard.
OTel collectorHook events still write to local ~/.claude/logs/hooks.jsonl but don’t flow anywhere shared. No cross-machine observability. The observer’s runtime-telemetry inputs are blind (per the signal hierarchy — telemetry is one of several inputs; observer keeps working on the others).
Grafana CloudOTLP push goes to a dead endpoint; emission errors land in ~/.claude/logs/hook-otel-errors.log (per _observability.py); local hook writes still succeed. Dashboards don’t exist.
Anthropic / Claude CodeNothing runs. The whole point is the agent.

The platform supports a two-mode commitment (every service has a PLATFORM_MODE=self_host default + a PLATFORM_MODE=hosted opt-in). Self-host means: run everything yourself, no JWT auth, single-tenant. Hosted-multitenant means: JWT-verified tenant isolation against a shared hosted deployment.

If you’re standing up a self-hosted Tapestry (the default), you need accounts + deployments at all four services above. If your projects connect to a shared hosted deployment that someone else runs, you only need the second table.