概要
Paperclipはセルフホスト型のオーケストレーションプラットフォームで、複数のAIエージェントを連携させてビジネス目標を達成します。組織構造、予算、ガバナンス、タスク追跡、コスト管理を提供し、OpenClaw、Claude Code、Codexなどのエージェントの接続をサポートします。
README プレビュー
\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)
トラブル対応Paperclipをv2026.1005.0にアップグレードした後、Claude CLIセッションが再開されない問題を解決するにはどうすればよいですか?
このリグレッションは、実行ごとのエージェント作業コピーのパス(file-sync/runs/<runId>/live/AGENTS.md)がClaudeのプロンプトテキストに含まれているために発生します。<runId>は実行のたびに変化するため、buildClaudePromptBundleKeyが異なるハッシュを生成し、その結果hasMatchingPromptBundleが保存済みのセッションを拒否して新しいセッションを開始します。
修正方法: PR #15437を含むPaperclipリリースにアップグレードしてください。この修正により、instructionsとskillsに変更がない場合はプロンプトバンドルが安定した状態に保たれ、現在の作業コピーの場所が各実行に個別に供給されます。
一時的な回避策: セッションの再開が正しく動作するv2026.1001.0にダウングレードしてください。このリグレッションの影響を受けるバージョンには、v2026.1005.0およびv2026.1006.0-canary.19が含まれます。
トラブル対応Paperclip アダプターの更新後に壊れた skill のシンボリックリンクが原因で発生する Codex の 'failed to stat skills entry … No such file or directory' エラーは、どのように修正すればよいですか?
これらのエラーは、アダプターのアップデートでスキルが削除されても、その古いシンボリックリンクが ~/.codex/skills または ~/.claude/skills に残っている場合に発生します。まず、壊れたシンボリックリンクをプレビューします:
find "${CODEX_HOME:-$HOME/.codex}/skills" -maxdepth 1 -type l -xtype l -print
find "$HOME/.claude/skills" -maxdepth 1 -type l -xtype l -print
一覧に表示されたパスが古いアダプターのシンボリックリンクである場合は、それらを削除します:
find "${CODEX_HOME:-$HOME/.codex}/skills" -maxdepth 1 -type l -xtype l -delete
find "$HOME/.claude/skills" -maxdepth 1 -type l -xtype l -delete
その後、Codex を再度実行します。ローダーがアダプターパッケージから削除されたファイルを指すシンボリックリンクに遭遇しなくなるため、エラーは表示されなくなるはずです。恒久的なクリーンアップ処理は PR #1711 で提案されましたが、マージされないままクローズされたため、手動での削除か、将来のメンテナーによる修正が必要です。
トラブル対応エージェントの作業ディレクトリから scripts/paperclip-issue-update.sh が見つからない、または実行に失敗することが原因で、Paperclip エージェントがファイルシステム全体にわたる find / を実行してしまう問題を修正するにはどうすればよいですか?
これは、server/skills/paperclip/SKILL.md の Step 8 がヘルパーを裸の相対パスで呼び出すために発生します。この方法は、シェルのカレントディレクトリがスキルディレクトリである場合にのみ機能します。v2026.916.1 や 2026.1001.0 などの npm インストールでは、scripts/release.sh が skills/ のみをコピーし、paperclip-issue-update.sh はリポジトリルートの scripts/ ディレクトリに存在するため、ヘルパーが完全に欠落している場合もあります。
即時の回避策: ヘルパーが存在しない場合にエージェントがファイルシステムを検索しないよう、SKILL.md にパッチを適用してください。代わりに、ドキュメントに記載されている raw API リクエストを使用するよう指示してください:
curl -X PATCH "https://<paperclip-host>/api/issues/$PAPERCLIP_TASK_ID" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
--data '{"status":"done"}'
認証情報とリクエストボディのフィールドは、Step 8 にすでに記載されているものを使用してください。必要に応じて、コメント/markdown ペイロードもそこに含めてください。
パッケージングの修正: scripts/release.sh を更新し、@paperclipai/server、@paperclipai/adapter-claude-local、@paperclipai/adapter-codex-local 向けに scripts/paperclip-issue-update.sh を skills/paperclip/scripts/ にコピーするようにして、以下で確認してください:
ls -l skills/paperclip/scripts/paperclip-issue-update.sh
恒久的なパスの修正: アダプターにスキルディレクトリの絶対パス変数(例: PAPERCLIP_SKILL_ROOT)をエクスポートさせ、Step 8 を次のように呼び出すよう変更してください:
"$PAPERCLIP_SKILL_ROOT/scripts/paperclip-issue-update.sh" \
--issue-id "$PAPERCLIP_TASK_ID" \
--status done
その変数が利用可能になるまで、確実なルールは次のとおりです: ヘルパーがドキュメントに記載された絶対パスの場所に存在しない場合は、PATCH /api/issues/{issueId} を直接呼び出し、find / -iname paperclip-issue-update.sh は決して実行しないでください。
トラブル対応Paperclip の起動時に、繰り返し発生した 'Bounded retry exhausted' イベントからアテンションフィードを構築している最中に 'JavaScript heap out of memory' でクラッシュする問題を修正するにはどうすればよいですか?
アップストリームの修正 #13451(コミット 667c79ded21e49b2a56b302093591c63a6f4e971)を含むリリースに Paperclip をアップグレードしてください。この修正により、リトライ枯渇ライフサイクルイベントの繰り返しによって、attention-feed クエリで各実行の完全な context_snapshot が増殖する問題が防止されます。影響を受けるコミットは 9a5a364170cb68a939ef972fab60f389f6664fd2 です。この修正は master の 1477d1ecea0d4fce0a906ac47ad1fc4eea9d3428 に存在することが確認されています。
デプロイ手順:
cd paperclip
git fetch origin
git checkout 667c79ded21e49b2a56b302093591c63a6f4e971 # またはこれを含む新しいリリース
pnpm install
pnpm build
systemctl restart paperclip
すぐにアップグレードできない場合の一時的な回避策として、V8 ヒープ上限を引き上げる方法があります。たとえば、systemd サービスに Environment=NODE_OPTIONS=--max-old-space-size=24576 を追加し、systemctl daemon-reload を実行してから再起動します。不具合のあるクエリは約 20 GB の重複したコンテキストデータを返す可能性があるため、24 GB 以上が必要になる場合があります。アップグレードするか、重複したライフサイクルイベントをアーカイブすることが根本的な解決策です。
トラブル対応Paperclip の hermes_local が、再開されたハートビートのたびに managed instructions を繰り返さないようにするにはどうすればよいですか?
Paperclipを、PR #15439を含むビルドにアップグレードしてください(masterで修正済み)。この修正により、再開された-qユーザーメッセージごとに完全なインストラクションバンドルを先頭に付加する代わりに、Hermesのネイティブシステムオーバーレイを通じて管理されたインストラクションが配信されるようになります。また、新規実行、再開実行、インストラクションの変更、セッションリセットに関するリグレッションテストも含まれています。@paperclipai/hermes-paperclip-adapter 2026.1001.0前後のバージョンおよびコミット582911baが影響を受けます。quiet: true/-QやカスタムのpromptTemplateを使用しても、重複するプレフィックスは除去されません。一時的な回避策として、persistSessionを無効にして各実行で新しいセッションを開始させることができますが、この場合セッションの継続性は失われます。