#!/usr/bin/env python3
import asyncio
import os
import sys

async def main():
    print("Starting MoltBot in micro-VM sandbox...")
    print("Type 'exit' or press Ctrl+D to quit\n")
    try:
        from boxlite import InteractiveBox
        term_mode = os.environ.get("TERM", "xterm-256color")
        async with InteractiveBox(name="moltbox", image="ubuntu:26.04", env=[("TERM", term_mode)], ports=[(18789, 18789)], auto_remove=False, reuse_existing=True) as itbox:
            await itbox.wait()
    except KeyboardInterrupt:
        print("\n\nInterrupted by Ctrl+C")
    except Exception as e:
        print(f"\nError: {e}", file=sys.stderr)
        import traceback
        traceback.print_exc()
        sys.exit(1)

if __name__ == "__main__":
    asyncio.run(main())
  • 执行 pip install boxlite

  • 执行 python moltbox.py 进入沙箱

  • 进入沙箱后,粘贴以下命令,按回车

  apt-get update -y
  apt-get install -y --no-install-recommends curl ca-certificates
  curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
  apt-get install -y nodejs

  Or the full updated script for Ubuntu:

  #!/bin/sh
  set -e
  export DEBIAN_FRONTEND=noninteractive
  export PATH=/usr/local/bin:$PATH

  # --- Install Node.js + clawdbot if missing ---
  if ! command -v clawdbot >/dev/null 2>&1; then
    apt-get update -y
    apt-get install -y --no-install-recommends python3 make g++ git ca-certificates curl lsof
    curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
    apt-get install -y nodejs
    npm config set cache /tmp/npm-cache
    npm install -g clawdbot@latest
  fi

  # --- Configure & start gateway ---
  set -eu
  CONF_DIR=/root/.clawdbot
  mkdir -p "$CONF_DIR"

  BIN=$(command -v clawdbot || true)
  if [ -z "$BIN" ]; then
    BIN="$(npm bin -g)/clawdbot"
  fi

  export CLAWDBOT_STATE_DIR="$CONF_DIR"
  export CLAWDBOT_CONFIG_PATH="$CONF_DIR/clawdbot.json"

  TOKEN=$(head -c 16 /dev/urandom | od -A n -t x1 | tr -d ' \n')
  PORT=18789

  cat > "$CLAWDBOT_CONFIG_PATH" <<EOF
  {
    "gateway": {
      "mode": "local",
      "bind": "lan",
      "port": $PORT,
      "auth": {
        "mode": "token",
        "token": "$TOKEN"
      },
      "controlUi": {
        "enabled": true,
        "allowInsecureAuth": true
      }
    }
  }
  EOF

  "$BIN" gateway run --allow-unconfigured --force --dev --bind lan --port "$PORT" --token "$TOKEN" &
  PID=$!
  echo "Gateway PID: $PID"
  echo "Endpoint: http://127.0.0.1:$PORT?token=$TOKEN"

  for i in $(seq 1 120); do
    if curl -so /dev/null --connect-timeout 1 "http://127.0.0.1:$PORT/" 2>/dev/null; then
      echo "Gateway is ready!"
      break
    fi
    sleep 2
  done
  • enjoy!


本方案沙箱基于
https://github.com/boxlite-ai/boxlite
一个轻松跑在本地,基于 micro-VM 的沙箱实现

标签: none

添加新评论