Minor Changes
- d32df6a: Add the loopback admin page (
ADMIN_PORT), size-based log rotation (LOG_MAX_BYTES/LOG_MAX_FILES), scheduled SQLite backups (BACKUP_INTERVAL_HOURS/BACKUP_KEEP), and recurring/taskprompts. - ec1dbba: Add approval modes (
auto/buttons/plan), Discord permission approval buttons, interactive agent questions with custom answer modals, and a best-effort 0600 audit log atDATA_DIR/audit.jsonl. - 3db6777: Add conversation UX:
/queuewith Remove/Clear buttons,/undo,/redo,/diff,/share,/unshare,/compact,/context-usage, autocomplete for/resume,/model, and/agent, per-channel default model/agent, and tool titles with elapsed time in streamed replies. - 405734b: Auto-stop idle project sandboxes.
IDLE_STOP_MINUTES(default 30,0disables) stops a project after that many minutes without messages, prompts, or!shellactivity and posts a notice in its channel. The next message wakes the project again. - 0364586: Multi-guild support:
DISCORD_GUILD_IDSaccepts a comma-separated list (withDISCORD_GUILD_IDstill supported) and Celly deploys its commands, boot subscription, and thread reconcile across every configured guild. - b879cf3: Add per-session usage and cost tracking (
/cost), per-channel session budgets (/budget,SESSION_BUDGET_USD), and owner-only provider OAuth login from Discord (/login,/login-code). Providersbx secretmanagement from Discord remains deferred and host-only. - 806baac: Add
/attachand/session-idfor driving the same OpenCode session from a terminal inside the sandbox, and add the optionalATTACH_AUTO_THREADsetting to auto-create Discord threads for terminal-started sessions. - 495681b: Add per-thread git worktrees (
/worktree status|new|merge|remove), session forks (/fork,/btw), ephemeral/last-sessions, andclone:/branch:options for/project create.
Highlights
Initial release: a Discord control surface for OpenCode agents, with one isolatedsbx sandbox per project.Core model
- Channel = project (one sandbox, one host directory); thread = session (one OpenCode conversation).
- The bot runs natively on the
sbxhost and supervises a long-livedsbx exec ... opencode servechild per project.
Commands
- Project lifecycle:
/project add,create,list,status,start,stop,remove. - Sessions:
/new,/resume,/abort,/model,/agent. !<command>runs a shell command inside the sandbox.
Features
- Streaming replies throttled into a single live message, with fence-aware chunking.
- Session resume and per-thread model/agent overrides.
- Text attachments written to a validated
.celly/inbox. - Access control via guild owner,
Manage Guild/Administrator, an access role, and a block role. - Terminal coexistence: the same sessions are reachable from an attached terminal.
Security
- argv-only
sbxspawns, per-project microVM isolation, path containment, and a sensitive-path denylist. - Loopback-only server with a generated password.
- Bot-enforced permission policy re-asserted after every wake.
Known limitations
- The in-memory message queue is lost on restart.
- Role configuration accepts role IDs only.
- The finalization token/duration footer is descoped.