Skip to content

F0-6 lifecycle: containers por conversa, sleep/awake, ArtefactStore, drop E2B #29

Description

@netty-linux

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:

  1. Naming determinístico: nullain-{thread_id} para o container; nullain-data-{thread_id} para o volume nomeado (persistência de disco)
  2. 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)
  3. ArtefactStore: separar ficheiros "importantes" (entregáveis) dos temporários no volume
  4. Recycle com restore seletivo >21 dias (ou por política): snapshot do ArtefactStore, container novo, restore dos artefactos essenciais
  5. Drop do E2B: remotor do código do driver após o lifecycle cobrir os casos de uso do E2B
  6. Visão local via Ollama entra no mesmo pacote de trabalho (já coberta pela F0-3b)

Critérios de aceite

  • Protocol de drivers no SDK (SandboxDriver com create/stop/start/destroy/exec/command detached com PID + poll)
  • Containers reutilizados por conversa; dados sobrevivem a stop/start
  • ArtefactStore com API de promoção (temp → importante) e restore seletivo
  • E2B removido do código e requirements; AIO + Docker cobrem os casos de uso
  • CI verde + gate de cobertura mantido

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions