From b7f8c20a2535b97ccec0fc9e70b0eb2bfdb57d8f Mon Sep 17 00:00:00 2001 From: NanoClaw Setup Date: Thu, 19 Mar 2026 11:57:54 +0000 Subject: [PATCH] fix: setup skill uses 127.0.0.1 for OneCLI and offers dashboard vs CLI choice - Configure CLI api-host to local instance (defaults to cloud otherwise) - Use 127.0.0.1 instead of localhost to avoid IPv6 resolution issues - Present dashboard and CLI as two options with platform guidance - Accept ONECLI_URL as valid credentials in verify step Co-Authored-By: Claude Opus 4.6 (1M context) --- .claude/skills/setup/SKILL.md | 15 ++++++++++----- setup/verify.ts | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.claude/skills/setup/SKILL.md b/.claude/skills/setup/SKILL.md index dbb9028..b83cf61 100644 --- a/.claude/skills/setup/SKILL.md +++ b/.claude/skills/setup/SKILL.md @@ -71,9 +71,14 @@ curl -fsSL onecli.sh/cli/install | sh Verify both installed: `onecli version`. If the command is not found, the install script may have printed a path — add it to PATH or use the full path. +Point the CLI at the local OneCLI instance (it defaults to the cloud service otherwise): +```bash +onecli config set api-host http://127.0.0.1:10254 +``` + Ensure `.env` has the OneCLI URL (create the file if it doesn't exist): ```bash -grep -q 'ONECLI_URL' .env 2>/dev/null || echo 'ONECLI_URL=http://localhost:10254' >> .env +grep -q 'ONECLI_URL' .env 2>/dev/null || echo 'ONECLI_URL=http://127.0.0.1:10254' >> .env ``` ## 2. Check Environment @@ -142,10 +147,10 @@ First, look up the exact command for creating an Anthropic secret: onecli secrets create --help ``` -Then AskUserQuestion, providing the user with two options: +Then AskUserQuestion with two options. Use the `description` field to include the one-liner guidance and the concrete instructions for each option so the user sees everything in the question itself (avoids the interactive modal hiding text above it): -1. **OneCLI dashboard** — open http://localhost:10254 in the browser and add the secret there -2. **CLI** — run the `onecli secrets create` command with the right flags for an Anthropic secret (show them the exact command with a placeholder for the key value, based on the `--help` output) +1. **Dashboard** — description: "Best if you have a browser on this machine. Open http://127.0.0.1:10254 and add the secret in the UI." +2. **CLI** — description: "Best for remote/headless servers. Run: `onecli secrets create --name Anthropic --type anthropic --value YOUR_KEY --host-pattern api.anthropic.com`" Tell the user to get an API key from https://console.anthropic.com/settings/keys if they don't have one. @@ -240,7 +245,7 @@ Tell user to test: send a message in their registered chat. Show: `tail -f logs/ ## Troubleshooting -**Service not starting:** Check `logs/nanoclaw.error.log`. Common: wrong Node path (re-run step 7), OneCLI not running (check `curl http://localhost:10254/api/health`), missing channel credentials (re-invoke channel skill). +**Service not starting:** Check `logs/nanoclaw.error.log`. Common: wrong Node path (re-run step 7), OneCLI not running (check `curl http://127.0.0.1:10254/api/health`), missing channel credentials (re-invoke channel skill). **Container agent fails ("Claude Code process exited with code 1"):** Ensure the container runtime is running — `open -a Docker` (macOS Docker), `container system start` (Apple Container), or `sudo systemctl start docker` (Linux). Check container logs in `groups/main/logs/container-*.log`. diff --git a/setup/verify.ts b/setup/verify.ts index f64e4d0..e039e52 100644 --- a/setup/verify.ts +++ b/setup/verify.ts @@ -101,7 +101,7 @@ export async function run(_args: string[]): Promise { const envFile = path.join(projectRoot, '.env'); if (fs.existsSync(envFile)) { const envContent = fs.readFileSync(envFile, 'utf-8'); - if (/^(CLAUDE_CODE_OAUTH_TOKEN|ANTHROPIC_API_KEY)=/m.test(envContent)) { + if (/^(CLAUDE_CODE_OAUTH_TOKEN|ANTHROPIC_API_KEY|ONECLI_URL)=/m.test(envContent)) { credentials = 'configured'; } }