بنقرة واحدة
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