Use case
While using celld, I needed to enumerate all Durable Object instances in a deployment. I ended up maintaining my own index inside another Durable Object, but for an operational task I really just wanted celld to list the objects it already knows about.
This is about listing Durable Object instances, not listing keys inside one object's state.storage (which already has storage.list()).
Proposed surface
A standalone/operator-facing command would avoid adding a celld-only method to DurableObjectNamespace, for example:
celld cells --bucket s3://my-cells-bucket
It could initially print the durable cell scope/ID, with JSON output and class filtering as possible follow-ups. The normal --endpoint and --region options should apply.
Why this seems feasible
The bucket layout already has one prefix per durable cell under cells/<cell>/, and managed control-plane explorer code already implements a paginated list_cells operation using common_prefixes("cells/"). The missing piece appears to be a supported surface for standalone users.
Semantics to clarify
- Does “all” mean every cell with replicated durable state, including currently hibernated cells? (That is the useful definition for my case.)
- Cells addressed but never instantiated / never written presumably should not appear.
- Named IDs cannot necessarily recover their original name from the prefix alone, so returning the class and ID first would still be useful.
- Listing should be paginated/streamed rather than requiring all cell prefixes in memory for large deployments.
Would a CLI command be the right API, or should this be exposed through an authenticated administrative endpoint instead?
Use case
While using celld, I needed to enumerate all Durable Object instances in a deployment. I ended up maintaining my own index inside another Durable Object, but for an operational task I really just wanted celld to list the objects it already knows about.
This is about listing Durable Object instances, not listing keys inside one object's
state.storage(which already hasstorage.list()).Proposed surface
A standalone/operator-facing command would avoid adding a celld-only method to
DurableObjectNamespace, for example:It could initially print the durable cell scope/ID, with JSON output and class filtering as possible follow-ups. The normal
--endpointand--regionoptions should apply.Why this seems feasible
The bucket layout already has one prefix per durable cell under
cells/<cell>/, and managed control-plane explorer code already implements a paginatedlist_cellsoperation usingcommon_prefixes("cells/"). The missing piece appears to be a supported surface for standalone users.Semantics to clarify
Would a CLI command be the right API, or should this be exposed through an authenticated administrative endpoint instead?