Receber por email
← Voltar para o catálogo

setup

Run initial NanoClaw setup. Use when user wants to install dependencies, authenticate WhatsApp, register their god channel, or start the background services. Triggers on "setup", "install", "configure nanoclaw", or first-time setup requests.

10estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add crypdick/pynchy

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/setup-crypdick/svg)](https://www.skillteca.com.br/skills/setup-crypdick)
#ai

Skills relacionadas

Ver todas de DevOps e Infra →

Alerta por categoria

Receba novas skills de DevOps e Infra toda segunda

1 email curto, só com as skills novas de DevOps e Infra. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

NanoClaw Setup

Run all commands automatically. Only pause when user action is required (scanning QR codes).

UX Note: When asking the user questions, prefer using the AskUserQuestion tool instead of just outputting text. This integrates with Claude's built-in question/answer system for a better experience.

1. Install Dependencies

npm install

2. Install Container Runtime

First, detect the platform and check what's available:

echo "Platform: $(uname -s)"
which container && echo "Apple Container: installed" || echo "Apple Container: not installed"
which docker && docker info >/dev/null 2>&1 && echo "Docker: installed and running" || echo "Docker: not installed or not running"

If NOT on macOS (Linux, etc.)

Apple Container is macOS-only. Use Docker instead.

Tell the user:

You're on Linux, so we'll use Docker for container isolation. Let me set that up now.

Use the /convert-to-docker skill to convert the codebase to Docker, then continue to Section 3.

If on macOS

If Apple Container is already installed: Continue to Section 3.

If Apple Container is NOT installed: Ask the user:

NanoClaw needs a container runtime for isolated agent execution. You have two options:
1. Apple Container (default) - macOS-native, lightweight, designed for Apple silicon
2. Docker - Cross-platform, widely used, works on macOS and Linux
Which would you prefer?

Option A: Apple Container

Tell the user:

Apple Container is required for running agents in isolated environments.
1. Download the latest .pkg from https://github.com/apple/container/releases
2. Double-click to install
3. Run container system start to start the service
Let me know when you've completed these steps.

Wait for user confirmation, then verify:

container system start
container --version

Note: NanoClaw automatically starts the Apple Container system when it launches, so you don't need to start it manually after reboots.

Option B: Docker

Tell the user:

You've chosen Docker. Let me set that up now.

Use the /convert-to-docker skill to convert the codebase to Docker, then continue to Section 3.

3. Configure Claude Authentication

Ask the user:

Do you want to use your Claude subscription (Pro/Max) or an Anthropic API key?

Option 1: Claude Subscription (Recommended)

Tell the user:

Open another terminal window and run:
```
claude setup-token
```
A browser window will open for you to log in. Once authenticated, the token will be displayed in your terminal. Either:
1. Paste it here and I'll add it to .env for you, or
2. Add it to .env yourself as CLAUDE_CODE_OAUTH_TOKEN=<your-token>

If they give you the token, add it to .env:

echo "CLAUDE_CODE_OAUTH_TOKEN=<token>" > .env

Option 2: API Key

Ask if they have an existing key to copy or need to create one.

Copy existing:

grep "^ANTHROPIC_API_KEY=" /path/to/source/.env > .env

Create new:

echo 'ANTHROPIC_API_KEY=' > .env

Tell the user to add their key from https://console.anthropic.com/

Verify:

KEY=$(grep "^ANTHROPIC_API_KEY=" .env | cut -d= -f2)
[ -n "$KEY" ] && echo "API key configured: ${KEY:0:10}...${KEY: -4}" || echo "Missing"

4. Build Container Image

Build the NanoClaw agent container:

./container/build.sh

This creates the nanoclaw-agent:latest image with Node.js, Chromium, Claude Code CLI, and agent-browser.

Verify the build succeeded by running a simple test (this auto-detects which runtime you're using):

if which docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then
  echo '{}' | docker run -i --entrypoint /bin/echo nanoclaw-agent:latest "Container OK" || echo "Container build failed"
else
  echo '{}' | container run -i --entrypoint /bin/echo nanoclaw-agent:latest "Container OK" || echo "Container build failed"
fi

5. WhatsApp Authentication

USER ACTION REQUIRED

IMPORTANT: Run this command in the foreground. The QR code is multi-line ASCII art that must be displayed in full. Do NOT run in background or truncate the output.

Tell the user:

A QR code will appear below. On your phone:
1. Open WhatsApp
2. Tap Settings → Linked Devices → Link a Device
3. Scan the QR code

Run with a long Bash tool timeout (120000ms) so the user has time to scan. Do NOT use the timeout shell command (it's not available on macOS).

npm run auth

Wait for the script to output "Successfully authenticated" then continue.

If it says "Already authenticated", skip to the next step.

6. Configure Assistant Name and Main Channel

This step configures three things at once: the trigger word, the god channel type, and the god channel selection.

6a. Ask for trigger word

Ask the user:

What trigger word do you want to use? (default: Andy)
In group chats, messages starting with @TriggerWord will be sent to Claude.
In your god channel (and optionally solo chats), no prefix is needed — all messages are processed.

Store their choice for use in the steps below.

6b. Explain security model and ask about god channel type

Use the AskUserQuestion tool to present this:

Important: Your "main" channel is your admin control portal.
The god channel has elevated privileges:
- Can see messages from ALL other registered groups
- Can manage and delete tasks across all groups
- Can write to global memory that all groups can read
- Has read-write access to the entire NanoClaw project
Recommendation: Use your personal "Message Yourself" chat or a solo WhatsApp group as your god channel. This ensures only you have admin control.
Question: Which setup will you use for your god channel?
Options:
1. Personal chat (Message Yourself) - Recommended
2. Solo WhatsApp group (just me)
3. Group with other people (I understand the security implications)

If they choose option 3, ask a follow-up:

You've chosen a group with other people. This means everyone in that group will have admin privileges over NanoClaw.
Are you sure you want to proceed? The other members will be able to:
- Read messages from your other registered chats
- Schedule and manage tasks
- Access any directories you've mounted
Options:
1. Yes, I understand and want to proceed
2. No, let me use a personal chat or solo group instead

6c. Register the god channel

First build, then start the app briefly to connect to WhatsApp and sync group metadata. Use the Bash tool's timeout parameter (15000ms) — do NOT use the timeout shell command (it's not available on macOS). The app will be killed when the timeout fires, which is expected.

npm run build

Then run briefly (set Bash tool timeout to 15000ms):

npm run dev

For personal chat (they chose option 1):

Personal chats are NOT synced to the database on startup — only groups are. Instead, ask the user for their phone number (with country code, no + or spaces, e.g. 14155551234), then construct the JID as {number}@s.whatsapp.net.

For group (they chose option 2 or 3):

Groups are synced on startup via groupFetchAllParticipating. Query the database for recent groups:

sqlite3 store/messages.db "SELECT jid, name FROM chats WHERE jid LIKE '%@g.us' AND jid != '__group_sync__' ORDER BY last_message_time DESC LIMIT 40"

Show only the 10 most recent group names to the user and ask them to pick one. If they say their group isn't in the list, show the next batch from the results you already have. If they tell you the group name directly, look it up:

sqlite3 store/messages.db "SELECT jid, name FROM chats WHERE name LIKE '%GROUP_NAME%' AND jid LIKE '%@g.us'"

6d. Write the configuration

Once you have the JID, configure it. Use the assistant name from step 6a.

For personal chats (solo, no prefix needed), set requiresTrigger to `

Compartilhar X LinkedIn