Onde o estado fica
Três lugares no disco, divididos por quem lê. Cada arquivo e diretório que o AutoDev mantém, e o que cada um guarda.
Dividido por leitor #
O AutoDev guarda o estado em arquivos, e os guarda em três lugares.
.autodev/no repositório guarda o que uma pessoa lê, edita e revisa num pull request, e o que viaja com um clone.~/.autodev/<project>-<hash>/guarda o que só a máquina lê: o estado de uma execução, o pid do daemon, sessões, checkpoints, a thread, o log de eventos, logs e anexos.~/.autodev/guarda alguns arquivos que pertencem à máquina e não a um projeto.
<project> é o nome da pasta do projeto. <hash> são os 8 primeiros caracteres hexadecimais de um SHA-1 do caminho absoluto completo da pasta, então dois clones com o mesmo nome em lugares diferentes nunca compartilham uma pasta.
A divisão vem ligada por padrão. Definir AUTODEV_SPLIT_STATE como 0 ou false é o único caminho de volta, e mantém os arquivos da máquina dentro de .autodev/. Um projeto usado pela última vez antes da divisão move os arquivos no primeiro contato: a CLI faz isso quando inicia, e o painel faz quando ativa. A movimentação copia cada arquivo, remove o original e nunca sobrescreve um arquivo que já esteja no lugar novo.
O AutoDev nunca toca em CLAUDE.md nem em AGENTS.md.
No repositório #
| Caminho | O que guarda |
|---|---|
goal.md | O objetivo. Cada mensagem que você envia, pelo painel ou com autodev send, é acrescentada a ele sob um título com a hora, a mais nova por último. O arquivo é seu para editar. |
memory.md | O que um turno posterior ou uma noite posterior pagaria para reaprender: decisões e o porquê, restrições, becos sem saída. Toda execução começa com um. Os participantes escrevem nele com as ferramentas remember, revise e forget, uma linha para cada memória, e você pode editá-lo. |
config.json | As configurações do projeto. Todas as chaves de configuração as lista, e diz quais poucas ficam na máquina. |
participants/ | Um <id>.md por participante. O formato do arquivo de participante descreve o arquivo. |
mcp.json | A configuração do servidor MCP do próprio AutoDev, escrita quando é necessária pela primeira vez e passada a uma CLI além da sua. |
Os commits do próprio AutoDev deixam .autodev/ de fora. Commitar ou não qualquer um desses arquivos é decisão sua.
Na máquina, por projeto #
Estes arquivos ficam em ~/.autodev/<project>-<hash>/.
| Caminho | O que guarda |
|---|---|
state.json | O status da execução, de quem é o turno, o heartbeat, um gate ou uma proposta pendente, o gasto e os contadores que limitam uma espera, uma auditoria e uma sequência de conversa. |
control.json | O comando que espera o daemon: none, pause, resume ou stop. |
daemon.pid | O pid do processo que supervisiona o daemon. |
sessions.json | O id de sessão de cada participante, com o provedor a que pertence. |
inbox.json | A fila de operações enviadas ao daemon, como as suas mensagens. Só o daemon a esvazia. |
checkpoints.json | A lista de checkpoints que o autodev restore lê. |
thread.jsonl | A thread compartilhada, um objeto JSON por post. |
events.jsonl | O log da atividade da máquina. O Feed do painel é montado a partir dele. |
cursors.json | Por participante, o último post que ele viu. |
turn.json | De quem é o turno aberto, e se já postou. |
notices.json | Os avisos que os participantes deixaram para você enquanto a execução seguia, com suas respostas, retenções e dispensas. |
browser-profile/ | O perfil de navegador do próprio AutoDev, onde ficam os logins que você fez para as ferramentas de navegador. autodev new-run o deixa onde está. |
attachments/ | Imagens anexadas a uma mensagem, cujos caminhos o texto da mensagem leva. |
logs/ | daemon.log e serve.log. Lendo os logs os descreve. |
autodev new-run move esses arquivos, exceto o perfil do navegador, para uma pasta ao lado desta, com o nome dela mais .run- e o dia, e -2, -3 para uma segunda no mesmo dia. Ele também copia goal.md e memory.md para lá antes de esvaziá-los.
Na máquina, para todos os projetos #
Estes arquivos ficam em ~/.autodev/.
| Caminho | O que guarda |
|---|---|
workspaces.json | Um índice de todo projeto iniciado nesta máquina, que o autodev workspaces lista. Pode ser reconstruído. |
config.json | As configurações da máquina: suspendOnCompletion e o bloco notify. Todas as chaves de configuração explica por que estão aqui. |
trust.json | As pastas em que você confiou. Fica fora do repositório para que um clone não possa se marcar como confiável. |
providers.json | As CLIs de agente que você adotou. Não guarda credenciais, e pode ser reconstruído detectando-as de novo. |
quota.jsonl | As medições de cota. Não pode ser reconstruído, e nunca é rotacionado. |
serve.json | O descritor de conexão do autodev serve, com o token dele. Uma máquina roda um. |
team/ | Sua equipe padrão, como arquivos de participante. Um projeto novo a recebe como oferta. |
Um arquivo danificado #
Um arquivo que não faz parse é lido como vazio ou como padrão, nunca como uma falha. O efeito muda por arquivo:
- O
state.jsonvolta aos padrões. - O
checkpoints.jsoné lido como nenhum checkpoint, o que perde o histórico de restauração e mais nada. - O
trust.jsoné lido como nada confiável, e o AutoDev pergunta de novo. - O
providers.jsoné lido como nada adotado, e o AutoDev detecta de novo. - O
config.json, do projeto ou da máquina, é lido como uma configuração vazia. - O
notices.jsoné lido como nenhum aviso, e ocursors.jsoncomo ninguém tendo visto nada.
Toda escrita passa por um arquivo temporário que depois é renomeado, então um leitor nunca vê meio arquivo.
O que sobrevive a um reinício diz de quais desses arquivos um reinício depende.