Skip to main content
This walks through a first working setup on a Windows 11 host. The bot must run on the host itself: sbx is per-user and only the host can execute the sbx binary.

Prerequisites

  • Windows 11 host (or macOS/Linux where sbx runs).
  • Node 24.x exactly (pinned by engines and .nvmrc).
  • Docker Sandboxes sbx >= 0.45 installed and logged in.
  • A Docker login and an initialized network policy.
  • A Discord application with a bot token, the Message Content intent enabled, and a single guild.
  • An OpenCode provider credential registered through sbx secret.

Setup

1

Bootstrap the host (once)

Run these once, in order, as the user who will own the bot.
sbx injects provider credentials at the proxy. Pin and record the version with sbx version. See Providers for built-in and custom secret setup.
2

Clone and install

3

Configure .env

Set only DISCORD_TOKEN and DISCORD_GUILD_ID. Every other setting has a working default.
PROJECTS_ROOT defaults to ~/Celly/projects (%USERPROFILE%\Celly\projects on Windows) and is created on boot. The full variable list is in Configuration.
4

Run the bot

On boot the bot performs a preflight (sbx version, policy check, single-instance lock) and fails fast with an actionable message. Logs are written to data/bot.log.
5

Add a project and send a message

In your Discord guild, create a project from a directory under PROJECTS_ROOT:
The bot runs the create saga (sandbox, bootstrap, serve child, health, policy) and creates a #my-app channel under the Forge category.Then post a plain message in that channel. Celly opens a thread, creates an OpenCode session, and streams the reply. Reply in the thread to continue the same session.

Next steps