Paperclip Deployment Modes Explained: `local_trusted`, `authenticated`, and `private/public` Configuration
Paperclip supports three deployment modes—local_trusted, authenticated + private, and authenticated + public—each designed for specific security requirements ranging from solo development to public SaaS hosting.
The paperclipai/paperclip repository provides flexible deployment configurations that control authentication requirements and network accessibility. These modes are configured during the paperclipai onboard wizard or set via environment variables at runtime, allowing operators to match their security posture to their infrastructure.
The Three Paperclip Deployment Modes
Paperclip's deployment architecture separates authentication (who can access) from network reachability (where access originates). This creates three distinct operational modes:
1. local_trusted – No Authentication, Loopback Only
The local_trusted mode eliminates login friction for single-operator scenarios. In docs/deploy/deployment-modes.md, this is defined as the default onboarding option for development environments.
| Attribute | Configuration |
|---|---|
| Authentication | None required |
| Network binding | loopback (localhost only) |
| Board identity | Auto-created as local board user |
Use this mode when prototyping, scripting, or running Paperclip on a personal workstation where remote access is unnecessary. The instance binds exclusively to 127.0.0.1, making it unreachable from other machines.
# Select during onboarding
pnpm paperclipai onboard
# → choose "local_trusted"
# Or override temporarily
PAPERCLIP_DEPLOYMENT_MODE=local_trusted pnpm paperclipai run
2. authenticated + private – Login Required, Private Network
Production deployments behind VPNs, Tailscale networks, or corporate LANs use the authenticated + private mode. As documented in docs/deploy/overview.md, this mode enforces Better Auth login while remaining inaccessible from the public internet.
| Attribute | Configuration |
|---|---|
| Authentication | Better Auth login required |
| Network binding | loopback, lan, tailnet, or custom |
| Typical use | On-premise, VPN, Tailscale clusters |
The PAPERCLIP_BIND environment variable controls network exposure with options including:
loopback– localhost onlylan– bind to all LAN interfacestailnet– Tailscale network interfacecustom– specific hostname or interface
# Onboard with authenticated private mode
pnpm paperclipai onboard
# → choose "authenticated" → "private"
# Allow a specific Tailscale hostname
npx paperclipai allowed-hostname my-machine
# Run bound to LAN
PAPERCLIP_DEPLOYMENT_MODE=authenticated PAPERCLIP_BIND=lan pnpm paperclipai run
3. authenticated + public – Login Required, Internet-Facing
Cloud-hosted and SaaS deployments use authenticated + public mode. According to docs/deploy/environment-variables.md, this configuration performs stricter deployment validation (doctor checks) to protect against hostile environments.
| Attribute | Configuration |
|---|---|
| Authentication | Better Auth login required |
| Network binding | Typically loopback behind reverse proxy |
| Security level | Hardened with additional validation |
This mode is mandatory when exposing Paperclip to the internet, even behind a reverse proxy. The PAPERCLIP_PUBLIC_URL environment variable must be set to your external domain.
# Configure for public deployment
pnpm paperclipai onboard
# → choose "authenticated" → "public"
# Set public URL for reverse proxy setup
export PAPERCLIP_PUBLIC_URL=https://paperclip.mycompany.com
pnpm paperclipai run
How to Select Your Paperclip Deployment Mode
Choose based on your network topology and security requirements:
-
Solo development or experimentation → Use
local_trusted. No authentication overhead, localhost-only binding. -
Production in private network (VPN, Tailscale, LAN) → Use
authenticated + private. Enforces login without internet exposure. -
Multi-tenant SaaS or cloud hosting → Use
authenticated + public. Required for internet-facing instances with full security hardening.
Changing Deployment Mode After Onboarding
The paperclipai configure command provides an interactive UI to modify your deployment:
# Interactive reconfiguration
pnpm paperclipai configure --section server
For temporary overrides without persisting changes:
# Authenticated private on LAN
PAPERCLIP_DEPLOYMENT_MODE=authenticated PAPERCLIP_BIND=lan pnpm paperclipai run
# Authenticated public with custom binding
PAPERCLIP_DEPLOYMENT_MODE=authenticated PAPERCLIP_BIND=custom PAPERCLIP_PUBLIC_URL=https://example.com pnpm paperclipai run
Summary
local_trustedeliminates authentication for localhost-only development, configured indocs/deploy/deployment-modes.mdauthenticated + privateenforces Better Auth login for VPN/Tailscale/LAN deployments, documented indocs/deploy/overview.mdauthenticated + publicadds hardening checks for internet-facing SaaS hosting, withPAPERCLIP_PUBLIC_URLrequired perdocs/deploy/environment-variables.md- Switch modes via
paperclipai configure --section serveror environment variablesPAPERCLIP_DEPLOYMENT_MODEandPAPERCLIP_BIND
Frequently Asked Questions
What happens if I expose a local_trusted Paperclip instance to the network?
Do not bind local_trusted to external interfaces. The mode provides no authentication mechanism, making your instance vulnerable to unauthorized access. If you need network reachability, re-onboard with authenticated mode and select private or public accordingly.
Can I run authenticated + private mode without Tailscale or a VPN?
Yes. The lan bind option allows authenticated + private to operate on any private network without internet exposure. However, Tailscale or a VPN provides additional security layers for remote access scenarios.
What's the difference between PAPERCLIP_BIND=loopback in authenticated mode versus local_trusted?
Both bind to localhost, but authenticated + loopback still requires Better Auth login while local_trusted bypasses authentication entirely. Choose local_trusted only when you are the sole operator and want zero friction.
Is authenticated + public required for reverse proxy deployments?
Yes. Any internet-facing deployment—even behind Nginx, Caddy, or Cloudflare—must use authenticated + public mode. This ensures Paperclip performs security validations appropriate for hostile network environments.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →