Release docs for paperclip v2026.618.0

Promote nightly drafts (v2026.609.0 → v2026.618.0) to main and fill coverage gaps.

New surfaces authored:
- Novita Agent Sandbox provider (driver: novita) — sandbox-providers.md
- paperclip-board bundled skill — skills.md (skills/ went 5 → 6; "four" → "five")

Promoted nightly drafts (all ⊆ v2026.618.0, no post-tag leakage):
- adapters: codex/gemini/opencode/pi/openclaw-gateway, sandbox-providers (Kubernetes)
- api/agents, plugins/sdk, environment-variables (TRUST_PROXY/OTEL)
- day-to-day guides: artifacts, issues, routines

Stamped paperclip_version: v2026.618.0 on all 13 touched pages.
Regenerated SCREENSHOTS_PENDING.md (90/276 stale — flag only, separate capture PR).

Deferred: experimental conference-room board-chat (flag-gated).
sync:check clean (no broken links); drift = 5 known server-env false positives.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
Aron PrinsandClaude Opus 4.8 committed 2026-06-19 00:48:23 +02:00
1 parent 1deeca2f7a
commit 2368a2be5f
15 files changed
+161 -33

No files matched your search

+5 -7
View File
@@ -1,9 +1,7 @@
{
"branch_mode": "nightly",
"base_release_tag": "v2026.609.0",
"base_release_sha": "a0f7d3dabaf5308ade45cae0c64ebd133948dca2",
"last_seen_parent_sha": "1b89a8e3b86a68b1eb59c62863991fc50cb15fd1",
"last_applied_manifest_hash": "18c709087796eac108c550639c7f5c44697aa932b7872673893311ef40a94ce1",
"last_run_at": "2026-06-17T08:57:00Z",
"last_run_outcome": "no-changes"
"branch_mode": "release",
"base_release_tag": "v2026.618.0",
"base_release_sha": "83a293b16155efed5aa002071c4f4b7007add400",
"last_seen_parent_sha": "83a293b16155efed5aa002071c4f4b7007add400",
"last_run_outcome": "applied"
}
+96 -17
View File
@@ -1,21 +1,100 @@
# Screenshots pending refresh
# Screenshots Pending
Window: `v2026.609.0` → parent `master` HEAD (`1b89a8e`), nightly run 2026-06-17. (No UI sources changed since the prior run — the only new upstream commit was a Dockerfile fix; the stale set below is unchanged.)
Stale screenshots flagged by the **v2026.618.0** release sync (window `v2026.609.0` → `v2026.618.0`).
Stale entries are those whose `depends_on` UI source changed within this cumulative window. 62 of 276 registry entries are affected.
Capture is a separate, human-reviewed PR — these are **not** auto-pushed. Run `npm run screenshots:refresh` against a local instance to recapture the flagged entries (light + dark @2x), then open a PR with the resulting PNGs.
Refresh with `npm run screenshots:refresh` (captures stale entries into a review PR — never auto-pushed).
**90 of 276 registry entries are stale.**
## Stale by changed UI source
- `ui/src/components/AgentConfigForm.tsx` → agent-config captures (20 entries, light + dark)
- `ui/src/pages/CompanySkills.tsx` → company skills captures (12 entries) — note the Skills Store foundation work is in flight; the discovery/detail surfaces are still storybook-only and not yet shipped as pages.
- `ui/src/pages/IssueDetail.tsx` → issue detail/chat/activity/sidebar captures (10 entries)
- `ui/src/pages/RoutineDetail.tsx` → routine detail / cron picker / run-history (6 entries)
- `ui/src/pages/NewAgent.tsx` → new-agent flow (4 entries)
- `ui/src/components/OnboardingWizard.tsx` → onboarding wizard (4 entries) — onboarding is mid-redesign (NUX variants / `OnboardingChat`, A/B-gated); capture after the variant settles.
- `ui/src/components/SidebarCompanyMenu.tsx` → sidebar company menu (4 entries)
- `ui/src/pages/Routines.tsx` → routines list (2 entries)
- `ui/src/pages/InstanceExperimentalSettings.tsx` → experimental settings (2 entries) — now hosts the Conference Room Chat toggle (experimental, flag-gated).
> Note: several of these UI surfaces changed as part of experimental / feature-flagged work (dark-mode theming, onboarding NUX variants, Conference Room Chat). Hold recaptures of the experimental surfaces until the flags settle so the live docs don't show transient states.
| Screenshot | Changed dependency paths |
|---|---|
| `dark/agents/adapter-type-dropdown.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/agents/agent-detail-idle.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/agent-detail-run-history.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/agent-status-running.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/budget-and-heartbeat-fields.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/agents/budget.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/claude-local-config-filled.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/agents/codex-local-config.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/agents/configuration.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/dashboard.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/heartbeat-toggle-disabled.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/agents/heartbeat-toggle-enabled.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/agents/http-adapter-config.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/agents/instructions.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/new-agent-name-role.png` | `ui/src/pages/NewAgent.tsx` |
| `dark/agents/new-agent-reports-to-field.png` | `ui/src/pages/NewAgent.tsx` |
| `dark/agents/run-history-in-progress.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/run-transcript-view.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/runs.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/skills.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/agents/test-environment-fail.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/agents/test-environment-success.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/costs/agent-budget-field.png` | `ui/src/pages/AgentDetail.tsx` |
| `dark/issues/detail-activity.png` | `ui/src/pages/IssueDetail.tsx` |
| `dark/issues/detail-chat.png` | `ui/src/pages/IssueDetail.tsx` |
| `dark/issues/detail-sidebar.png` | `ui/src/pages/IssueDetail.tsx` |
| `dark/issues/list.png` | `ui/src/pages/IssueDetail.tsx` |
| `dark/onboarding/goal-field.png` | `ui/src/components/OnboardingWizard.tsx` |
| `dark/onboarding/new-company-modal-empty.png` | `ui/src/components/OnboardingWizard.tsx`, `ui/src/components/SidebarCompanyMenu.tsx` |
| `dark/onboarding/sidebar-new-company-button.png` | `ui/src/components/SidebarCompanyMenu.tsx` |
| `dark/org/reassign.png` | `ui/src/components/AgentConfigForm.tsx` |
| `dark/org/skills-list.png` | `ui/src/pages/CompanySkills.tsx` |
| `dark/plugins/install.png` | `ui/src/pages/PluginManager.tsx` |
| `dark/plugins/list.png` | `ui/src/pages/PluginManager.tsx` |
| `dark/routines/cron-picker.png` | `ui/src/pages/RoutineDetail.tsx` |
| `dark/routines/detail.png` | `ui/src/pages/RoutineDetail.tsx` |
| `dark/routines/list.png` | `ui/src/pages/Routines.tsx` |
| `dark/routines/run-history.png` | `ui/src/pages/RoutineDetail.tsx` |
| `dark/settings/experimental.png` | `ui/src/pages/InstanceExperimentalSettings.tsx` |
| `dark/skills/add-skill-dialog-confirm.png` | `ui/src/pages/CompanySkills.tsx` |
| `dark/skills/add-skill-dialog.png` | `ui/src/pages/CompanySkills.tsx` |
| `dark/skills/assign-to-agent.png` | `ui/src/pages/CompanySkills.tsx` |
| `dark/skills/file-inventory.png` | `ui/src/pages/CompanySkills.tsx` |
| `dark/skills/list.png` | `ui/src/pages/CompanySkills.tsx` |
| `dark/tasks/task-detail-with-comments.png` | `ui/src/pages/IssueDetail.tsx` |
| `light/agents/adapter-type-dropdown.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/agents/agent-detail-idle.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/agent-detail-run-history.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/agent-status-running.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/budget-and-heartbeat-fields.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/agents/budget.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/claude-local-config-filled.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/agents/codex-local-config.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/agents/configuration.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/dashboard.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/heartbeat-toggle-disabled.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/agents/heartbeat-toggle-enabled.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/agents/http-adapter-config.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/agents/instructions.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/new-agent-name-role.png` | `ui/src/pages/NewAgent.tsx` |
| `light/agents/new-agent-reports-to-field.png` | `ui/src/pages/NewAgent.tsx` |
| `light/agents/run-history-in-progress.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/run-transcript-view.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/runs.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/skills.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/agents/test-environment-fail.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/agents/test-environment-success.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/costs/agent-budget-field.png` | `ui/src/pages/AgentDetail.tsx` |
| `light/issues/detail-activity.png` | `ui/src/pages/IssueDetail.tsx` |
| `light/issues/detail-chat.png` | `ui/src/pages/IssueDetail.tsx` |
| `light/issues/detail-sidebar.png` | `ui/src/pages/IssueDetail.tsx` |
| `light/issues/list.png` | `ui/src/pages/IssueDetail.tsx` |
| `light/onboarding/goal-field.png` | `ui/src/components/OnboardingWizard.tsx` |
| `light/onboarding/new-company-modal-empty.png` | `ui/src/components/OnboardingWizard.tsx`, `ui/src/components/SidebarCompanyMenu.tsx` |
| `light/onboarding/sidebar-new-company-button.png` | `ui/src/components/SidebarCompanyMenu.tsx` |
| `light/org/reassign.png` | `ui/src/components/AgentConfigForm.tsx` |
| `light/org/skills-list.png` | `ui/src/pages/CompanySkills.tsx` |
| `light/plugins/install.png` | `ui/src/pages/PluginManager.tsx` |
| `light/plugins/list.png` | `ui/src/pages/PluginManager.tsx` |
| `light/routines/cron-picker.png` | `ui/src/pages/RoutineDetail.tsx` |
| `light/routines/detail.png` | `ui/src/pages/RoutineDetail.tsx` |
| `light/routines/list.png` | `ui/src/pages/Routines.tsx` |
| `light/routines/run-history.png` | `ui/src/pages/RoutineDetail.tsx` |
| `light/settings/experimental.png` | `ui/src/pages/InstanceExperimentalSettings.tsx` |
| `light/skills/add-skill-dialog-confirm.png` | `ui/src/pages/CompanySkills.tsx` |
| `light/skills/add-skill-dialog.png` | `ui/src/pages/CompanySkills.tsx` |
| `light/skills/assign-to-agent.png` | `ui/src/pages/CompanySkills.tsx` |
| `light/skills/file-inventory.png` | `ui/src/pages/CompanySkills.tsx` |
| `light/skills/list.png` | `ui/src/pages/CompanySkills.tsx` |
| `light/tasks/task-detail-with-comments.png` | `ui/src/pages/IssueDetail.tsx` |
+1 -1
View File
@@ -1,5 +1,5 @@
---
paperclip_version: v2026.609.0
paperclip_version: v2026.618.0
---
# Artifacts
+1 -1
View File
@@ -1,5 +1,5 @@
---
paperclip_version: v2026.609.0
paperclip_version: v2026.618.0
---
# Issues
@@ -1,3 +1,7 @@
---
paperclip_version: v2026.618.0
---
# Heartbeats & Routines
When you first hire a few agents, it's tempting to give each one a timer — "wake up every few minutes and see if there's anything to do." It feels proactive. In practice, it's the fastest way to end up with a sidebar full of paused agents, surprise token bills, and a dashboard you have to fight with just to keep things quiet.
+4
View File
@@ -1,3 +1,7 @@
---
paperclip_version: v2026.618.0
---
# Codex Local
`codex_local` runs OpenAI's Codex CLI on the same machine as Paperclip. Use it when you want a local coding agent with persistent session state, managed `CODEX_HOME`, and Paperclip skills injected into the Codex skills directory.
+1 -1
View File
@@ -1,5 +1,5 @@
---
paperclip_version: v2026.609.0
paperclip_version: v2026.618.0
---
# Gemini Local
@@ -1,3 +1,7 @@
---
paperclip_version: v2026.618.0
---
# OpenClaw Gateway
`openclaw_gateway` connects Paperclip to an OpenClaw instance over the OpenClaw Gateway WebSocket protocol. Use it when OpenClaw is running on another machine, inside Docker, or behind a shared gateway and you want Paperclip agents to delegate work to it.
@@ -1,3 +1,7 @@
---
paperclip_version: v2026.618.0
---
# OpenCode Local
`opencode_local` runs OpenCode on the same machine as Paperclip. Use it when you want provider/model routing in OpenCode's `provider/model` format and session resume across heartbeats.
+4
View File
@@ -1,3 +1,7 @@
---
paperclip_version: v2026.618.0
---
# Pi Local
`pi_local` runs the Pi coding agent CLI on the same machine as Paperclip. Use it when you want Pi's built-in tool set (read, bash, edit, write, grep, find, ls), provider/model routing, and session resume across heartbeats.
+31 -1
View File
@@ -1,5 +1,5 @@
---
paperclip_version: v2026.517.0
paperclip_version: v2026.618.0
---
# Sandbox Providers
@@ -85,6 +85,36 @@ First-party sandbox provider that provisions [Modal](https://modal.com/) sandbox
---
## Novita (`driver: "novita"`)
Package: `@paperclipai/plugin-novita-sandbox` (alpha, currently `v0.1.0`).
Runs each agent on a [Novita](https://novita.ai/) Agent Sandbox instance. The plugin installs like a standalone npm package — open the [Plugins](../../administration/plugins.md) page and install it by name:
```text
@paperclipai/plugin-novita-sandbox
```
The host runs `npm install` into its managed plugin directory at install time, so the provider's own dependencies (such as `novita-sandbox`) are pulled in for you — there's nothing extra to add to your Paperclip instance.
Configure Novita from **Company Settings → Environments**, not from the plugin's instance-settings page. Put the Novita API key on the sandbox environment itself; when you save an environment, Paperclip stores pasted keys as company secrets. `NOVITA_API_KEY` remains an optional host-level fallback when an environment omits the key.
The driver's `configSchema` exposes:
| Field | Default | Purpose |
|---|---|---|
| `apiKey` | (none) | Environment-specific Novita API key — a pasted key or an existing Paperclip secret reference. Falls back to `NOVITA_API_KEY` when omitted. |
| `domain` | (SDK default) | Optional Novita API domain override. |
| `template` | (SDK default) | Novita sandbox template ID or name. Leave blank to use the SDK's default base template. |
| `requestedCwd` | `/home/user/paperclip-workspace` | Workspace directory created inside the sandbox lease. |
| `timeoutMs` | `300000` | Sandbox lifetime and default per-command timeout, in milliseconds. |
| `requestTimeoutMs` | `30000` | HTTP/RPC request timeout for Novita SDK calls, in milliseconds. |
| `secure` | `true` | Use secure connections when the Novita SDK supports them. |
| `autoPause` | `false` | Enable Novita's sandbox auto-pause when the selected template supports it. |
| `reuseLease` | `false` | Pause and later resume the sandbox across Paperclip runs instead of killing it on release. |
---
## Kubernetes (`driver: "kubernetes"`)
Package: `@paperclipai/plugin-kubernetes` (alpha, currently `v0.1.0`).
+1 -1
View File
@@ -1,5 +1,5 @@
---
paperclip_version: v2026.525.0
paperclip_version: v2026.618.0
---
# Agents
@@ -1,5 +1,5 @@
---
paperclip_version: v2026.512.0
paperclip_version: v2026.618.0
---
# Environment Variables
+1 -1
View File
@@ -1,5 +1,5 @@
---
paperclip_version: v2026.525.0
paperclip_version: v2026.618.0
---
# Plugin SDK
+3 -2
View File
@@ -1,5 +1,5 @@
---
paperclip_version: v2026.609.0
paperclip_version: v2026.618.0
---
# Skills Reference
@@ -90,6 +90,7 @@ When importing from a project workspace where `SKILL.md` lives at the repo root
Bundled with the Paperclip server (`skills/` next to the server):
- `paperclip` — base heartbeat procedure.
- `paperclip-board` — manage a company as a board member via chat: onboarding (company creation, CEO setup, hiring plans), agent management, approvals, task monitoring, cost oversight, and work-product review. Set up by `paperclipai board setup`.
- `paperclip-create-agent` — governance-aware hire workflow.
- `paperclip-create-plugin` — plugin scaffold flow.
- `paperclip-dev` — operating a local Paperclip instance.
@@ -189,7 +190,7 @@ The scan is non-destructive: it returns `imported`, `updated`, `skipped`, `confl
Editable, Paperclip-managed skills are written to `<paperclipInstanceRoot>/skills/{companyId}/<slug>/`. Read-only sources (GitHub, skills.sh, URL) keep the `markdown` body in the database row and only materialise into a temporary location when an adapter needs the files on disk.
Bundled skills (the four `paperclip-*` skills shipped with the server) are re-imported from the server's `skills/` directory on every list call (`ensureBundledSkills`). They cannot be edited or deleted — installing the same Paperclip release will recreate them.
Bundled skills (the five `paperclip-*` skills shipped with the server) are re-imported from the server's `skills/` directory on every list call (`ensureBundledSkills`). They cannot be edited or deleted — installing the same Paperclip release will recreate them.
---