docs: sync docs and skills updates from backup branch

This commit is contained in:
Dotta
2026-03-02 16:44:10 -06:00
parent 8ee063c4e5
commit cabd16bc70
60 changed files with 209 additions and 246 deletions

View File

@@ -84,8 +84,21 @@ export PAPERCLIP_API_KEY=...
```sh ```sh
pnpm paperclip company list pnpm paperclip company list
pnpm paperclip company get <company-id> pnpm paperclip company get <company-id>
pnpm paperclip company delete <company-id-or-prefix> --yes --confirm <same-id-or-prefix>
``` ```
Examples:
```sh
pnpm paperclip company delete PAP --yes --confirm PAP
pnpm paperclip company delete 5cbe79ee-acb3-4597-896e-7662742593cd --yes --confirm 5cbe79ee-acb3-4597-896e-7662742593cd
```
Notes:
- Deletion is server-gated by `PAPERCLIP_ENABLE_COMPANY_DELETION`.
- With agent authentication, company deletion is company-scoped. Use the current company ID/prefix (for example via `--company-id` or `PAPERCLIP_COMPANY_ID`), not another company.
## Issue Commands ## Issue Commands
```sh ```sh

View File

@@ -170,6 +170,19 @@ pnpm secrets:migrate-inline-env # dry run
pnpm secrets:migrate-inline-env --apply # apply migration pnpm secrets:migrate-inline-env --apply # apply migration
``` ```
## Company Deletion Toggle
Company deletion is intended as a dev/debug capability and can be disabled at runtime:
```sh
PAPERCLIP_ENABLE_COMPANY_DELETION=false
```
Default behavior:
- `local_trusted`: enabled
- `authenticated`: disabled
## CLI Client Operations ## CLI Client Operations
Paperclip CLI now includes client-side control-plane commands in addition to setup commands. Paperclip CLI now includes client-side control-plane commands in addition to setup commands.

View File

@@ -809,3 +809,25 @@ V1 is complete only when all criteria are true:
- milestones/labels/dependency graph depth beyond V1 minimum - milestones/labels/dependency graph depth beyond V1 minimum
- realtime transport optimization (SSE/WebSockets) - realtime transport optimization (SSE/WebSockets)
- public template marketplace integration (ClipHub) - public template marketplace integration (ClipHub)
## 21. Company Portability Package (V1 Addendum)
V1 supports company import/export using a portable package contract:
- exactly one JSON entrypoint: `paperclip.manifest.json`
- all other package files are markdown with frontmatter
- agent convention:
- `agents/<slug>/AGENTS.md` (required for V1 export/import)
- `agents/<slug>/HEARTBEAT.md` (optional, import accepted)
- `agents/<slug>/*.md` (optional, import accepted)
Export/import behavior in V1:
- export includes company metadata and/or agents based on selection
- export strips environment-specific paths (`cwd`, local instruction file paths)
- export never includes secret values; secret requirements are reported
- import supports target modes:
- create a new company
- import into an existing company
- import supports collision strategies: `rename`, `skip`, `replace`
- import supports preview (dry-run) before apply

View File

@@ -150,7 +150,7 @@ V1 config fields:
- `model` (optional, allow empty = auto) - `model` (optional, allow empty = auto)
- `autoCreatePr` (optional, default `false`) - `autoCreatePr` (optional, default `false`)
- `branchName` (optional) - `branchName` (optional)
- `promptTemplate` / `bootstrapPromptTemplate` - `promptTemplate`
- `pollIntervalSec` (optional, default `10`) - `pollIntervalSec` (optional, default `10`)
- `timeoutSec` (optional, default `0`) - `timeoutSec` (optional, default `0`)
- `graceSec` (optional, default `20`) - `graceSec` (optional, default `20`)
@@ -474,4 +474,3 @@ Current process-only cancellation maps are insufficient by themselves for Cursor
- [ ] `pnpm -r typecheck` - [ ] `pnpm -r typecheck`
- [ ] `pnpm test:run` - [ ] `pnpm test:run`
- [ ] `pnpm build` - [ ] `pnpm build`

View File

@@ -248,7 +248,6 @@ Runs local `claude` CLI directly.
{ {
"cwd": "/absolute/or/relative/path", "cwd": "/absolute/or/relative/path",
"promptTemplate": "You are agent {{agent.id}} ...", "promptTemplate": "You are agent {{agent.id}} ...",
"bootstrapPromptTemplate": "Initial setup instructions (optional)",
"model": "optional-model-id", "model": "optional-model-id",
"maxTurnsPerRun": 80, "maxTurnsPerRun": 80,
"dangerouslySkipPermissions": true, "dangerouslySkipPermissions": true,
@@ -286,7 +285,6 @@ Runs local `codex` CLI directly.
{ {
"cwd": "/absolute/or/relative/path", "cwd": "/absolute/or/relative/path",
"promptTemplate": "You are agent {{agent.id}} ...", "promptTemplate": "You are agent {{agent.id}} ...",
"bootstrapPromptTemplate": "Initial setup instructions (optional)",
"model": "optional-model-id", "model": "optional-model-id",
"search": false, "search": false,
"dangerouslyBypassApprovalsAndSandbox": true, "dangerouslyBypassApprovalsAndSandbox": true,
@@ -569,14 +567,10 @@ Rules:
## 10.3 Prompt fields ## 10.3 Prompt fields
1. `bootstrapPromptTemplate` 1. `promptTemplate`
- Used when no session exists. - Used on every wakeup (first run and resumed runs).
2. `promptTemplate`
- Used on every wakeup.
- Can include run source/reason pills. - Can include run source/reason pills.
If `bootstrapPromptTemplate` is omitted, `promptTemplate` is used for first run.
## 10.4 UI requirements ## 10.4 UI requirements
1. Agent setup/edit form includes prompt editors with pill insertion. 1. Agent setup/edit form includes prompt editors with pill insertion.

View File

@@ -64,8 +64,7 @@ For local adapters, set:
You can set: You can set:
- `bootstrapPromptTemplate`: used for first run/new session - `promptTemplate`: used for every run (first run and resumed sessions)
- `promptTemplate`: used for subsequent resumed runs
Templates support variables like `{{agent.id}}`, `{{agent.name}}`, and run context values. Templates support variables like `{{agent.id}}`, `{{agent.name}}`, and run context values.

View File

@@ -3,8 +3,6 @@ title: Claude Local
summary: Claude Code local adapter setup and configuration summary: Claude Code local adapter setup and configuration
--- ---
# Claude Local Adapter
The `claude_local` adapter runs Anthropic's Claude Code CLI locally. It supports session persistence, skills injection, and structured output parsing. The `claude_local` adapter runs Anthropic's Claude Code CLI locally. It supports session persistence, skills injection, and structured output parsing.
## Prerequisites ## Prerequisites
@@ -18,8 +16,7 @@ The `claude_local` adapter runs Anthropic's Claude Code CLI locally. It supports
|-------|------|----------|-------------| |-------|------|----------|-------------|
| `cwd` | string | Yes | Working directory for the agent process | | `cwd` | string | Yes | Working directory for the agent process |
| `model` | string | No | Claude model to use (e.g. `claude-opus-4-6`) | | `model` | string | No | Claude model to use (e.g. `claude-opus-4-6`) |
| `promptTemplate` | string | No | Prompt for resumed sessions | | `promptTemplate` | string | No | Prompt used for all runs |
| `bootstrapPromptTemplate` | string | No | Prompt for first run (no existing session) |
| `env` | object | No | Environment variables (supports secret refs) | | `env` | object | No | Environment variables (supports secret refs) |
| `timeoutSec` | number | No | Process timeout (0 = no timeout) | | `timeoutSec` | number | No | Process timeout (0 = no timeout) |
| `graceSec` | number | No | Grace period before force-kill | | `graceSec` | number | No | Grace period before force-kill |

View File

@@ -3,8 +3,6 @@ title: Codex Local
summary: OpenAI Codex local adapter setup and configuration summary: OpenAI Codex local adapter setup and configuration
--- ---
# Codex Local Adapter
The `codex_local` adapter runs OpenAI's Codex CLI locally. It supports session persistence via `previous_response_id` chaining and skills injection through the global Codex skills directory. The `codex_local` adapter runs OpenAI's Codex CLI locally. It supports session persistence via `previous_response_id` chaining and skills injection through the global Codex skills directory.
## Prerequisites ## Prerequisites
@@ -18,8 +16,7 @@ The `codex_local` adapter runs OpenAI's Codex CLI locally. It supports session p
|-------|------|----------|-------------| |-------|------|----------|-------------|
| `cwd` | string | Yes | Working directory for the agent process | | `cwd` | string | Yes | Working directory for the agent process |
| `model` | string | No | Model to use | | `model` | string | No | Model to use |
| `promptTemplate` | string | No | Prompt for resumed sessions | | `promptTemplate` | string | No | Prompt used for all runs |
| `bootstrapPromptTemplate` | string | No | Prompt for first run |
| `env` | object | No | Environment variables (supports secret refs) | | `env` | object | No | Environment variables (supports secret refs) |
| `timeoutSec` | number | No | Process timeout (0 = no timeout) | | `timeoutSec` | number | No | Process timeout (0 = no timeout) |
| `graceSec` | number | No | Grace period before force-kill | | `graceSec` | number | No | Grace period before force-kill |

View File

@@ -3,8 +3,6 @@ title: Creating an Adapter
summary: Guide to building a custom adapter summary: Guide to building a custom adapter
--- ---
# Creating an Adapter
Build a custom adapter to connect Paperclip to any agent runtime. Build a custom adapter to connect Paperclip to any agent runtime.
## Package Structure ## Package Structure

View File

@@ -3,8 +3,6 @@ title: HTTP Adapter
summary: HTTP webhook adapter summary: HTTP webhook adapter
--- ---
# HTTP Adapter
The `http` adapter sends a webhook request to an external agent service. The agent runs externally and Paperclip just triggers it. The `http` adapter sends a webhook request to an external agent service. The agent runs externally and Paperclip just triggers it.
## When to Use ## When to Use

View File

@@ -3,8 +3,6 @@ title: Adapters Overview
summary: What adapters are and how they connect agents to Paperclip summary: What adapters are and how they connect agents to Paperclip
--- ---
# Adapters Overview
Adapters are the bridge between Paperclip's orchestration layer and agent runtimes. Each adapter knows how to invoke a specific type of AI agent and capture its results. Adapters are the bridge between Paperclip's orchestration layer and agent runtimes. Each adapter knows how to invoke a specific type of AI agent and capture its results.
## How Adapters Work ## How Adapters Work

View File

@@ -3,8 +3,6 @@ title: Process Adapter
summary: Generic shell process adapter summary: Generic shell process adapter
--- ---
# Process Adapter
The `process` adapter executes arbitrary shell commands. Use it for simple scripts, one-shot tasks, or agents built on custom frameworks. The `process` adapter executes arbitrary shell commands. Use it for simple scripts, one-shot tasks, or agents built on custom frameworks.
## When to Use ## When to Use

View File

@@ -65,8 +65,7 @@ For local adapters, set:
You can set: You can set:
- `bootstrapPromptTemplate`: used for first run/new session - `promptTemplate`: used for every run (first run and resumed sessions)
- `promptTemplate`: used for subsequent resumed runs
Templates support variables like `{{agent.id}}`, `{{agent.name}}`, and run context values. Templates support variables like `{{agent.id}}`, `{{agent.name}}`, and run context values.

View File

@@ -3,8 +3,6 @@ title: Activity
summary: Activity log queries summary: Activity log queries
--- ---
# Activity API
Query the audit trail of all mutations across the company. Query the audit trail of all mutations across the company.
## List Activity ## List Activity

View File

@@ -3,8 +3,6 @@ title: Agents
summary: Agent lifecycle, configuration, keys, and heartbeat invocation summary: Agent lifecycle, configuration, keys, and heartbeat invocation
--- ---
# Agents API
Manage AI agents (employees) within a company. Manage AI agents (employees) within a company.
## List Agents ## List Agents

View File

@@ -3,8 +3,6 @@ title: Approvals
summary: Approval workflow endpoints summary: Approval workflow endpoints
--- ---
# Approvals API
Approvals gate certain actions (agent hiring, CEO strategy) behind board review. Approvals gate certain actions (agent hiring, CEO strategy) behind board review.
## List Approvals ## List Approvals

View File

@@ -3,8 +3,6 @@ title: Authentication
summary: API keys, JWTs, and auth modes summary: API keys, JWTs, and auth modes
--- ---
# Authentication
Paperclip supports multiple authentication methods depending on the deployment mode and caller type. Paperclip supports multiple authentication methods depending on the deployment mode and caller type.
## Agent Authentication ## Agent Authentication

View File

@@ -3,8 +3,6 @@ title: Companies
summary: Company CRUD endpoints summary: Company CRUD endpoints
--- ---
# Companies API
Manage companies within your Paperclip instance. Manage companies within your Paperclip instance.
## List Companies ## List Companies

View File

@@ -3,8 +3,6 @@ title: Costs
summary: Cost events, summaries, and budget management summary: Cost events, summaries, and budget management
--- ---
# Costs API
Track token usage and spending across agents, projects, and the company. Track token usage and spending across agents, projects, and the company.
## Report Cost Event ## Report Cost Event

View File

@@ -3,8 +3,6 @@ title: Dashboard
summary: Dashboard metrics endpoint summary: Dashboard metrics endpoint
--- ---
# Dashboard API
Get a health summary for a company in a single call. Get a health summary for a company in a single call.
## Get Dashboard ## Get Dashboard

View File

@@ -3,8 +3,6 @@ title: Goals and Projects
summary: Goal hierarchy and project management summary: Goal hierarchy and project management
--- ---
# Goals and Projects API
Goals define the "why" and projects define the "what" for organizing work. Goals define the "why" and projects define the "what" for organizing work.
## Goals ## Goals

View File

@@ -3,8 +3,6 @@ title: Issues
summary: Issue CRUD, checkout/release, comments, and attachments summary: Issue CRUD, checkout/release, comments, and attachments
--- ---
# Issues API
Issues are the unit of work in Paperclip. They support hierarchical relationships, atomic checkout, comments, and file attachments. Issues are the unit of work in Paperclip. They support hierarchical relationships, atomic checkout, comments, and file attachments.
## List Issues ## List Issues

View File

@@ -3,8 +3,6 @@ title: API Overview
summary: Authentication, base URL, error codes, and conventions summary: Authentication, base URL, error codes, and conventions
--- ---
# API Overview
Paperclip exposes a RESTful JSON API for all control plane operations. Paperclip exposes a RESTful JSON API for all control plane operations.
## Base URL ## Base URL

View File

@@ -3,8 +3,6 @@ title: Secrets
summary: Secrets CRUD summary: Secrets CRUD
--- ---
# Secrets API
Manage encrypted secrets that agents reference in their environment configuration. Manage encrypted secrets that agents reference in their environment configuration.
## List Secrets ## List Secrets

View File

@@ -3,8 +3,6 @@ title: Control-Plane Commands
summary: Issue, agent, approval, and dashboard commands summary: Issue, agent, approval, and dashboard commands
--- ---
# Control-Plane Commands
Client-side commands for managing issues, agents, approvals, and more. Client-side commands for managing issues, agents, approvals, and more.
## Issue Commands ## Issue Commands
@@ -37,6 +35,24 @@ pnpm paperclip issue release <issue-id>
```sh ```sh
pnpm paperclip company list pnpm paperclip company list
pnpm paperclip company get <company-id> pnpm paperclip company get <company-id>
# Export to portable folder package (writes manifest + markdown files)
pnpm paperclip company export <company-id> --out ./exports/acme --include company,agents
# Preview import (no writes)
pnpm paperclip company import \
--from https://github.com/<owner>/<repo>/tree/main/<path> \
--target existing \
--company-id <company-id> \
--collision rename \
--dry-run
# Apply import
pnpm paperclip company import \
--from ./exports/acme \
--target new \
--new-company-name "Acme Imported" \
--include company,agents
``` ```
## Agent Commands ## Agent Commands

View File

@@ -3,8 +3,6 @@ title: CLI Overview
summary: CLI installation and setup summary: CLI installation and setup
--- ---
# CLI Overview
The Paperclip CLI handles instance setup, diagnostics, and control-plane operations. The Paperclip CLI handles instance setup, diagnostics, and control-plane operations.
## Usage ## Usage

View File

@@ -3,8 +3,6 @@ title: Setup Commands
summary: Onboard, run, doctor, and configure summary: Onboard, run, doctor, and configure
--- ---
# Setup Commands
Instance setup and diagnostics commands. Instance setup and diagnostics commands.
## `paperclip run` ## `paperclip run`

View File

@@ -3,8 +3,6 @@ title: Database
summary: Embedded PGlite vs Docker Postgres vs hosted summary: Embedded PGlite vs Docker Postgres vs hosted
--- ---
# Database
Paperclip uses PostgreSQL via Drizzle ORM. There are three ways to run the database. Paperclip uses PostgreSQL via Drizzle ORM. There are three ways to run the database.
## 1. Embedded PostgreSQL (Default) ## 1. Embedded PostgreSQL (Default)

View File

@@ -3,8 +3,6 @@ title: Deployment Modes
summary: local_trusted vs authenticated (private/public) summary: local_trusted vs authenticated (private/public)
--- ---
# Deployment Modes
Paperclip supports two runtime modes with different security profiles. Paperclip supports two runtime modes with different security profiles.
## `local_trusted` ## `local_trusted`

View File

@@ -3,8 +3,6 @@ title: Docker
summary: Docker Compose quickstart summary: Docker Compose quickstart
--- ---
# Docker
Run Paperclip in Docker without installing Node or pnpm locally. Run Paperclip in Docker without installing Node or pnpm locally.
## Compose Quickstart (Recommended) ## Compose Quickstart (Recommended)

View File

@@ -3,8 +3,6 @@ title: Environment Variables
summary: Full environment variable reference summary: Full environment variable reference
--- ---
# Environment Variables
All environment variables that Paperclip uses for server configuration. All environment variables that Paperclip uses for server configuration.
## Server Configuration ## Server Configuration

View File

@@ -3,8 +3,6 @@ title: Local Development
summary: Set up Paperclip for local development summary: Set up Paperclip for local development
--- ---
# Local Development
Run Paperclip locally with zero external dependencies. Run Paperclip locally with zero external dependencies.
## Prerequisites ## Prerequisites

View File

@@ -3,8 +3,6 @@ title: Deployment Overview
summary: Deployment modes at a glance summary: Deployment modes at a glance
--- ---
# Deployment Overview
Paperclip supports three deployment configurations, from zero-friction local to internet-facing production. Paperclip supports three deployment configurations, from zero-friction local to internet-facing production.
## Deployment Modes ## Deployment Modes

View File

@@ -3,8 +3,6 @@ title: Secrets Management
summary: Master key, encryption, and strict mode summary: Master key, encryption, and strict mode
--- ---
# Secrets Management
Paperclip encrypts secrets at rest using a local master key. Agent environment variables that contain sensitive values (API keys, tokens) are stored as encrypted secret references. Paperclip encrypts secrets at rest using a local master key. Agent environment variables that contain sensitive values (API keys, tokens) are stored as encrypted secret references.
## Default Provider: `local_encrypted` ## Default Provider: `local_encrypted`

View File

@@ -3,8 +3,6 @@ title: Storage
summary: Local disk vs S3-compatible storage summary: Local disk vs S3-compatible storage
--- ---
# Storage
Paperclip stores uploaded files (issue attachments, images) using a configurable storage provider. Paperclip stores uploaded files (issue attachments, images) using a configurable storage provider.
## Local Disk (Default) ## Local Disk (Default)

View File

@@ -15,128 +15,122 @@
"url": "https://github.com/paperclip-ai/paperclip" "url": "https://github.com/paperclip-ai/paperclip"
} }
], ],
"tabs": [ "navigation": {
{ "tab": "Get Started", "url": "start" }, "tabs": [
{ "tab": "Guides", "url": "guides" }, {
{ "tab": "Deploy", "url": "deploy" }, "tab": "Get Started",
{ "tab": "Adapters", "url": "adapters" }, "groups": [
{ "tab": "API Reference", "url": "api" }, {
{ "tab": "CLI", "url": "cli" } "group": "Introduction",
], "pages": [
"navigation": [ "start/what-is-paperclip",
{ "start/quickstart",
"tab": "Get Started", "start/core-concepts",
"groups": [ "start/architecture"
{ ]
"group": "Introduction", }
"pages": [ ]
"start/what-is-paperclip", },
"start/quickstart", {
"start/core-concepts", "tab": "Guides",
"start/architecture" "groups": [
] {
} "group": "Board Operator",
] "pages": [
}, "guides/board-operator/dashboard",
{ "guides/board-operator/creating-a-company",
"tab": "Guides", "guides/board-operator/managing-agents",
"groups": [ "guides/board-operator/org-structure",
{ "guides/board-operator/managing-tasks",
"group": "Board Operator", "guides/board-operator/approvals",
"pages": [ "guides/board-operator/costs-and-budgets",
"guides/board-operator/dashboard", "guides/board-operator/activity-log"
"guides/board-operator/creating-a-company", ]
"guides/board-operator/managing-agents", },
"guides/board-operator/org-structure", {
"guides/board-operator/managing-tasks", "group": "Agent Developer",
"guides/board-operator/approvals", "pages": [
"guides/board-operator/costs-and-budgets", "guides/agent-developer/how-agents-work",
"guides/board-operator/activity-log" "guides/agent-developer/heartbeat-protocol",
] "guides/agent-developer/writing-a-skill",
}, "guides/agent-developer/task-workflow",
{ "guides/agent-developer/comments-and-communication",
"group": "Agent Developer", "guides/agent-developer/handling-approvals",
"pages": [ "guides/agent-developer/cost-reporting"
"guides/agent-developer/how-agents-work", ]
"guides/agent-developer/heartbeat-protocol", }
"guides/agent-developer/writing-a-skill", ]
"guides/agent-developer/task-workflow", },
"guides/agent-developer/comments-and-communication", {
"guides/agent-developer/handling-approvals", "tab": "Deploy",
"guides/agent-developer/cost-reporting" "groups": [
] {
} "group": "Deployment",
] "pages": [
}, "deploy/overview",
{ "deploy/local-development",
"tab": "Deploy", "deploy/docker",
"groups": [ "deploy/deployment-modes",
{ "deploy/database",
"group": "Deployment", "deploy/secrets",
"pages": [ "deploy/storage",
"deploy/overview", "deploy/environment-variables"
"deploy/local-development", ]
"deploy/docker", }
"deploy/deployment-modes", ]
"deploy/database", },
"deploy/secrets", {
"deploy/storage", "tab": "Adapters",
"deploy/environment-variables" "groups": [
] {
} "group": "Agent Adapters",
] "pages": [
}, "adapters/overview",
{ "adapters/claude-local",
"tab": "Adapters", "adapters/codex-local",
"groups": [ "adapters/process",
{ "adapters/http",
"group": "Agent Adapters", "adapters/creating-an-adapter"
"pages": [ ]
"adapters/overview", }
"adapters/claude-local", ]
"adapters/codex-local", },
"adapters/process", {
"adapters/http", "tab": "API Reference",
"adapters/creating-an-adapter" "groups": [
] {
} "group": "REST API",
] "pages": [
}, "api/overview",
{ "api/authentication",
"tab": "API Reference", "api/companies",
"groups": [ "api/agents",
{ "api/issues",
"group": "REST API", "api/approvals",
"pages": [ "api/goals-and-projects",
"api/overview", "api/costs",
"api/authentication", "api/secrets",
"api/companies", "api/activity",
"api/agents", "api/dashboard"
"api/issues", ]
"api/approvals", }
"api/goals-and-projects", ]
"api/costs", },
"api/secrets", {
"api/activity", "tab": "CLI",
"api/dashboard" "groups": [
] {
} "group": "CLI Reference",
] "pages": [
}, "cli/overview",
{ "cli/setup-commands",
"tab": "CLI", "cli/control-plane-commands"
"groups": [ ]
{ }
"group": "CLI Reference", ]
"pages": [ }
"cli/overview", ]
"cli/setup-commands", },
"cli/control-plane-commands"
]
}
]
}
],
"footerSocials": { "footerSocials": {
"github": "https://github.com/paperclip-ai/paperclip" "github": "https://github.com/paperclip-ai/paperclip"
} }

View File

@@ -3,8 +3,6 @@ title: Comments and Communication
summary: How agents communicate via issues summary: How agents communicate via issues
--- ---
# Comments and Communication
Comments on issues are the primary communication channel between agents. Every status update, question, finding, and handoff happens through comments. Comments on issues are the primary communication channel between agents. Every status update, question, finding, and handoff happens through comments.
## Posting Comments ## Posting Comments

View File

@@ -3,8 +3,6 @@ title: Cost Reporting
summary: How agents report token costs summary: How agents report token costs
--- ---
# Cost Reporting
Agents report their token usage and costs back to Paperclip so the system can track spending and enforce budgets. Agents report their token usage and costs back to Paperclip so the system can track spending and enforce budgets.
## How It Works ## How It Works

View File

@@ -3,8 +3,6 @@ title: Handling Approvals
summary: Agent-side approval request and response summary: Agent-side approval request and response
--- ---
# Handling Approvals
Agents interact with the approval system in two ways: requesting approvals and responding to approval resolutions. Agents interact with the approval system in two ways: requesting approvals and responding to approval resolutions.
## Requesting a Hire ## Requesting a Hire

View File

@@ -3,8 +3,6 @@ title: Heartbeat Protocol
summary: Step-by-step heartbeat procedure for agents summary: Step-by-step heartbeat procedure for agents
--- ---
# Heartbeat Protocol
Every agent follows the same heartbeat procedure on each wake. This is the core contract between agents and Paperclip. Every agent follows the same heartbeat procedure on each wake. This is the core contract between agents and Paperclip.
## The Steps ## The Steps

View File

@@ -3,8 +3,6 @@ title: How Agents Work
summary: Agent lifecycle, execution model, and status summary: Agent lifecycle, execution model, and status
--- ---
# How Agents Work
Agents in Paperclip are AI employees that wake up, do work, and go back to sleep. They don't run continuously — they execute in short bursts called heartbeats. Agents in Paperclip are AI employees that wake up, do work, and go back to sleep. They don't run continuously — they execute in short bursts called heartbeats.
## Execution Model ## Execution Model

View File

@@ -3,8 +3,6 @@ title: Task Workflow
summary: Checkout, work, update, and delegate patterns summary: Checkout, work, update, and delegate patterns
--- ---
# Task Workflow
This guide covers the standard patterns for how agents work on tasks. This guide covers the standard patterns for how agents work on tasks.
## Checkout Pattern ## Checkout Pattern

View File

@@ -3,8 +3,6 @@ title: Writing a Skill
summary: SKILL.md format and best practices summary: SKILL.md format and best practices
--- ---
# Writing a Skill
Skills are reusable instructions that agents can invoke during their heartbeats. They're markdown files that teach agents how to perform specific tasks. Skills are reusable instructions that agents can invoke during their heartbeats. They're markdown files that teach agents how to perform specific tasks.
## Skill Structure ## Skill Structure

View File

@@ -3,8 +3,6 @@ title: Activity Log
summary: Audit trail for all mutations summary: Audit trail for all mutations
--- ---
# Activity Log
Every mutation in Paperclip is recorded in the activity log. This provides a complete audit trail of what happened, when, and who did it. Every mutation in Paperclip is recorded in the activity log. This provides a complete audit trail of what happened, when, and who did it.
## What Gets Logged ## What Gets Logged

View File

@@ -3,8 +3,6 @@ title: Approvals
summary: Governance flows for hiring and strategy summary: Governance flows for hiring and strategy
--- ---
# Approvals
Paperclip includes approval gates that keep the human board operator in control of key decisions. Paperclip includes approval gates that keep the human board operator in control of key decisions.
## Approval Types ## Approval Types

View File

@@ -3,8 +3,6 @@ title: Costs and Budgets
summary: Budget caps, cost tracking, and auto-pause enforcement summary: Budget caps, cost tracking, and auto-pause enforcement
--- ---
# Costs and Budgets
Paperclip tracks every token spent by every agent and enforces budget limits to prevent runaway costs. Paperclip tracks every token spent by every agent and enforces budget limits to prevent runaway costs.
## How Cost Tracking Works ## How Cost Tracking Works

View File

@@ -3,8 +3,6 @@ title: Creating a Company
summary: Set up your first autonomous AI company summary: Set up your first autonomous AI company
--- ---
# Creating a Company
A company is the top-level unit in Paperclip. Everything — agents, tasks, goals, budgets — lives under a company. A company is the top-level unit in Paperclip. Everything — agents, tasks, goals, budgets — lives under a company.
## Step 1: Create the Company ## Step 1: Create the Company

View File

@@ -3,8 +3,6 @@ title: Dashboard
summary: Understanding the Paperclip dashboard summary: Understanding the Paperclip dashboard
--- ---
# Dashboard
The dashboard gives you a real-time overview of your autonomous company's health. The dashboard gives you a real-time overview of your autonomous company's health.
## What You See ## What You See

View File

@@ -3,8 +3,6 @@ title: Managing Agents
summary: Hiring, configuring, pausing, and terminating agents summary: Hiring, configuring, pausing, and terminating agents
--- ---
# Managing Agents
Agents are the employees of your autonomous company. As the board operator, you have full control over their lifecycle. Agents are the employees of your autonomous company. As the board operator, you have full control over their lifecycle.
## Agent States ## Agent States

View File

@@ -3,8 +3,6 @@ title: Managing Tasks
summary: Creating issues, assigning work, and tracking progress summary: Creating issues, assigning work, and tracking progress
--- ---
# Managing Tasks
Issues (tasks) are the unit of work in Paperclip. They form a hierarchy that traces all work back to the company goal. Issues (tasks) are the unit of work in Paperclip. They form a hierarchy that traces all work back to the company goal.
## Creating Issues ## Creating Issues

View File

@@ -3,8 +3,6 @@ title: Org Structure
summary: Reporting hierarchy and chain of command summary: Reporting hierarchy and chain of command
--- ---
# Org Structure
Paperclip enforces a strict organizational hierarchy. Every agent reports to exactly one manager, forming a tree with the CEO at the root. Paperclip enforces a strict organizational hierarchy. Every agent reports to exactly one manager, forming a tree with the CEO at the root.
## How It Works ## How It Works

View File

@@ -36,7 +36,6 @@ Follows the existing `NewIssueDialog` / `NewProjectDialog` pattern: a `Dialog` c
| Test environment | Button | -- | Runs adapter-specific diagnostics and returns pass/warn/fail checks for current unsaved config | | Test environment | Button | -- | Runs adapter-specific diagnostics and returns pass/warn/fail checks for current unsaved config |
| CWD | Text input | -- | Working directory for local adapters | | CWD | Text input | -- | Working directory for local adapters |
| Prompt Template | Textarea | -- | Supports `{{ agent.id }}`, `{{ agent.name }}` etc. | | Prompt Template | Textarea | -- | Supports `{{ agent.id }}`, `{{ agent.name }}` etc. |
| Bootstrap Prompt | Textarea | -- | Optional, used for first run (no existing session) |
| Model | Text input | -- | Optional model override | | Model | Text input | -- | Optional model override |
**Adapter-specific fields (shown/hidden based on adapter type):** **Adapter-specific fields (shown/hidden based on adapter type):**

View File

@@ -3,8 +3,6 @@ title: Architecture
summary: Stack overview, request flow, and adapter model summary: Stack overview, request flow, and adapter model
--- ---
# Architecture
Paperclip is a monorepo with four main layers. Paperclip is a monorepo with four main layers.
## Stack Overview ## Stack Overview

View File

@@ -3,8 +3,6 @@ title: Core Concepts
summary: Companies, agents, issues, heartbeats, and governance summary: Companies, agents, issues, heartbeats, and governance
--- ---
# Core Concepts
Paperclip organizes autonomous AI work around five key concepts. Paperclip organizes autonomous AI work around five key concepts.
## Company ## Company

View File

@@ -3,8 +3,6 @@ title: Quickstart
summary: Get Paperclip running in minutes summary: Get Paperclip running in minutes
--- ---
# Quickstart
Get Paperclip running locally in under 5 minutes. Get Paperclip running locally in under 5 minutes.
## Option 1: Docker Compose (Recommended) ## Option 1: Docker Compose (Recommended)

View File

@@ -3,8 +3,6 @@ title: What is Paperclip?
summary: The control plane for autonomous AI companies summary: The control plane for autonomous AI companies
--- ---
# What is Paperclip?
Paperclip is the control plane for autonomous AI companies. It is the infrastructure backbone that enables AI workforces to operate with structure, governance, and accountability. Paperclip is the control plane for autonomous AI companies. It is the infrastructure backbone that enables AI workforces to operate with structure, governance, and accountability.
One instance of Paperclip can run multiple companies. Each company has employees (AI agents), org structure, goals, budgets, and task management — everything a real company needs, except the operating system is real software. One instance of Paperclip can run multiple companies. Each company has employees (AI agents), org structure, goals, budgets, and task management — everything a real company needs, except the operating system is real software.

View File

@@ -370,7 +370,6 @@ export function buildMyAgentConfig(v: CreateConfigValues): Record<string, unknow
const ac: Record<string, unknown> = {}; const ac: Record<string, unknown> = {};
if (v.cwd) ac.cwd = v.cwd; if (v.cwd) ac.cwd = v.cwd;
if (v.promptTemplate) ac.promptTemplate = v.promptTemplate; if (v.promptTemplate) ac.promptTemplate = v.promptTemplate;
if (v.bootstrapPrompt) ac.bootstrapPromptTemplate = v.bootstrapPrompt;
if (v.model) ac.model = v.model; if (v.model) ac.model = v.model;
ac.timeoutSec = 0; ac.timeoutSec = 0;
ac.graceSec = 15; ac.graceSec = 15;
@@ -547,7 +546,7 @@ Import from `@paperclip/adapter-utils/server-utils`:
- Document all fields in `agentConfigurationDoc` - Document all fields in `agentConfigurationDoc`
### Prompt Templates ### Prompt Templates
- Support both `promptTemplate` (for resumed sessions) and `bootstrapPromptTemplate` (for first run) - Support `promptTemplate` for every run
- Use `renderTemplate()` with the standard variable set - Use `renderTemplate()` with the standard variable set
- Default prompt: `"You are agent {{agent.id}} ({{agent.name}}). Continue your Paperclip work."` - Default prompt: `"You are agent {{agent.id}} ({{agent.name}}). Continue your Paperclip work."`

View File

@@ -63,7 +63,7 @@ curl -sS "$PAPERCLIP_API_URL/llms/agent-icons.txt" \
- adapter type - adapter type
- adapter and runtime config aligned to this environment - adapter and runtime config aligned to this environment
- capabilities - capabilities
- initial prompt in adapter config (`bootstrapPromptTemplate`/`promptTemplate` where applicable) - run prompt in adapter config (`promptTemplate` where applicable)
- source issue linkage (`sourceIssueId` or `sourceIssueIds`) when this hire came from an issue - source issue linkage (`sourceIssueId` or `sourceIssueIds`) when this hire came from an issue
7. Submit hire request. 7. Submit hire request.
@@ -98,7 +98,7 @@ curl -sS "$PAPERCLIP_API_URL/api/approvals/<approval-id>" \
curl -sS -X POST "$PAPERCLIP_API_URL/api/approvals/<approval-id>/comments" \ curl -sS -X POST "$PAPERCLIP_API_URL/api/approvals/<approval-id>/comments" \
-H "Authorization: Bearer $PAPERCLIP_API_KEY" \ -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"body":"## CTO hire request submitted\n\n- Approval: [<approval-id>](/approvals/<approval-id>)\n- Pending agent: [<agent-id>](/agents/<agent-id>)\n- Source issue: [<issue-id>](/issues/<issue-id>)\n\nUpdated prompt and adapter config per board feedback."}' -d '{"body":"## CTO hire request submitted\n\n- Approval: [<approval-id>](/approvals/<approval-id>)\n- Pending agent: [<agent-ref>](/agents/<agent-url-key-or-id>)\n- Source issue: [<issue-ref>](/issues/<issue-identifier-or-id>)\n\nUpdated prompt and adapter config per board feedback."}'
``` ```
If the approval already exists and needs manual linking to the issue: If the approval already exists and needs manual linking to the issue:

View File

@@ -36,6 +36,7 @@ Follow these steps every time you wake up:
**Step 3 — Get assignments.** `GET /api/companies/{companyId}/issues?assigneeAgentId={your-agent-id}&status=todo,in_progress,blocked`. Results sorted by priority. This is your inbox. **Step 3 — Get assignments.** `GET /api/companies/{companyId}/issues?assigneeAgentId={your-agent-id}&status=todo,in_progress,blocked`. Results sorted by priority. This is your inbox.
**Step 4 — Pick work (with mention exception).** Work on `in_progress` first, then `todo`. Skip `blocked` unless you can unblock it. **Step 4 — Pick work (with mention exception).** Work on `in_progress` first, then `todo`. Skip `blocked` unless you can unblock it.
**Blocked-task dedup:** Before working on a `blocked` task, fetch its comment thread. If your most recent comment was a blocked-status update AND no new comments from other agents or users have been posted since, skip the task entirely — do not checkout, do not post another comment. Exit the heartbeat (or move to the next task) instead. Only re-engage with a blocked task when new context exists (a new comment, status change, or event-based wake like `PAPERCLIP_WAKE_COMMENT_ID`).
If `PAPERCLIP_TASK_ID` is set and that task is assigned to you, prioritize it first for this heartbeat. If `PAPERCLIP_TASK_ID` is set and that task is assigned to you, prioritize it first for this heartbeat.
If this run was triggered by a comment mention (`PAPERCLIP_WAKE_COMMENT_ID` set; typically `PAPERCLIP_WAKE_REASON=issue_comment_mentioned`), you MUST read that comment thread first, even if the task is not currently assigned to you. If this run was triggered by a comment mention (`PAPERCLIP_WAKE_COMMENT_ID` set; typically `PAPERCLIP_WAKE_REASON=issue_comment_mentioned`), you MUST read that comment thread first, even if the task is not currently assigned to you.
If that mentioned comment explicitly asks you to take the task, you may self-assign by checking out `PAPERCLIP_TASK_ID` as yourself, then proceed normally. If that mentioned comment explicitly asks you to take the task, you may self-assign by checking out `PAPERCLIP_TASK_ID` as yourself, then proceed normally.
@@ -96,10 +97,10 @@ Workspace rules:
- **Self-assign only for explicit @-mention handoff.** This requires a mention-triggered wake with `PAPERCLIP_WAKE_COMMENT_ID` and a comment that clearly directs you to do the task. Use checkout (never direct assignee patch). Otherwise, no assignments = exit. - **Self-assign only for explicit @-mention handoff.** This requires a mention-triggered wake with `PAPERCLIP_WAKE_COMMENT_ID` and a comment that clearly directs you to do the task. Use checkout (never direct assignee patch). Otherwise, no assignments = exit.
- **Honor "send it back to me" requests from board users.** If a board/user asks for review handoff (e.g. "let me review it", "assign it back to me"), reassign the issue to that user with `assigneeAgentId: null` and `assigneeUserId: "<requesting-user-id>"`, and typically set status to `in_review` instead of `done`. - **Honor "send it back to me" requests from board users.** If a board/user asks for review handoff (e.g. "let me review it", "assign it back to me"), reassign the issue to that user with `assigneeAgentId: null` and `assigneeUserId: "<requesting-user-id>"`, and typically set status to `in_review` instead of `done`.
Resolve requesting user id from the triggering comment thread (`authorUserId`) when available; otherwise use the issue's `createdByUserId` if it matches the requester context. Resolve requesting user id from the triggering comment thread (`authorUserId`) when available; otherwise use the issue's `createdByUserId` if it matches the requester context.
- **Always comment** on `in_progress` work before exiting a heartbeat. - **Always comment** on `in_progress` work before exiting a heartbeat**except** for blocked tasks with no new context (see blocked-task dedup in Step 4).
- **Always set `parentId`** on subtasks (and `goalId` unless you're CEO/manager creating top-level work). - **Always set `parentId`** on subtasks (and `goalId` unless you're CEO/manager creating top-level work).
- **Never cancel cross-team tasks.** Reassign to your manager with a comment. - **Never cancel cross-team tasks.** Reassign to your manager with a comment.
- **Always update blocked issues explicitly.** If blocked, PATCH status to `blocked` with a blocker comment before exiting, then escalate. - **Always update blocked issues explicitly.** If blocked, PATCH status to `blocked` with a blocker comment before exiting, then escalate. On subsequent heartbeats, do NOT repeat the same blocked comment — see blocked-task dedup in Step 4.
- **@-mentions** (`@AgentName` in comments) trigger heartbeats — use sparingly, they cost budget. - **@-mentions** (`@AgentName` in comments) trigger heartbeats — use sparingly, they cost budget.
- **Budget**: auto-paused at 100%. Above 80%, focus on critical tasks only. - **Budget**: auto-paused at 100%. Above 80%, focus on critical tasks only.
- **Escalate** via `chainOfCommand` when stuck. Reassign to manager or create a task for them. - **Escalate** via `chainOfCommand` when stuck. Reassign to manager or create a task for them.
@@ -111,7 +112,16 @@ When posting issue comments, use concise markdown with:
- a short status line - a short status line
- bullets for what changed / what is blocked - bullets for what changed / what is blocked
- links to related entities when available (`[Issue XYZ](/issues/<id>)`, `[Approval](/approvals/<id>)`, `[Agent](/agents/<id>)`) - links to related entities when available (`[Issue PAP-123](/issues/<issue-identifier>)`, `[Approval](/approvals/<approval-id>)`, `[Agent](/agents/<agent-url-key-or-id>)`)
Prefer canonical UI links:
- Issues: `/issues/<issue-identifier>` (for example `PAP-224`)
- Agents: `/agents/<agent-url-key>` (id fallback allowed)
- Projects: `/projects/<project-url-key>` (id fallback allowed)
- Runs: `/agents/<agent-url-key-or-id>/runs/<run-id>`
Compatibility redirect behavior: UUID/id links such as `/issues/<uuid>`, `/agents/<id>`, `/projects/<id>`, and `/agents/<id>/runs/<run-id>` should resolve and redirect to canonical routes.
Example: Example:
@@ -121,8 +131,8 @@ Example:
Submitted CTO hire request and linked it for board review. Submitted CTO hire request and linked it for board review.
- Approval: [ca6ba09d](/approvals/ca6ba09d-b558-4a53-a552-e7ef87e54a1b) - Approval: [ca6ba09d](/approvals/ca6ba09d-b558-4a53-a552-e7ef87e54a1b)
- Pending agent: [CTO draft](/agents/66b3c071-6cb8-4424-b833-9d9b6318de0b) - Pending agent: [CTO draft](/agents/cto)
- Source issue: [PC-142](/issues/244c0c2c-8416-43b6-84c9-ec183c074cc1) - Source issue: [PC-142](/issues/PC-142)
``` ```
## Planning (Required when planning requested) ## Planning (Required when planning requested)

View File

@@ -217,8 +217,8 @@ Use markdown formatting and include links to related entities when they exist:
## Update ## Update
- Approval: [APPROVAL_ID](/approvals/<approval-id>) - Approval: [APPROVAL_ID](/approvals/<approval-id>)
- Pending agent: [AGENT_NAME](/agents/<agent-id>) - Pending agent: [AGENT_NAME](/agents/<agent-url-key-or-id>)
- Source issue: [ISSUE_ID](/issues/<issue-id>) - Source issue: [ISSUE_ID](/issues/<issue-identifier-or-id>)
``` ```
**@-mentions:** Mention another agent by name using `@AgentName` to automatically wake them: **@-mentions:** Mention another agent by name using `@AgentName` to automatically wake them: