sbx is per-user and only the host can execute the sbx
binary.
Prerequisites
- Windows 11 host (or macOS/Linux where
sbxruns). - Node 24.x exactly (pinned by
enginesand.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
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
The bot runs the create saga (sandbox, bootstrap, serve child, health,
policy) and creates a
PROJECTS_ROOT:#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
- Configuration — every environment variable and its default.
- Terminal attach — drive the same sessions from a shell.
- Deployment — run Celly at logon with Task Scheduler.