# Render Blueprint — deploys nanobot's gateway + bundled WebUI as one web
# service. Secrets are provided at deploy time as env vars (sync: false) and
# resolved at runtime via the ${VAR} placeholders in render-config.json.
# Nothing secret is stored in this repo.
services:
  - type: web
    name: nanobot
    runtime: docker
    dockerfilePath: ./Dockerfile
    dockerContext: .
    # Render's Docker Command REPLACES the Dockerfile CMD but keeps the
    # ENTRYPOINT (entrypoint.sh), so pass only the command args here — otherwise
    # the entrypoint path is reinjected as an argument and nanobot fails with
    # "No such command /usr/local/bin/entrypoint.sh". When RENDER=true the
    # entrypoint initializes render-config.json on the mounted disk at
    # $HOME/.nanobot/config.json (so the runtime data_dir lands on the persistent
    # disk), chowns the root-owned mount, drops to the non-root nanobot user, and
    # appends the --config flag itself.
    dockerCommand: gateway
    # Deploy-to-Render templates should not auto-deploy on every repo push
    # (Render's recommendation); trigger deploys manually or via the Dashboard.
    autoDeploy: false
    plan: starter
    healthCheckPath: /
    envVars:
      # Anthropic API key — powers the agent's LLM calls. Get one at
      # https://console.anthropic.com/settings/keys
      - key: ANTHROPIC_API_KEY
        sync: false
      # WebUI access secret — the gate for the public WebUI. Generate a strong
      # random value (e.g. `openssl rand -hex 32`) and keep it private.
      - key: NANOBOT_WEB_TOKEN
        sync: false
      # Port Render routes public traffic to; matches channels.websocket.port
      # in render-config.json.
      - key: PORT
        value: 8765
    # Persist sessions, memory, and the WebUI display transcripts across deploys.
    # The entrypoint copies the config onto this mount, so nanobot's runtime
    # data_dir (config_path.parent) resolves here too — keeping webui/ (chat
    # history the UI renders), cron, media, and logs durable, not just session
    # files. Starter / 1 GB is the lean default; history persistence needs this
    # disk, not a bigger plan. Note: persistent disks require a paid service
    # (they are unavailable on Render's free tier).
    disk:
      name: nanobot-data
      mountPath: /home/nanobot/.nanobot
      sizeGB: 1
