MCPcopy Index your code
hub / github.com/Paca-AI/paca

github.com/Paca-AI/paca @v0.8.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.8.0 ↗ · + Follow
5,722 symbols 18,637 edges 603 files 2,125 documented · 37%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Paca logo

Paca

AI-native. Free. Lightweight. Open-source.

The fully customizable alternative to Jira, Trello, ClickUp, and Monday.

License Latest Release Stars

Getting Started · MCP Server · Claude Code Skill · Architecture · Contributing · Roadmap


What is Paca?

Paca is a self-hosted project management platform where AI agents and humans collaborate as equal teammates inside a Scrum team — not as chatbots bolted on the side.

Jira gives you a backlog. ClickUp gives you automations. Monday gives you dashboards. Paca gives your AI agents a seat at the table. They join sprint planning, pick up tasks from the board, write BDD specs, and adapt alongside humans in real time.

Everything about Paca — its workflow, its data model, its UI — is configurable and extendable via plugins.


Why Paca?

Jira / Trello / ClickUp / Monday Paca
AI integration Chatbot add-ons, peripheral automation AI agents as first-class Scrum teammates
Collaboration model Human-only by default Human + AI, side by side on the same board
Hosting Vendor cloud (your data, their servers) Self-hosted, you own everything
Cost $8–$20+ per seat/month Free forever
Customization Limited; locked behind enterprise tiers Fully open: configuration + plugins
Weight Bloated feature sprawl Lightweight core; extend only what you need
Source Closed / proprietary 100% open-source (Apache 2.0)

Core Idea: Humans and AI Agents, One Scrum Team

The central insight behind Paca is that AI agents should participate in the Scrum process, not just generate output in isolation.

In Paca, AI agents:

  • Are assigned to sprints and appear on the Scrumban board alongside human teammates
  • Pick up tasks from the backlog and update their status in real time
  • Collaborate on BDD specs — helping Product Owners and BAs write Gherkin scenarios
  • Contribute to System Design Documents — keeping the architecture visible to the whole team
  • Probe, sense, and respond to emerging complexity, just like a human would

This is not automation. It is genuine collaboration — rooted in the Cynefin / Stacey framework's recognition that complex domains require teams, not pipelines.

Paca Demo — AI Agents as Real Scrum Teammates on the Scrumban Board


Fully Customizable — Configuration and Plugins

Paca ships as a small, focused core. Everything else is optional.

Configuration-driven: workflows, statuses, field definitions, board layouts, sprint rules, and agent behavior are all driven by project-level configuration files. No code needed to adapt Paca to your team's process.

Plugin system: extend or replace any part of Paca via plugins. Plugins are compiled to WebAssembly (WASM) for the backend (write in Go, Rust, AssemblyScript — anything with a WASM target) and standard module bundles for the frontend. Plugins run in a sandboxed environment with a capability-based permission model; they declare exactly what host functions they need, and nothing more.

plugins/
├── backend/        # WASM modules — add custom routes, logic, data models
└── frontend/       # UI modules — add custom pages, board views, widgets

Browse and install community plugins directly from the Plugin Marketplace inside the Paca UI — no command line required. Go to Settings → Plugins → Marketplace, find a plugin, and click Install.

Paca Plugin Marketplace — Install Community Plugins in One Click

For local development or custom plugins, you can also install from the filesystem:

./scripts/install-local-plugin.sh ./my-plugin --api-key <your-api-key>

The P-A-C-A Cycle

Paca structures team collaboration around four phases that mirror both Scrum and the scientific method:

Plan  →  Act  →  Check  →  Adapt
  ↑                             |
  └─────────────────────────────┘
Phase What happens
Plan POs, BAs, and AI agents collaboratively refine the backlog. BDD scenarios and SDD designs are written together.
Act Sprint is live. Humans and AI agents pull tasks from the board, execute, and post updates.
Check QA agents run automated verification. Humans review AI output. The board reflects reality.
Adapt Data from the sprint informs the next cycle. The team — human and AI — retrospects together.

What's New in v0.4.0

  • In-app AI chat — chat with AI agents at the project level to plan work, create or update epics, stories, tasks, and documentation — all in plain English without leaving Paca

Paca v0.4.0 — In-app AI Chat for Project Planning and Task Management

  • Activity diff & revert — every field change in the activity pane now shows a before/after diff; one click reverts a change to its previous value

Paca v0.4.0 — Activity Diff and Revert


Key Features

  • Unified Scrumban Board — humans and AI agents share a single real-time board; no separate "AI workspace"
  • In-app AI chat — chat with AI agents at the project level to plan work, create or update epics, stories, tasks, and documentation in plain English
  • Activity diff & revert — see a visual diff for every field change in the activity pane and revert any change with one click
  • BDD Collaboration — Gherkin scenario editor co-authored by POs, BAs, and AI agents
  • System Design Documents (SDD) — living architecture docs that keep AI agents contextually grounded
  • MCP Server — connect Claude, custom agents, or any MCP-compatible tool directly into Paca's data layer
  • Claude Code skill/paca slash command for Claude Code; manage tasks, docs, and sprints in plain English without leaving your editor
  • Real-time updates — Socket.IO delivery; everyone sees changes the moment they happen
  • OpenHands-powered agents — AI agents run on the OpenHands SDK; each agent executes inside its own isolated sandbox container so your host environment is never touched
  • WASM plugin sandbox — extend Paca safely; plugins cannot escape their declared permissions
  • Self-hosted — runs on a single Docker Compose command; your data never leaves your infrastructure
  • Lightweight by default — minimal core, no feature bloat; add only what your team actually needs

Getting Started

Option 1 — Interactive install script (recommended for production)

Runs on any Linux server with Docker. No repository clone required.

curl -fsSL https://github.com/Paca-AI/paca/releases/latest/download/install.sh | bash

The script walks you through configuration interactively and starts the full stack. Open http://your-server-ip when it finishes.

How to Install Paca on Any Linux Server with One Command


Option 2 — Docker Compose (manual)

1. Create a directory and download the compose file

mkdir paca && cd paca
curl -fsSL https://github.com/Paca-AI/paca/releases/latest/download/docker-compose.yml -o docker-compose.yml
mkdir -p caddy
curl -fsSL https://github.com/Paca-AI/paca/releases/latest/download/Caddyfile -o caddy/Caddyfile

2. Download the environment template

curl -fsSL https://github.com/Paca-AI/paca/releases/latest/download/.env.production.example -o .env

3. Generate secure passwords and secrets

POSTGRES_PASSWORD=$(openssl rand -hex 32)
ADMIN_PASSWORD=$(openssl rand -hex 16)
JWT_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)

Optional: Generate API keys if you'll use the AI agent or external integrations:

AGENT_API_KEY=$(openssl rand -hex 32)
INTERNAL_API_KEY=$(openssl rand -hex 32)

Optional: Generate MinIO credentials or use your own:

STORAGE_ACCESS_KEY_ID=$(openssl rand -hex 16)
STORAGE_SECRET_ACCESS_KEY=$(openssl rand -hex 32)

4. Update .env with your values

Edit the .env file and replace the placeholder values with the ones you generated above. Below are the required fields:

PUBLIC_URL=http://localhost
POSTGRES_PASSWORD=<use the value from step 3>
ADMIN_USERNAME=admin
ADMIN_PASSWORD=<use the value from step 3>
JWT_SECRET=<use the value from step 3>
ENCRYPTION_KEY=<use the value from step 3>
STORAGE_ACCESS_KEY_ID=<use the value from step 3 or your own>
STORAGE_SECRET_ACCESS_KEY=<use the value from step 3 or your own>

5. Start the stack

docker compose --env-file .env up -d

⚠️ Important: Save your generated passwords and secrets securely. You'll need ADMIN_USERNAME and ADMIN_PASSWORD to log in.

Login: Open http://localhost and use the admin credentials you set above.

Customizing the stack: scale down services you don't need.

```bash

External PostgreSQL (supply DATABASE_URL in .env)

docker compose --env-file .env up -d --scale postgres=0

AWS S3 instead of MinIO (set STORAGE_PROVIDER=s3 in .env)

docker compose --env-file .env up -d --scale minio=0

Without the AI agent (reduces resource usage)

docker compose --env-file .env up -d --scale ai-agent=0 ```


Upgrading to a new version

From the directory where your docker-compose.yml and .env live, run the upgrade script published with each release — it refreshes docker-compose.yml and the Caddyfile (with backups) and restarts the stack:

curl -fsSL https://github.com/Paca-AI/paca/releases/latest/download/upgrade.sh -o upgrade.sh
bash upgrade.sh

Database migrations run automatically on API startup. See deploy/README.md for pinning a specific version or passing through --scale flags.


Option 3 — Local development

# Clone the repository
git clone https://github.com/Paca-AI/paca.git && cd paca

# Start infrastructure dependencies (PostgreSQL + Valkey)
docker compose -f deploy/docker-compose.dev.yml up -d postgres valkey

# Or start the full dev stack in containers
docker compose -f deploy/docker-compose.dev.yml up -d

See docs/guides/local-development.md for running services on the host for active development.


MCP Server — Connect Any AI Agent to Paca

Paca ships an MCP (Model Context Protocol) server that gives any compatible AI agent direct, structured access to your workspace — projects, tasks, sprints, documents, members, and more. No scraping, no custom APIs to wire up.

The server is published as @paca-ai/paca-mcp on npm. You run it with npx; your MCP client handles the rest.

Claude Desktop

  1. Open (or create) the Claude Desktop config file:
  2. macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  3. Windows: %APPDATA%\Claude\claude_desktop_config.json

  4. Add the paca entry:

{
  "mcpServers": {
    "paca": {
      "command": "npx",
      "args": ["-y", "@paca-ai/paca-mcp"],
      "env": {
        "PACA_API_KEY": "your-api-key-here",
        "PACA_API_URL": "http://localhost:8080"
      }
    }
  }
}
  1. Restart Claude Desktop. Claude now has access to all Paca tools and can answer requests like:
  2. "List all active sprints in project X"
  3. "Create a task for implementing OAuth and assign it to sprint 3"
  4. "Add a comment to task #42 with my progress update"

Other MCP-Compatible Clients

Any client that speaks MCP works. Typical configuration:

{
  "name": "paca",
  "command": "npx",
  "args": ["-y", "@paca-ai/paca-mcp"],
  "env": {
    "PACA_API_KEY": "your-api-key-here",
    "PACA_API_URL": "http://your-paca-instance:8080"
  }
}

Environment Variables

Variable Required Default Description
PACA_API_KEY Yes API key from your Paca instance (Settings → API Keys)
PACA_API_URL No http://localhost:8080 URL of your Paca API

Available Tools

The server exposes tools across these categories:

Category Tools
Projects list_projects, get_project, create_project, update_project, delete_project
Tasks list_tasks, get_task, create_task, update_task, delete_task, + more
Sprints list_sprints, create_sprint, update_sprint, complete_sprint, + more
Documents list_documents, get_document, create_document, update_document, delete_document
Members & Roles list_project_members, add_project_member, list_project_roles, + more
Task Types & Statuses list_task_types, create_task_type, list_task_statuses, + more
Views & Custom Fields `list_view

Extension points exported contracts — how you extend this code

GlobalPermissionReader (Interface)
GlobalPermissionReader resolves global permissions for a user. [12 implementers]
services/api/internal/service/user/user_service.go
PluginMCPEntry (Interface)
The contract a plugin's default export must satisfy. [1 implementers]
apps/mcp/src/plugin-loader.ts
Register (Interface)
(no doc)
apps/web/src/router.tsx
Task (Interface)
(no doc)
apps/e2e/tests/projects/interaction-sidebar.spec.ts
AuthResult (Interface)
(no doc)
services/realtime/src/api-client.ts
RoleByNameFinder (Interface)
RoleByNameFinder looks up a global role by its unique name. [8 implementers]
services/api/internal/service/user/user_service.go
LoadedPlugin (Interface)
Loaded plugin: entry module + metadata.
apps/mcp/src/plugin-loader.ts
FileRoutesByFullPath (Interface)
(no doc)
apps/web/src/routeTree.gen.ts

Core symbols most depended-on inside this repo

Error
called by 719
services/api/internal/apierr/codes.go
Set
called by 538
services/api/internal/platform/cache/store.go
Close
called by 414
services/api/internal/platform/messaging/publisher.go
Run
called by 258
services/api/internal/bootstrap/app.go
cn
called by 226
apps/web/src/lib/utils.ts
fill
called by 175
apps/e2e/pages/login.page.ts
Get
called by 157
services/api/internal/platform/cache/store.go
get
called by 111
apps/web/src/lib/plugins/loader.tsx

Shape

Function 2,821
Method 1,953
Struct 467
Interface 407
Class 49
TypeAlias 14
Route 6
FuncType 5

Languages

Go69%
TypeScript26%
Python4%

Modules by API surface

services/api/test/integration/task_test.go133 symbols
services/api/internal/service/task/task_service_test.go113 symbols
services/api/internal/transport/http/handler/task_handler_test.go96 symbols
apps/mcp/src/types/index.ts79 symbols
services/api/internal/transport/http/handler/project_handler_test.go75 symbols
services/api/internal/service/agent/agent_service_test.go68 symbols
apps/web/src/lib/interaction-api.ts65 symbols
services/api/internal/repository/postgres/task_repository.go59 symbols
services/api/internal/repository/postgres/agent_repository.go58 symbols
services/api/test/integration/project_test.go57 symbols
services/api/internal/transport/http/handler/user_handler_test.go54 symbols
services/api/internal/service/sprint/view_service_test.go51 symbols

Datastores touched

pacaDatabase · 1 repos
dbnameDatabase · 1 repos
testdbDatabase · 1 repos

For agents

$ claude mcp add paca \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact