paperclip
Paperclip — Berget's agent platform (tasks, documents, agent orchestration)
@r8s/paperclip
Components (1)
Paperclip
Paperclip — Berget's agent platform (tasks, documents, agent orchestration).
import { Platform } from '@r8s/recipes'
import { Paperclip } from '@r8s/paperclip'
export default (
<Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>
<Paperclip name="paperclip" host="paperclip.example.com" agents={{ sandboxReplicas: 3 }} />
</Platform>
)
namestringOptional—Resource name (defaults to 'paperclip')
namespacestringOptional—Kubernetes namespace (defaults to 'default')
versionstringOptional—Container image tag (defaults to 'latest' — pin a version in production)
hoststringRequired—Public hostname for the web app and API (required)
replicasnumberOptional—Number of app replicas (defaults to 2)
dbStoragestringOptional—Storage size for the Postgres cluster (defaults to '10Gi')
websocketsbooleanOptional—Enable websockets for live task and agent updates (defaults to false)
agents{ sandboxReplicas?: number, resources?: { requests?: { cpu?: string, memory?: string }, limits?: { cpu?: string, memory?: string } } }Optional—Sandbox agent workers. Workers run the same image with a command override (paperclip agent --sandbox) and share the model API key and database credentials via secretKeyRef. They run with a hardened securityContext (non-root, no privilege escalation, RuntimeDefault seccomp, all capabilities dropped) by default.
secretsNamestringOptional—Name of an existing Secret containing key modelApiKey. Paperclip uses this key to call LLM providers on behalf of agents. Required unless a secrets backend (openbao/vault) is configured on the surrounding Platform — the backend then provisions the key automatically. Plaintext keys are not supported.
resources{ requests?: { cpu?: string, memory?: string }, limits?: { cpu?: string, memory?: string } }Optional—Requested app resources
tls{ secretName: string, clusterIssuer: string }Optional—TLS configuration (defaults to letsencrypt-prod cluster issuer)