Docs · Paperclip
Run Paperclip on your company's accounts
Paperclip is a web app for running a company of AI agents. Here its Claude Code agents run on your company's Selan accounts, with no Claude login. It is one of the Selan apps.
Get started
How do I run Paperclip with selan?
selan app paperclip
The first time, selan app prints the commit and the scripts and asks
[y/N]: only y or yes approves, and Enter refuses. It installs Paperclip, starts it, and opens
http://127.0.0.1:3100. Stop it with Ctrl-C. PAPERCLIP_PORT
changes the port, and arguments after the app's name go to paperclipai run.
You need curl, node and npm, and Claude Code
(claude) on your PATH for the agents. It runs on macOS and Linux; on Windows
use WSL.
How do I run Paperclip without selan?
You need an API token, which an owner mints in control under Settings → API tokens. Read the script, then:
export SELAN_TOKEN=selanct_...
curl -fsSL https://raw.githubusercontent.com/selan-ai/selan-apps/main/paperclip/install.sh | bash
~/.selan/apps/paperclip/run.sh
How do I run Paperclip on a server?
Add the selan-apps plugin to Claude Code and ask for a
deploy. deploy-google-cloud makes a Compute Engine VM in your project.
deploy-hostinger uses a Hostinger VPS you already have, and it has not been
tested against a real VPS.
A server has no session, so an owner creates an API token under Settings → API tokens and you paste it into a line that hides it. Claude never sees it. The skill keeps it in Secret Manager or in a file only root can read, and revokes it when you remove the deploy.
On a server Paperclip stays on localhost and has no login, so its port is never opened. You reach it through an SSH tunnel. On Google Cloud:
gcloud compute ssh selan-paperclip --project PROJECT --zone ZONE --tunnel-through-iap -- -N -L 3100:127.0.0.1:3100
On a Hostinger VPS:
ssh -N -L 3100:127.0.0.1:3100 root@HOST
Then open http://127.0.0.1:3100 on your own machine.
How it works
What does the launch do?
- Starts Paperclip. The first time it runs Paperclip's own setup, local and on loopback only.
- In every company, creates a connection called “Selan”, or updates its key if there is one. It uses the Anthropic Messages endpoint at the gateway, shared with all agents, with your company's models. Never a second connection.
- Binds every
claude_localagent that has no AI connection to it. A company or agent you add while it runs is picked up within 15 seconds. An agent you point at another connection is left alone.
Paperclip's own model calls use the same connections.
What does Paperclip put on my disk?
Everything is under ~/.selan/apps/paperclip: node_modules/ with
the pinned paperclipai, data/ with Paperclip's database, keys and
files, npm-cache/, xdg/ and run.sh. Nothing is
installed globally. Claude Code keeps its own sessions in ~/.claude, as it
always does.
Which models, connectors and skills do the agents get?
The models are your company's catalog, listed on the connection from the gateway. The agents are Claude Code agents, so they use Claude Code's own connectors and skills.
Other agent types:
codex_localworks when its command is a wrapper that runsselan codex "$@".opencode_localneeds workarounds that are not set up here.claude_localwith its command set toselan claudestays in “verifying”. Leave the command alone.
claude_local agents are Claude Code itself, so a Claude model answers
normally. Hermes Agent is the app that does not.
What if Paperclip did not work?
- It says
SELAN_TOKENis not set. By hand, export aselanct_token first.selan appsets it for you. - It says Paperclip is not installed. Run
install.shfirst, or useselan app paperclip, which does both. - The agents stop answering. The token was revoked or expired. Run the launch again so the connection gets the current key.
- The page does not open. Paperclip may be on another port; check
PAPERCLIP_PORT. On a server, the tunnel has to be running. - An agent still asks for a Claude login. It is not a
claude_localagent, or you pointed it at another connection. - Something else. Ask us.