Offload large files (4 MB+) to R2
Los mantenedores suelen responder en 1 día
@aron-cf ya está trabajando en esto.
Desde el 8/10/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
vfs_* tables in Durable Object SQLite hold all file content today, so a workspace is capped at the Durable Object storage limit (about 10 GB). R2 mounts are read-only, which means a writable file can't live outside that cap.
@cloudflare/shell in cloudflare/agents had a hybrid model. It kept small files inline in SQLite and moved files over a size threshold to R2. We're deprecating Shell in favour of Computer, and some agents (media, datasets, build outputs) will need large writable files.
Proposal
- Add an optional R2 bucket to
WorkspaceOptions, along with a size threshold. The default would be 4 MB. - When a write reaches the threshold, the content goes to R2.
vfs_nodeskeeps the metadata and a pointer to the R2 key. The key is scoped by workspace, using the session id or DO id. - Reads through
workspace.fs, the worker backends, and the container sync path resolve the pointer without the caller knowing about it. A read of an R2-backed file returns a stream, so the bytes never pass through SQLite. rm, overwrite, andgc()delete the R2 object they replace.- Without a bucket, behaviour stays as it is today.
Open questions
- Should content-addressed blob dedup extend to R2 objects, or should R2 hold one object per file?
- Container sync could pull large R2-backed files on demand instead of copying them into the container's in-memory VFS. Is that in scope here?
- Lenguaje dominante
- TypeScript
- Estrellas
- 9.5k
- Forks
- 552
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 49
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cloudflare/computer
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
cloudflare/computer#224 · 5 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Always run the "next" computerd workflow on push to the `release` branchPosiblemente ocupada @aron-cf la tomó hoy. Abiertobug
cloudflare/computer#222 · 2 comentarios · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Make just-bash and acorn optional peer dependencies, pulled in only by the backend that needs themAbiertoenhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
cloudflare/computer#220 · 3 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Workspace namespaces: more than one Workspace per Durable Object storagePosiblemente ocupada @aron-cf la tomó hace 1 día. Abiertoenhancement
cloudflare/computer#219 · 1 comentario · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
git: host-held credentials for model-driven clone, fetch, pull and pushPosiblemente ocupada @aron-cf la tomó hace 1 día. Abiertoenhancement
cloudflare/computer#218 · 3 comentarios · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de cloudflare/computer
Issues similares
-
[Bug] The clients language filter cannot select the rows the page labels as unknownPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
apache/rocketmq-dashboard#6103 ·
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
cockpit-project/cockpit-machines#2835 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
cloudflare/kumo#866 ·
Los mantenedores suelen responder en 1 día
-
area:connector bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
autoInject recall silently drops memory injection on long / non-Latin prompts (HTTP 400 Query too long)Posiblemente ocupada @Epsilon006 la tomó hoy. Abiertointegration:coding-agents
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
vectorize-io/hindsight#5476 · 1 comentario ·
Los mantenedores suelen responder en 1 día