Skip to main content

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 /task prompts.
  • 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 at DATA_DIR/audit.jsonl.
  • 3db6777: Add conversation UX: /queue with 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, 0 disables) stops a project after that many minutes without messages, prompts, or !shell activity and posts a notice in its channel. The next message wakes the project again.
  • 0364586: Multi-guild support: DISCORD_GUILD_IDS accepts a comma-separated list (with DISCORD_GUILD_ID still 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). Provider sbx secret management from Discord remains deferred and host-only.
  • 806baac: Add /attach and /session-id for driving the same OpenCode session from a terminal inside the sandbox, and add the optional ATTACH_AUTO_THREAD setting 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, and clone:/branch: options for /project create.

Highlights

Initial release: a Discord control surface for OpenCode agents, with one isolated sbx sandbox per project.

Core model

  • Channel = project (one sandbox, one host directory); thread = session (one OpenCode conversation).
  • The bot runs natively on the sbx host and supervises a long-lived sbx exec ... opencode serve child 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 sbx spawns, 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.