Paca is a single open-source monorepo with a small set of clearly separated runtime surfaces.
apps/web— the user-facing application built with React, TanStack Start, and shadcn/ui.apps/mcp— the@paca-ai/paca-mcpMCP server; connects AI agents to the Paca data layer.apps/e2e— the end-to-end test suite built with Playwright; not a deployed runtime, but an external verifier of the full stack.services/api— the main application backend built with Go, Chi, and sqlx.services/realtime— the real-time delivery service built with Node.js and Socket.IO.services/agent-runner— the AI agent execution runtime built with Go, driving Goose over ACP forllm-type agents and brokeringacp-type dispatch toapps/acp-bridge.
- PostgreSQL stores core transactional product data. See database-schema.md for the full schema.
- Valkey carries cache, short-lived coordination state, and asynchronous event streams between backend runtimes.
apps/webuses HTTP APIs exposed byservices/apifor request-response workflows.apps/webconnects toservices/realtimeover Socket.IO for live updates.apps/mcpcallsservices/apiover HTTP using an API key; plugin tools route to/api/v1/plugins/{pluginId}/….apps/e2edrives a real browser against the full running stack and validates cross-cutting flows that span multiple runtime surfaces.services/apiremains the system of record for product state and publishes real-time relevant domain events to a Valkey Stream.services/realtimeconsumes Valkey Stream messages fromservices/apiand fans out client-safe events to connected Socket.IO rooms and users.services/agent-runnerreads agent trigger events from a Valkey Stream, spawns a Docker container perllm-type conversation and drives it over ACP, and publishes conversation events back to Valkey.
- Keep service boundaries explicit.
- Keep state-changing business logic in
services/api, not in the real-time edge service. - Use Valkey Streams to decouple event production from Socket.IO delivery.
- Avoid adding shared layers before reuse is proven.
- Separate product-facing documentation from implementation-facing documentation.
- Keep the repository easy to read in public from the root.
For the shared sprint, backlog, and timeline view model, see interaction-views.md.
For the automation-workflow dependency graph and execution engine, see automation-workflows.md.