Troubleshooting
The four things that actually go wrong, and how to fix each in under a minute. If none of these match, email hello@blacknode.tech with your slug and we usually reply within four hours.
Magic link didn't arrive
- Check spam / promotions tab. Sender is
noreply@mail.app.supabase.io. - Wait 90 seconds. Supabase queues new accounts.
- Check Supabase rate limit — if you re-requested 5× in a minute, you'll be paused for 5 min.
- Whitelist
*.supabase.ioand*.blacknode.techin your corporate mail. - Still nothing? Email hello@blacknode.tech with the address you used.
Workspace stuck on "provisioning"
- Wait 90 seconds — Docker pulls can be slow on a fresh node.
- Refresh /workspace. The status chip is polled every 5s.
- Check provisioner status at app.blacknode.tech/status (coming soon).
- If > 2 minutes, the provisioner is probably wedged. Email hello@blacknode.tech with your slug. We restart it manually and almost always recover the row without re-provisioning.
Claude Code asks for login on every prompt
Run claude login once inside the workspace terminal. The OAuth token persists in ~/.claude/, which lives on the persistent volume.
If you're still being asked, your ~/.claude/ isn't writable — check disk usage with df -h /workspace. If 100% full, delete some files in /workspace and retry.
# inside the workspace terminal
claude login
# > opens https://claude.ai/oauth, paste the code back
claude
# > should now run without re-auth
Skills not visible
Confirm the skill directory exists:
ls /opt/skills/
# expected: reelmaker etsy-scrape stealth linkedin-outreach
# reddit-autopilot email-outreach r2-upload claude-skills
If the directory is empty, the bootstrap script didn't run. Restart the container from the dashboard (Workspace → cog → Restart). Bootstrap re-mounts /opt/skills/ from our base image.
Workspace URL returns 502
- Container is restarting. Wait 30s, refresh.
- Caddy is reloading the EU edge config. Usually resolves in < 60s.
- If > 2 minutes, hit /api/workspace/status from a terminal — it'll tell you the real state.
VS Code says "code-server connection lost"
- Tab was background > 60 minutes. Refresh. Editor reconnects, unsaved changes are restored from the local cache.
- You're on a captive Wi-Fi that blocks WebSockets. Switch network.
- Your container hit its RAM ceiling and OOMed. Check /api/workspace/status →
ram_used_mb.
Brevo emails not arriving / silently dropped
99% of the time: the to: [{email, name}] shape has an empty name. Brevo silently drops these. Always pass a non-empty name (even if it's the same as the email's local part).