Contexto
O nullain-agent usa três backends de sandbox (AIO/Docker/E2B). Plano vigente: manter AIO (Apache 2.0, self-hosted, com VNC), evoluir o driver Docker para o núcleo do lifecycle e remover o E2B (comercial). Infra de produção: VPS Contabo + Coolify (rede coolify, volumes nomeados, Postgres/Redis/Qdrant/SearXNG/AIO em compose).
Pré-requisitos (F0 itens 1-5 devem fechar primeiro)
Objetivo
agent/lifecycle.py como orquestrador do "computador persistente por conversa", no estilo do ciclo do Manus (create → sleep → awake → recycle), construído sobre volumes Docker:
- Naming determinístico:
nullain-{thread_id} para o container; nullain-data-{thread_id} para o volume nomeado (persistência de disco)
- Sleep/awake por inatividade: stop/start sem perda de dados; countdown manual (sem idle timer interno cego — padrão confirmado pela referência box.ascii.dev)
- ArtefactStore: separar ficheiros "importantes" (entregáveis) dos temporários no volume
- Recycle com restore seletivo >21 dias (ou por política): snapshot do ArtefactStore, container novo, restore dos artefactos essenciais
- Drop do E2B: remotor do código do driver após o lifecycle cobrir os casos de uso do E2B
- Visão local via Ollama entra no mesmo pacote de trabalho (já coberta pela F0-3b)
Critérios de aceite
Notas de produção (Contabo/Coolify)
- Usar rede
coolify e volumes nomeados; sem infraestrutura fora da VPS
- RAM é o recurso escasso da Contabo — lifecycle deve medir uso e evitar containers parados acumulando
- Referências de padrão: estados explícitos (provisioning/ready/running/archiving/archived/error) e access token efémero por sessão para VNC (takeover futuro, NA-23)
Fase: F0 consolidação (item 6) — só inicia após itens 1-5
Contexto
O
nullain-agentusa três backends de sandbox (AIO/Docker/E2B). Plano vigente: manter AIO (Apache 2.0, self-hosted, com VNC), evoluir o driver Docker para o núcleo do lifecycle e remover o E2B (comercial). Infra de produção: VPS Contabo + Coolify (redecoolify, volumes nomeados, Postgres/Redis/Qdrant/SearXNG/AIO em compose).Pré-requisitos (F0 itens 1-5 devem fechar primeiro)
Objetivo
agent/lifecycle.pycomo orquestrador do "computador persistente por conversa", no estilo do ciclo do Manus (create → sleep → awake → recycle), construído sobre volumes Docker:nullain-{thread_id}para o container;nullain-data-{thread_id}para o volume nomeado (persistência de disco)Critérios de aceite
Notas de produção (Contabo/Coolify)
coolifye volumes nomeados; sem infraestrutura fora da VPSFase: F0 consolidação (item 6) — só inicia após itens 1-5