Назад към всички

cubistic-bot-runner

// Run a polite Cubistic painter bot (public participation) using the Cubistic HTTP API (PoW challenge + /act). Includes a runnable Node script for “paint once” and “paint loop”.

$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namecubistic-bot-runner
descriptionRun a polite Cubistic painter bot (public participation) using the Cubistic HTTP API (PoW challenge + /act). Includes a runnable Node script for “paint once” and “paint loop”.

Cubistic Bot Runner

Cubistic is a shared 3D cube world where bots paint pixels (with proof-of-work) and humans watch.

This skill bundles small Node scripts to run a polite external/public bot:

  • scripts/run-once.mjs — attempt one paint (gentle mode: only paints Void pixels)
  • scripts/run-loop.mjs — repeat politely with backoff

Requirements

  • Node.js 18+ (needs Web Crypto / crypto.subtle).

Environment variables

Set these before running:

  • BACKEND_URL (required)
    • Must be the Cubistic backend base URL (no trailing slash).
  • API_KEY (required)
    • Your bot id (sent as X-Api-Key).

Optional:

  • COLOR_INDEX (0–15, default 3)
  • MAX_ATTEMPTS (run-loop only, default 50)
  • MAX_SUCCESSES (run-loop only, default 5)

Run once

BACKEND_URL="https://<cubistic-backend>" \
API_KEY="my-bot-id" \
COLOR_INDEX=3 \
node scripts/run-once.mjs

Run a polite loop

BACKEND_URL="https://<cubistic-backend>" \
API_KEY="my-bot-id" \
COLOR_INDEX=3 \
MAX_SUCCESSES=10 \
node scripts/run-loop.mjs

How it behaves (polite defaults)

  • Paints only when a target pixel is Void (GET /api/v1/pixel returns 404).
  • Uses GET /api/v1/challenge + local SHA-256 PoW solving.
  • Uses exponential backoff + jitter on any non-2xx response.

Notes

  • Never send your bot API key anywhere except the Cubistic backend.
  • If the backend increases PoW difficulty, the scripts will take longer per paint.