Dónde vive el estado
Tres lugares en el disco, divididos por quién los lee. Cada archivo y directorio que AutoDev mantiene, y qué guarda cada uno.
Dividido por lector #
AutoDev guarda su estado en archivos, y los guarda en tres lugares.
.autodev/en el repositorio guarda lo que una persona lee, edita y revisa en un pull request, y lo que viaja con un clon.~/.autodev/<project>-<hash>/guarda lo que solo lee la máquina: el estado de una ejecución, el pid del daemon, sesiones, checkpoints, el hilo, el log de eventos, logs y adjuntos.~/.autodev/guarda unos pocos archivos que pertenecen a la máquina y no a un proyecto.
<project> es el nombre de la carpeta del proyecto. <hash> son los 8 primeros caracteres hexadecimales de un SHA-1 de la ruta absoluta completa de la carpeta, así que dos clones con el mismo nombre en lugares distintos nunca comparten una carpeta.
La división viene activada por defecto. Definir AUTODEV_SPLIT_STATE como 0 o false es la única vía de vuelta, y mantiene los archivos de la máquina dentro de .autodev/. Un proyecto usado por última vez antes de la división mueve sus archivos en el primer contacto: la CLI lo hace al iniciarse, y el panel lo hace al activarse. El movimiento copia cada archivo, elimina el original y nunca sobrescribe un archivo que ya esté en el lugar nuevo.
AutoDev nunca toca CLAUDE.md ni AGENTS.md.
En el repositorio #
| Ruta | Qué guarda |
|---|---|
goal.md | El objetivo. Cada mensaje que envías, desde el panel o con autodev send, se añade a él bajo un encabezado con la hora, el más nuevo al final. El archivo es tuyo para editarlo. |
memory.md | Lo que un turno posterior o una noche posterior pagaría por volver a aprender: decisiones y su porqué, restricciones, callejones sin salida. Toda ejecución empieza con uno. Los participantes escriben en él con las herramientas remember, revise y forget, una línea por cada memoria, y tú puedes editarlo. |
config.json | Los ajustes del proyecto. Todas las claves de configuración los enumera, y dice cuáles pocos viven en la máquina. |
participants/ | Un <id>.md por participante. El formato del archivo de participante describe el archivo. |
mcp.json | La configuración del servidor MCP del propio AutoDev, escrita cuando hace falta por primera vez y pasada a una CLI además de la tuya. |
Los commits del propio AutoDev dejan .autodev/ fuera. Hacer commit o no de cualquiera de estos archivos es decisión tuya.
En la máquina, por proyecto #
Estos archivos están en ~/.autodev/<project>-<hash>/.
| Ruta | Qué guarda |
|---|---|
state.json | El estado de la ejecución, de quién es el turno, el heartbeat, un gate o una propuesta pendiente, el gasto y los contadores que acotan una espera, una auditoría y una racha de conversación. |
control.json | El comando que espera el daemon: none, pause, resume o stop. |
daemon.pid | El pid del proceso que supervisa el daemon. |
sessions.json | El id de sesión de cada participante, con el proveedor al que pertenece. |
inbox.json | La cola de operaciones enviadas al daemon, como tus mensajes. Solo el daemon la vacía. |
checkpoints.json | La lista de checkpoints que lee autodev restore. |
thread.jsonl | El hilo compartido, un objeto JSON por publicación. |
events.jsonl | El log de la actividad de la máquina. El Feed del panel se construye a partir de él. |
cursors.json | Por participante, la última publicación que ha visto. |
turn.json | De quién es el turno abierto, y si ya publicó. |
notices.json | Los avisos que los participantes te dejaron mientras la ejecución seguía, con sus respuestas, retenciones y descartes. |
browser-profile/ | El perfil de navegador propio de AutoDev, donde viven los inicios de sesión que hiciste para las herramientas de navegador. autodev new-run lo deja donde está. |
attachments/ | Imágenes adjuntas a un mensaje, cuyas rutas lleva el texto del mensaje. |
logs/ | daemon.log y serve.log. Leer los logs los describe. |
autodev new-run mueve estos archivos, salvo el perfil del navegador, a una carpeta junto a esta, con su nombre más .run- y el día, y -2, -3 para una segunda el mismo día. También copia goal.md y memory.md allí antes de vaciarlos.
En la máquina, para todos los proyectos #
Estos archivos están en ~/.autodev/.
| Ruta | Qué guarda |
|---|---|
workspaces.json | Un índice de todos los proyectos iniciados en esta máquina, que lista autodev workspaces. Se puede reconstruir. |
config.json | Los ajustes de la máquina: suspendOnCompletion y el bloque notify. Todas las claves de configuración explica por qué están aquí. |
trust.json | Las carpetas en las que has confiado. Está fuera del repositorio para que un clon no pueda marcarse a sí mismo como de confianza. |
providers.json | Las CLI de agente que adoptaste. No guarda credenciales, y se puede reconstruir detectándolas de nuevo. |
quota.jsonl | Las mediciones de cuota. No se puede reconstruir, y nunca rota. |
serve.json | El descriptor de conexión de autodev serve, con su token. Una máquina ejecuta uno. |
team/ | Tu equipo predeterminado, como archivos de participante. A un proyecto nuevo se le ofrece. |
Un archivo dañado #
Un archivo que no se puede analizar se lee como vacío o como predeterminado, nunca como un fallo. El efecto cambia según el archivo:
state.jsonvuelve a los valores predeterminados.checkpoints.jsonse lee como sin checkpoints, lo que pierde el historial de restauración y nada más.trust.jsonse lee como nada de confianza, y AutoDev pregunta de nuevo.providers.jsonse lee como nada adoptado, y AutoDev detecta de nuevo.config.json, el del proyecto o el de la máquina, se lee como una configuración vacía.notices.jsonse lee como ningún aviso, ycursors.jsoncomo que nadie ha visto nada.
Toda escritura pasa por un archivo temporal que luego se renombra, así que un lector nunca ve medio archivo.
Qué sobrevive a un reinicio dice de cuáles de estos archivos depende un reinicio.