Files
paperclip-docs/docs/reference/deploy/local-development.md
Aron PrinsandClaude Opus 4.8 27d7a5ab4c Release docs for paperclip v2026.831.1 (#120)
Syncs docs to parent release **v2026.831.1** (cumulative from
`v2026.824.1`, via merge-base `664052f`). Authored fresh against the
release tag; every claim verified at the tag.

## What changed

**New**
- **Kimi Code adapter** (`kimi_local`) — new reference page, wired into
the adapters overview, nav, and anchor-map source mapping.

**Reference**
- **Env vars** — `PAPERCLIP_WORKSPACE_REAPER_COOLDOWN_DAYS`, opt-in
`SENTRY_DSN`, and the operator controls `PAPERCLIP_HIDDEN_SETTINGS` /
`PAPERCLIP_SETTING_DEFAULTS`.
- **Instance Settings** — new "operator controls for hosted deployments"
section (hide surfaces / override defaults).
- **Node.js floor → 24.11.0** across installation, setup,
local-development, plugin dev, Modal, and the getting-started/terminal
guides.
- **Grok adapter** — `permissionMode` no longer defaults to `dontAsk`;
when unset no flag is passed, and `--always-approve` is the unattended
policy.
- **CLI `agent`** — Kimi skills install path (`~/.kimi-code/skills`) +
`KIMI_CODE_HOME`.

**Guides**
- **Onboarding** — rebuilt around a single-card wizard that opens on
creating your agent; the mission step is gone, the goal is set
afterward.
- **Settings unification** — Invites folded into a Members tab, one
shared settings nav, and the company brand color + per-company
attachment size limit removed (also reflected in the Companies and Cases
APIs).
- **Governance behavior** — silent-run detection and stranded-task
recovery no longer act on their own; agent thought text is excluded from
automatic comments; invalid agent credentials now return `401`.

**Changelog** — entry added for v2026.831.1.

## Gates

- `docs:build`, SEO metadata, crawlable-links, sitemap-lastmod
(194/194), lint-links, verify-nav — all pass.
- **Edit verification:** every new high-confidence claim verified at the
tag.
- **Tag-accuracy gate:** 31 files checked, **0 post-tag leaks**, 30
clean, 1 review (below).

## ⚠ Drift (Verify before acting — not auto-resolved)

Medium-confidence REST-route drift in `docs/reference/api/companies.md`
— the import-transfer routes may no longer exist at these paths (likely
a false negative from prefix/dynamic registration; confirm before
editing):

- `POST /api/companies/import/transfers`
- `PUT /api/companies/import/transfers/{transferId}/parts/{partIndex}`
- `GET /api/companies/import/transfers/{transferId}`
- `POST /api/companies/import/transfers/{transferId}/preview`
- `POST /api/companies/import/transfers/{transferId}/apply`

## ⚠ Review

- `docs/reference/adapters/kimi-local.md` — new page; the only flagged
claim is the `secret-id` JSON **example placeholder** (not a real
identifier). Authored directly from the adapter's config surface at the
tag.

## Screenshots (deferred)

288 of 342 registered screenshots are stale (org-wide rename +
settings/onboarding rewrites), tracked in `SCREENSHOTS_PENDING.md`.
Recapture is a follow-up pass — **the merged pages describe the new
onboarding/settings UI while screenshots still show the old flow until
then.**

---------

Co-authored-by: Claude Opus 4.8 <[email protected]>
2026-09-02 13:06:00 +02:00

164 lines
3.9 KiB
Markdown

---
seo_title: Local Development Setup
seo_description: The fastest way to run Paperclip locally, using embedded PostgreSQL, local disk storage, and the local trusted deployment mode by default.
---
# Local Development
This is the fastest way to run Paperclip locally. The default path uses embedded PostgreSQL, local disk storage, and the local trusted deployment mode.
Use this page if you want to get the app running quickly, reset a local install, or start a private-network dev instance.
---
## Prerequisites
- Node.js 24+ (24.11.0 or newer)
- pnpm 9+
> **Note:** You do not need a separate PostgreSQL install for the normal local workflow.
---
## Start The Server
```sh
pnpm install
pnpm dev
```
This starts:
- the API server at `http://localhost:3100`
- the UI from the API server in dev middleware mode
The first start automatically uses embedded PostgreSQL if `DATABASE_URL` is unset. See [Database](./database.md) for the storage modes behind that behavior.
---
## One-Command Bootstrap
If you want setup and startup in one step, use:
```sh
pnpm paperclipai run
```
This is the best command for a first-time install because it:
1. auto-onboards if no config exists
2. runs `paperclipai doctor` with repair enabled
3. starts the server once checks pass
Use this when you want Paperclip to behave like an app, not a manually assembled stack.
---
## Managed Dev Runner
The dev runner is idempotent for the current repo and instance. If the matching Paperclip dev runner is already alive, Paperclip reports the existing process instead of starting a duplicate.
Inspect or stop it with:
```sh
pnpm dev:list
pnpm dev:stop
```
---
## Private Network Dev
If you want to access a local instance over Tailscale or another private network, run the authenticated private dev mode:
```sh
pnpm dev --tailscale-auth
```
Alias:
```sh
pnpm dev --authenticated-private
```
This configures the instance for authenticated private exposure and binds the server to `0.0.0.0`.
If you need to allow additional private hostnames:
```sh
pnpm paperclipai allowed-hostname dotta-macbook-pro
```
See [Tailscale Private Access](./tailscale-private-access.md) for the full workflow.
---
## Health Checks
After startup, verify the instance is alive:
```sh
curl http://localhost:3100/api/health
```
Expected response:
```json
{"status":"ok"}
```
You can also confirm the API is serving company data:
```sh
curl http://localhost:3100/api/companies
```
---
## Reset Local Data
To wipe the embedded database and start over:
```sh
rm -rf ~/.paperclip/instances/default/db
pnpm dev
```
This removes the local database only. It does not change your repo checkout or any other workspace data.
---
## Worktrees And Isolated Instances
If you work from multiple git worktrees, do not point two Paperclip servers at the same embedded PostgreSQL data directory.
Create a repo-local isolated instance instead:
```sh
pnpm paperclipai worktree init
```
That command creates a repo-local `.paperclip` config and an isolated instance under `~/.paperclip-worktrees` so the new worktree does not share the default embedded database.
> **Tip:** This is the safest way to test docs or feature work in parallel across multiple branches.
---
## Default Data Paths
| Data | Path |
|---|---|
| Config | `~/.paperclip/instances/default/config.json` |
| Database | `~/.paperclip/instances/default/db` |
| Storage | `~/.paperclip/instances/default/data/storage` |
| Secrets key | `~/.paperclip/instances/default/secrets/master.key` |
| Logs | `~/.paperclip/instances/default/logs` |
These paths are under `PAPERCLIP_HOME` and `PAPERCLIP_INSTANCE_ID`. Override them when you want an isolated local instance:
```sh
PAPERCLIP_HOME=/custom/path PAPERCLIP_INSTANCE_ID=dev pnpm paperclipai run
```
> **Tip:** If you are working in a second checkout or worktree, give it its own instance ID so you do not share the same embedded database by accident.