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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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