Skip to content

feat: deploy the directory and hosted channels to Fly.io on celld - #551

Merged
iamnbutler merged 2 commits into
mainfrom
fly
Oct 21, 2026
Merged

iamnbutler merged 2 commits into
mainfrom
fly

Conversation

@iamnbutler

Copy link
Copy Markdown
Contributor

Adds a second hosting option for the team's services, alongside Cloudflare. On Fly.io, each service runs as a single celld node with its own Tigris bucket, deployed with `services/fly.toml`. Both services share that one file. Each Fly app sets `CELLD_BUCKET` as a secret, and the bucket keys from `fly storage create` are saved on the app automatically. The code deploys from a checkout with `services/celld.ts` (from #537). `docs/setup.md` has the steps.

Config choices:

  • The node never auto-stops, because alarms and sleeping sockets need it running.
  • `CELLD_DURABILITY=bucket`: with no peer node, the bucket is the only copy of each write.
  • `kill_timeout` is set above celld's 40 s shutdown bound, so a stop can save and hand off its cells.
  • The health check uses `/.well-known/celld/health`.
  • The image is pinned to the githubnext/celld fork, which carries the fix for Fix async operations resumed from continuations of retired events denoland/celld#277.

Tested with the apps `ace-fly-directory` and `ace-fly-channel` in iad:

  • A separate Ace host joined the directory and saw the Fly channel service offered as `hosted`.
  • It created a hosted channel that read the README and ran `git log` in the workspace.
  • After a machine restart, the channel still answered from its earlier conversation.
  • After a redeploy, it ran `ls`.
  • No errors in the Fly logs.

Built in Ace

No. This was built with Claude Code in a terminal, continuing the celld session from #537. `flyctl` and the Fly dashboard were used for the account, apps and buckets, because Ace doesn't provision hosting. Tracked under #5.

@iamnbutler
iamnbutler merged commit 53c7721 into main Oct 21, 2026
1 check passed
@iamnbutler
iamnbutler deleted the fly branch October 21, 2026 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant