Skip to content

Back up and restore hosted channels #178

Closed

Description

@iamnbutler

Provide a documented, exercised per-channel backup and restore path before relying on hosted channels for permanent work. ace backup currently snapshots local SQLite channels; a hosted channel's pi state lives in its cell.

Acceptance

  • Choose and document the recovery mechanism supported by the deployed runtime, including provider-native Durable Object backup/point-in-time recovery where appropriate. Define the recovery scope, retention, consistency and operator prerequisites; do not require a bespoke export API when a provider-native mechanism meets the need.
  • Back up or establish a recovery point for an existing deployed channel, then exercise restoration in an isolated destination or other verified recovery procedure that preserves the source. Verify identity, metadata, chats, messages, child ownership, tool results, usage, model configuration and unfinished/aborted run state.
  • Explain identity/location handling and prevent restored copies from accidentally executing the same channel concurrently. Check interrupted/failed recovery preserves available source data and provides a clear continuation path.
  • Keep project files and lane worktrees explicitly separate from channel-state backup. Record the workspace/path information required for recovery without claiming that backing up the cell saves the checkout.
  • State which recovery/portability needs, if any, require pi state export/import beyond provider-native recovery. Reuse the bounded same-version CLI movement representation from Move channels between local and hosted with the same workspace #181 where appropriate; broader portable recovery stays here. Do not add a second authoritative channel store.
  • Resume real model/tool work after the exercised restoration. Document operator commands, verification steps and limits. Every stored-format change has a versioned migration and a check against an existing-channel backup.

Keep pi-durable authoritative for messages, runs and chats. The acceptance target is a recovery path that operators have actually exercised against real channel state, not the existence of an untested provider feature or a particular custom implementation.

Priority 3 under #13. Pilot #176 provides the first deployed acceptance evidence. The initial idle local ↔ hosted CLI roundtrip in #181 is separate work and has no automatic backup requirement or dependency on this issue, by the user's explicit choice. This issue retains the future backup/restore work; execution-host handoff remains #49.

Activity

  1. iamnbutler commented on Oct 15, 2026

    @iamnbutler
    ContributorAuthor

    Context from code; the acceptance below is unchanged and none of it is done yet. This issue is now tracked by #58, since #13 is closed.

    • ace backup refuses hosted channels ("Hosted channel backups must be taken on the hosting service", apps/host/src/backup.ts), and docs/data.md says the same.
    • Only path today, manual: for an idle hosted channel with a local workspace, Move to → This host (Move channels between local and hosted with the same workspace #181) freezes the cell, exports it and verifies it into a local store, which ace backup can then snapshot. It isn't a backup procedure, and no one has exercised it as one.
    • Cloud compute channels (Spike: run a hosted channel's tools in team-deployed cloud compute #216) have no path at all. The host refuses to move a compute record, so their pi state lives only in the channel's Durable Object. Their files are covered separately by the compute checkpoint (Preserve and recover cloud workspace files beyond the pilot checkpoint limit #413), which matches this issue's split between channel state and workspace files.
    • The service's POST /channels/:id/transfer (freeze/export) already produces the verified snapshot format, so an export-based backup could reuse it if provider-native Durable Object recovery doesn't meet the acceptance.

    Given cloud compute, this now matters for any team using the beta for real work.

  2. iamnbutler commented on Oct 15, 2026

    @iamnbutler
    ContributorAuthor

    Decision (October 15): option B. Backups are export-based, so ace backup works for hosted and cloud compute channels, reusing the transfer snapshot format. Cloudflare's own Durable Object recovery may come later as a safety net. Implementation picked up by the issue watcher.

  3. iamnbutler commented on Oct 15, 2026

    @iamnbutler
    ContributorAuthor

    #435 adds ace backup for hosted and cloud compute channels: a new backup transfer action reads one consistent pi snapshot without freezing the channel. It also adds ace restore, which imports any backup as a new local channel with a new ID and lane prefix, and it was exercised against local wrangler dev with real model runs. The deployed services/channel and services/compute need redeploying for the new action; workspace files remain the compute checkpoint's job (#413).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions