paperclip
Applicationpaperclipai/paperclip
Open-source app to manage and orchestrate AI agents for business workflows.
Overview
Paperclip is a self-hosted orchestration platform that coordinates teams of AI agents toward business goals. It provides org charts, budgets, governance, task tracking, and cost controls in a single dashboard. Supports bring-your-own agents from OpenClaw, Claude Code, Codex, Cursor and more.
README Preview
\n \n\n\n\n Quickstart ·\n Docs ·\n GitHub ·\n Discord ·\n Twitter ·\n Website\n\n\n\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n# Paperclip is the app people use to manage AI agents for work.\n\nOpen-source orchestration for teams of AI agents.\n\n**If OpenClaw is an _employee_, Paperclip is the _company_.**\n\nPaperclip is a Node.js server and React UI that orchestrates a team of AI agents to run a business. Bring your own agents, assign goals, and track work and costs from one dashboard.\n\nIt looks like a task manager. Under the hood: org charts, budgets, governance, goal alignment, and agent coordination.\n\n**Manage business goals, not pull requests.**\n\n| | Step | Example |\n| ------ | --------------- | ------------------------------------------------------------------ |\n| **01** | Define the goal | _"Build the #1 AI note-taking app to $1M MRR."_ |\n| **02** | Hire the team | CEO, CTO, engineers, designers, marketers — any bot, any provider. |\n| **03** | Approve and run | Review strategy. Set budgets. Hit go. Monitor from the dashboard. |\n\n\n\n\n\n \n Workswith\n OpenClaw\n Claude Code\n Codex\n Cursor\n Bash\n HTTP\n \n\n\nIf it can receive a heartbeat, it's hired.\n\n\n\n\n\n## Paperclip is right for you if\n\n- ✅ You want to build **autonomous AI companies**\n- ✅ You **coordinate many different agents** (OpenClaw, Codex, Claude, Cursor) toward a common goal\n- ✅ You have **20 simultaneous Claude Code terminals** open and lose track of what everyone is doing\n- ✅ You want agents running **autonomously 24/7**, but still want to audit work and chime in when needed\n- ✅ You want to **monitor costs** and enforce budgets\n- ✅ You want a process for managing agents that **feels like using a task manager**\n- ✅ You want to manage your autonomous businesses **from your phone**\n\n\n\n## The four pillars\
FAQ (5)
TroubleshootingHow do I fix Claude CLI sessions not resuming after upgrading Paperclip to v2026.1005.0?
This regression occurs because the per-run agent working-copy path (file-sync/runs/<runId>/live/AGENTS.md) is included in the Claude prompt text. Since <runId> changes every run, buildClaudePromptBundleKey produces a different hash, so hasMatchingPromptBundle rejects the saved session and starts a new one.
Fix: upgrade to a Paperclip release containing PR #15437. The fix keeps the prompt bundle stable when instructions and skills are unchanged while supplying the current working-copy location separately to each run.
Temporary workaround: downgrade to v2026.1001.0, where session resume works correctly. Versions affected by the regression include v2026.1005.0 and v2026.1006.0-canary.19.
TroubleshootingHow do I fix Codex 'failed to stat skills entry … No such file or directory' errors caused by dangling skill symlinks after a Paperclip adapter update?
These errors occur when an adapter update removes a skill but leaves its old symlink in ~/.codex/skills or ~/.claude/skills. First preview the broken symlinks:
find "${CODEX_HOME:-$HOME/.codex}/skills" -maxdepth 1 -type l -xtype l -print
find "$HOME/.claude/skills" -maxdepth 1 -type l -xtype l -print
If the listed paths are stale adapter symlinks, delete them:
find "${CODEX_HOME:-$HOME/.codex}/skills" -maxdepth 1 -type l -xtype l -delete
find "$HOME/.claude/skills" -maxdepth 1 -type l -xtype l -delete
Then run Codex again. The errors should disappear because the loader will no longer encounter symlinks pointing to files removed from the adapter package. A permanent cleanup pass was proposed in PR #1711, but it was closed without merging, so manual removal or a future maintainer fix is required.
TroubleshootingHow do I fix Paperclip agents running filesystem-wide `find /` because `scripts/paperclip-issue-update.sh` is missing or fails from the agent's working directory?
This occurs because Step 8 in server/skills/paperclip/SKILL.md invokes the helper with a bare relative path, which only works when the shell's current directory is the skill directory. In npm installs such as v2026.916.1 and 2026.1001.0, the helper may also be entirely absent because scripts/release.sh copies only skills/, while paperclip-issue-update.sh lives in the repository-root scripts/ directory.
Immediate workaround: patch SKILL.md so agents must not search the filesystem when the helper is missing. Tell them to use the documented raw API request instead:
curl -X PATCH "https://<paperclip-host>/api/issues/$PAPERCLIP_TASK_ID" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
--data '{"status":"done"}'
Use the authentication and request body fields already documented in Step 8; include the comment/markdown payload there if required.
Packaging fix: update scripts/release.sh to copy scripts/paperclip-issue-update.sh into skills/paperclip/scripts/ for @paperclipai/server, @paperclipai/adapter-claude-local, and @paperclipai/adapter-codex-local, then verify:
ls -l skills/paperclip/scripts/paperclip-issue-update.sh
Permanent path fix: have adapters export an absolute skill directory variable, for example PAPERCLIP_SKILL_ROOT, and change Step 8 to invoke:
"$PAPERCLIP_SKILL_ROOT/scripts/paperclip-issue-update.sh" \
--issue-id "$PAPERCLIP_TASK_ID" \
--status done
Until that variable is available, the reliable rule is: if the helper is not present at the documented absolute location, call PATCH /api/issues/{issueId} directly and never run find / -iname paperclip-issue-update.sh.
TroubleshootingHow do I fix Paperclip startup crashing with 'JavaScript heap out of memory' while building the attention feed from repeated 'Bounded retry exhausted' events?
Upgrade Paperclip to a release containing upstream fix #13451 (commit 667c79ded21e49b2a56b302093591c63a6f4e971). The fix prevents repeated retry-exhaustion lifecycle events from multiplying each run's full context_snapshot in the attention-feed query. The affected commit is 9a5a364170cb68a939ef972fab60f389f6664fd2; the fix was verified present on master at 1477d1ecea0d4fce0a906ac47ad1fc4eea9d3428.
Deploy steps:
cd paperclip
git fetch origin
git checkout 667c79ded21e49b2a56b302093591c63a6f4e971 # or a newer release containing it
pnpm install
pnpm build
systemctl restart paperclip
If you cannot upgrade immediately, a temporary workaround is to raise the V8 heap limit, for example by adding Environment=NODE_OPTIONS=--max-old-space-size=24576 to the systemd service, then running systemctl daemon-reload and restarting. This may require more than 24 GB because the faulty query can return roughly 20 GB of duplicated context data; upgrading or archiving the duplicate lifecycle events is the proper resolution.
TroubleshootingHow do I stop Paperclip hermes_local from repeating managed instructions on every resumed heartbeat?
Upgrade Paperclip to a build containing PR #15439 (fixed on master). The fix delivers managed instructions through Hermes's native system overlay instead of prepending the full instruction bundle to each resumed -q user message. It also includes regression tests for fresh runs, resumed runs, instruction changes, and session resets. Versions around @paperclipai/hermes-paperclip-adapter 2026.1001.0 and commit 582911ba are affected. quiet: true/-Q or a custom promptTemplate does not remove the duplicated prefix. As a temporary workaround, disable persistSession so each run starts a fresh session, although this loses session continuity.