ワンクリックで
paperclip
Paperclip AI orchestration CLI — authentication, API usage, and self-hosted setup
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Paperclip AI orchestration CLI — authentication, API usage, and self-hosted setup
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Create and manage a Z-Library account for the Bianinho agent — registration, email verification via IMAP, and login workflow
Criar tasks visíveis no painel AionUI Scheduled Tasks — inserir diretamente na SQLite do AionUI
Debug protocol for AionUI macOS DMG white screen crashes — pattern, fixes, bundle analysis, and workflow.
AionUI — plataforma multi-agent cowork (frontend Electron). Arquitectura real, modos de acesso (Xvfb, web viewer, noVNC), e integração com Bianinho/Hermes. NUNCA inventar arquitectura sem verificar primeiro.
Diagnóstico e otimização de performance do MacBook — memória RAM, LaunchAgents, processos, bateria e swap. Workflow completo de 5 ações testado no MacBook Pro M1 Pro 16GB.
Organização de arquivos macOS — estruturar Desktop, Documents, Downloads, criar tarefas cron de limpeza automática.
| name | paperclip |
| description | Paperclip AI orchestration CLI — authentication, API usage, and self-hosted setup |
| category | ai-platforms |
Paperclip é um orquestrador de agentes IA (open-source, TypeScript, MIT). Repo: github.com/paperclipai/paperclip
| Item | Valor |
|---|---|
| ** systemd service** | ~/.config/systemd/user/paperclip.service |
| ** hermes symlink** | sudo ln -sf ~/.local/bin/hermes /usr/local/bin/hermes |
| ** Company ID** | paperclipai company list (descobrir dinamicamente) |
| ** Recovery agentes error** | paperclipai heartbeat run -a <agent-id> |
Descobrir Company ID:
paperclipai company list
# Procura o company_id no output — usa o campo "id" da empresa
Verificação rápida (após qualquer mudança):
paperclipai agent list -C $(paperclipai company list --json | jq -r '.[0].id')
# Todos devem mostrar idle ou running, 0 error
npx paperclipai onboard --yes
O Paperclip usa dois tipos de autenticação com purposes distintos:
pcp_board_...): Para comandos de board/CLI (auth whoami, dashboard, agent list, etc.)pcp_...): Para o servidor de agentes IA (agent API key do dashboard)PAPERCLIP_API_KEY sobrescreve o token do board — se definida, a CLI usa sempre a API key do agente, ignorando o token gravadopaperclipai auth login
# Abre URL: http://localhost:3100/cli-auth/<uuid>?token=pcp_cli_auth_<token>
# Aprovar no browser — a CLI faz poll e guarda o token em auth.json
paperclipai auth whoami
# 1. Criar challenge
CHALLENGE=$(curl -s -X POST "http://localhost:3100/api/cli-auth/challenges" \
-H "Content-Type: application/json" \
-d '{"command":"paperclipai auth login","clientName":"paperclipai cli","requestedAccess":"board"}')
echo $CHALLENGE
# 2. Aprovar no browser: abrir a URL retornada em "url" (http://localhost:3100/cli-auth/<id>?token=...)
# OU via curl (se souber o challenge ID):
curl -X POST "http://localhost:3100/api/cli-auth/challenges/<challenge-id>/approve" \
-H "Content-Type: application/json" \
-d '{"token":"<cli-auth-token>"}'
# 3. Obter board token do challenge (ou via GET /api/cli-auth/me)
# O challenge retorna: {"token": "...", "pollPath": "...", "boardApiToken": "pcp_board_..."}
# 4. Criar auth.json manualmente
cat > ~/.paperclip/auth.json << 'EOF'
{
"version": 1,
"credentials": {
"http://localhost:3100": {
"apiBase": "http://localhost:3100",
"token": "pcp_board_<token-obtido-no-passo-3>",
"createdAt": "2026-04-14T00:00:00.000Z",
"updatedAt": "2026-04-14T00:00:00.000Z",
"userId": "local-board"
}
}
}
EOF
chmod 600 ~/.paperclip/auth.json
# 5. Testar (SEM definir PAPERCLIP_API_KEY)
paperclipai auth whoami
~/.paperclip/auth.json — tokens de autenticação (board tokens). Este é o ficheiro correto.~/.paperclip/context.json — estado de contexto diverso (não é onde o CLI guarda tokens)POST /api/cli-auth/challenges com API key → returns { token, pollPath, boardApiToken }${apiBase}/api${pollPath}?token= a cada 1sGET /api/cli-auth/me com Authorization: Bearer <boardApiToken>~/.paperclip/auth.json~/.npm/_npx/<hash>/node_modules/.bin/paperclipai
O binário não está no PATH do utilizador. Criar symlink para acesso direto:
mkdir -p ~/.local/bin
# Se paperclipai está em ~/.npm/_npx/<hash>/node_modules/.bin/paperclipai:
ln -sf ~/.npm/_npx/<hash>/node_modules/.bin/paperclipai ~/.local/bin/paperclipai
# Ou usar sempre o caminho completo:
~/.npm/_npx/<hash>/node_modules/.bin/paperclipai <comando>
http://localhost:3100GET /api/healthpaperclipai agent list, paperclipai dashboard get, paperclipai issue list)local_trusted, exposure: privateO Paperclip NÃO sobe automaticamente após reboot. Sem isso, o SSH tunnel dá "connection refused" na porta 3100.
sudo loginctl enable-linger $USER
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/paperclip.service << 'EOF'
[Unit]
Description=Paperclip AI Agent Server
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/alvarobiano/.nvm/versions/node/v24.14.1/bin/node /home/alvarobiano/.nvm/versions/node/v24.14.1/bin/npx paperclipai run
WorkingDirectory=/home/alvarobiano
Environment="PATH=/home/alvarobiano/.nvm/versions/node/v24.14.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Restart=always
RestartSec=10
StandardOutput=append:/home/alvarobiano/.paperclip/instances/default/data/run-logs/stdout.log
StandardError=append:/home/alvarobiano/.paperclip/instances/default/data/run-logs/stderr.log
[Install]
WantedBy=default.target
EOF
O serviço systemd NÃO tem ~/.local/bin no PATH. O comando hermes (usado pelos agentes via adapter) precisa estar acessível. Criar symlink:
sudo ln -sf /home/alvarobiano/.local/bin/hermes /usr/local/bin/hermes
# Verificar: hermes --version (via sudo para confirmar que root o vê)
Sem isso, todos os agentes ficam em estado error com "Failed to start command 'hermes'".
systemctl --user daemon-reload
systemctl --user enable paperclip.service
systemctl --user start paperclip.service
paperclipai run (NÃO paperclipai start — este dá "unknown command")ls ~/.nvm/versions/node/)ss -tlnp | grep 3100 ou curl http://127.0.0.1:3100/api/healthsystemctl --user status paperclip.serviceerror — "Failed to start command 'hermes'"~/.local/bin no PATH# Criar symlinks permanentes (já aplicados em 15/04/2026)
sudo ln -sf ~/.local/bin/hermes /usr/local/bin/hermes
# Paperclipai pode estar em ~/.npm/_npx/<hash>/node_modules/.bin/paperclipai
# Descobrir o caminho real: find ~/.npm -name paperclipai -type f 2>/dev/null
sudo ln -sf ~/.npm/_npx/<hash>/node_modules/.bin/paperclipai /usr/local/bin/paperclipai
paperclipai agent list -C $(paperclipai company list --json | jq -r '.[0].id') → todos idle ou running, 0 errorwhich hermes retorna /usr/local/bin/hermeserrorAgentes podem ficar em error state mesmo após o servidor Paperclip reiniciar. O PostgreSQL embutido dá erros transitórios durante restarts — o agente está saudável mas o estado fica "preso" em error.
Sintoma: paperclipai agent list mostra agentes em error mas os logs não mostram erros activos.
Diagnóstico diferencial:
Recovery: heartbeat manual invocado funciona e o agente volta a idle ou running:
⚠️ Caminho do binário: usar which paperclipai para descobrir o caminho atual — o cache npx pode ter sido limpo. Em 18/04/2026 o caminho válido era:
PAPERCLIP=/home/alvarobiano/.nvm/versions/node/v24.14.1/bin/paperclipai
Recovery:
$PAPERCLIP heartbeat run \
-a <agent-id> \
--api-base http://localhost:3100 \
--source on_demand \
--trigger manual
Resultado esperado: Status: running → agente volta para idle.
Verificação post-recovery (5s após trigger):
$PAPERCLIP agent list -C <company-id>
Todos devem mostrar idle ou running, 0 error.
Nota: heartbeats individuais podem ser disparados em paralelo para múltiplos agentes.
Source: paperclip-embed-postgres-econnrefused/
Paperclip service crashes repeatedly with connect ECONNREFUSED 127.0.0.1:54329.
Restart counter hits 199+. Telegram notifications spam.
Embedded PostgreSQL data directory has a stale postmaster.pid file (old PID marked "stopping")
but the actual postgres process is dead or a zombie postgres process from a previous crash is still
claiming port 54329.
# 1. Kill any stray postgres processes for this instance
pkill -f "postgres.*paperclip" 2>/dev/null
sleep 1
# 2. Remove stale PID file
rm -f ~/.paperclip/instances/default/db/postmaster.pid
# 3. Restart Paperclip via systemd
systemctl --user start paperclip.service
# 4. Verify
sleep 5 && curl -s http://localhost:3100/ | head -5
Consider adding RestartSec=15 to the service to give PostgreSQL more time to initialize before
paperclipai tries to connect.
= repetidos que o python-dotenv não consegue parsear. O warning é logged mas o loading CONTINUA — keys antes e depois são carregadas normalmente. Harmless, não corrigir.# Encontrar o agent ID: paperclipai agent list -C <company-id>
# Wakeup via API:
curl -s -X POST "http://localhost:3100/api/agents/<agent-id>/wakeup?companyId=<company-id>" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <board-token>" \
-d '{}'
paperclipai auth whoami # Verificar identidade logada (usa auth.json, NÃO PAPERCLIP_API_KEY)
paperclipai dashboard get -C <company-id> # Resumo do sistema
paperclipai company list # Listar empresas
paperclipai agent list -C <company-id> # Listar agentes (flag -C não funciona para todos os subcomandos)
paperclipai issue list -C <company-id> # Listar tickets
paperclipai activity -C <company-id> # Log de atividades
paperclipai doctor # Diagnosticar problemas (⚠️ não tem --fix)
paperclipai agent get <agent-id> --api-base http://localhost:3100 --api-key <board-token> # Detalhes de um agente
Company ID atual: paperclipai company list para descobrir — guarda o id do output
Nota sobre flags: -C <company-id> funciona para dashboard, agent list, issue list, activity. Mas agent get requer --api-base e --api-key. Se paperclipai não está no PATH, usar o caminho completo:
~/.npm/_npx/<hash>/node_modules/.bin/paperclipai <comando>
Se após reboot o SSH tunnel dá connection refused na porta 3100, o Paperclip não subiu. Verificar com:
systemctl --user status paperclip.service
ss -tlnp | grep 3100
Se o serviço não estiver rodando, iniciá-lo:
systemctl --user start paperclip.service
Solução permanente: skill paperclip-systemd-service — cria serviço systemd que sobe automaticamente no boot.
/agents/arquiteto-de-conte-do/GRU/agents/arquiteto-de-conte-dodata/company/<company-id>/agents/<agent-name>/AGENTS.md~/.paperclip/instances/default/~/.paperclip/auth.json ← tokens de board (VERDADEIRO local de tokens)~/.paperclip/instances/default/config.json~/.paperclip/instances/default/secrets/master.key