Apenas Python 3.11+ é necessário. Sem npm, sem build, sem serviços externos.
Todo o sistema roda na sua máquina. Você gera um arquivo de dados, inicia um pequeno servidor Python e abre um navegador. Só isso.
Isso importa porque o projeto é intencionalmente frágil em uma direção: ele não pede que você confie em um serviço de nuvem, crie uma conta ou instale um gerenciador de pacotes. Suas tarefas ficam em data.json; suas edições ficam no navegador.
Pense assim… um caderno de papel que se atualiza sozinho a partir das anotações já espalhadas na sua mesa. O caderno não é mágico; apenas está organizado.
collector.py usa apenas a biblioteca padrão do Python. Ele percorre docs/ e sessions/, executa regexes sobre Markdown e emite uma lista tipada de dataclasses. server.py usa http.server com duas rotas extras: /agents retorna JSON e /events transmite SSE para status ao vivo.
O servidor escuta na porta 7321 e serve arquivos estáticos da pasta dashboard. Ele também expõe um endpoint /agents que verifica processos em execução.
def active_agent_status() -> list[dict]: procs = subprocess.run(["ps", "-eo", "comm"], capture_output=True, text=True).stdout agents = [] for name in ["claude", "codex", "grok", "kimi"]: running = name in procs.lower() agents.append({ "name": name, "status": "active" if running else "idle", "last_seen": datetime.now(timezone.utc).isoformat() if running else None, }) return agents
open ~/Documents/Projects/appfy/organizer-loop-engineering/dashboard/server.py
Abra um terminal e execute os três comandos abaixo. O dashboard deve aparecer no seu navegador padrão.
cd ~/Documents/Projects/appfy/organizer-loop-engineering python3 dashboard/collector.py python3 dashboard/server.py open http://127.0.0.1:7321
server.py disser que a porta está em uso, defina ORGANIZER_PORT=7322 e tente novamente. Na próxima lição você aprenderá a ler o dashboard uma vez aberto.