Status: User-facing guide
Last updated: 2026-02-17
Audience: Operators setting up and running agents in Paperclip
Agents in Paperclip do not run continuously.
They run in heartbeats: short execution windows triggered by a wakeup.
Each heartbeat:
- Starts the configured agent adapter (for example, Claude CLI or Codex CLI)
- Gives it the current prompt/context
- Lets it work until it exits, times out, or is cancelled
- Stores results (status, token usage, errors, logs)
- Updates the UI live
An agent can be woken up in four ways:
timer: scheduled interval (for example every 5 minutes)assignment: when work is assigned/checked out to that agenton_demand: manual wakeup (button/API)automation: system-triggered wakeup for future automations
If an agent is already running, new wakeups are merged (coalesced) instead of launching duplicate runs.
Common choices:
claude_local: runs your localclaudeCLIcodex_local: runs your localcodexCLIprocess: generic shell command adapterhttp: calls an external HTTP endpoint
For claude_local and codex_local, Paperclip assumes the CLI is already installed and authenticated on the host machine.
In agent runtime settings, configure heartbeat policy:
enabled: allow scheduled heartbeatsintervalSec: timer interval (0 = disabled)wakeOnAssignment: wake when assigned workwakeOnOnDemand: allow ping-style on-demand wakeupswakeOnAutomation: allow system automation wakeups
For local adapters, set:
cwd(working directory)timeoutSec(max runtime per heartbeat)graceSec(time before force-kill after timeout/cancel)- optional env vars and extra CLI args
- use Test environment in agent configuration to run adapter-specific diagnostics before saving
You can set:
promptTemplate: used for every run (first run and resumed sessions)
Templates support variables like {{agent.id}}, {{agent.name}}, and run context values.
Paperclip stores session IDs for resumable adapters.
- Next heartbeat reuses the saved session automatically.
- This gives continuity across heartbeats.
- You can reset a session if context gets stale or confused.
Use session reset when:
- you significantly changed prompt strategy
- the agent is stuck in a bad loop
- you want a clean restart
For each heartbeat run you get:
- run status (
queued,running,succeeded,failed,timed_out,cancelled) - error text and stderr/stdout excerpts
- token usage/cost when available from the adapter
- full logs (stored outside core run rows, optimized for large output)
In local/dev setups, full logs are stored on disk under the configured run-log path.
Paperclip pushes runtime/activity updates to the browser in real time.
You should see live changes for:
- agent status
- heartbeat run status
- task/activity updates caused by agent work
- dashboard/cost/activity panels as relevant
If the connection drops, the UI reconnects automatically.
- Enable timer wakeups (for example every 300s)
- Keep assignment wakeups on
- Use a focused prompt template
- Watch run logs and adjust prompt/config over time
- Disable timer or set a long interval
- Keep wake-on-assignment enabled
- Use on-demand wakeups for manual nudges
- Short timeout
- Conservative prompt
- Monitor errors + cancel quickly when needed
- Reset sessions when drift appears
If runs fail repeatedly:
- Check adapter command availability (
claude/codexinstalled and logged in). - Verify
cwdexists and is accessible. - Inspect run error + stderr excerpt, then full log.
- Confirm timeout is not too low.
- Reset session and retry.
- Pause agent if it is causing repeated bad updates.
Typical failure causes:
- CLI not installed/authenticated
- bad working directory
- malformed adapter args/env
- prompt too broad or missing constraints
- process timeout
Claude-specific note:
- If
ANTHROPIC_API_KEYis set in adapter env or host environment, Claude uses API-key auth instead of subscription login. Paperclip surfaces this as a warning in environment tests, not a hard error.
Local CLI adapters run unsandboxed on the host machine.
That means:
- prompt instructions matter
- configured credentials/env vars are sensitive
- working directory permissions matter
Start with least privilege where possible, and avoid exposing secrets in broad reusable prompts unless intentionally required.
- Choose adapter (
claude_localorcodex_local). - Set
cwdto the target workspace. - Add bootstrap + normal prompt templates.
- Configure heartbeat policy (timer and/or assignment wakeups).
- Trigger a manual wakeup.
- Confirm run succeeds and session/token usage is recorded.
- Watch live updates and iterate prompt/config.