deadbyte-spawner é o orquestrador do DeadByte v4. Ele é um painel Nuxt/Nitro com Nuxt UI, PostgreSQL e Drizzle.
- Cadastrar repositórios de bot.
- Clonar/fazer fetch/checkout com
simple-git. - Instalar, buildar e executar o comando de manifesto.
- Sincronizar comandos e aliases existentes no manifesto.
- Criar instâncias.
- Gerar
runtime.config.json. - Iniciar/parar/reiniciar processos com
execa. - Capturar stdout/stderr, parsear eventos
__DEADBYTE_EVENT__e salvar logs/eventos no PostgreSQL.
O spawner não contém lógica de comandos do bot. Ele não inventa comandos no banco. Ele só configura comandos que existem no manifesto emitido pelo bot.
pnpm installCrie o .env real:
cp .env.example .envConfigure principalmente:
DATABASE_URL=postgres://deadbyte:deadbyte@localhost:5432/deadbyte
DEADBYTE_DATA_DIR=./.deadbyte
DEADBYTE_INTERNAL_PORT_START=41000
DEADBYTE_INTERNAL_PORT_END=41999
DEADBYTE_CHROME_PATH=
FFMPEG_PATH=
FFPROBE_PATH=O spawner exige PostgreSQL para rodar corretamente. Ele não assume Docker.
O schema fica em server/db/schema/index.ts.
As tabelas usam nomes singulares e diretos, sem prefixo bot_:
repositoryrepository_versioncommandcommand_aliasinstanceinstance_commandinstance_command_aliasruntime_eventruntime_process_logseen_contactseen_chatcommand_executionmessage_eventinstance_daily_stat
Gere e rode migrations:
pnpm db:generate
pnpm db:migratepnpm devpnpm buildVia API:
curl -X POST http://localhost:3000/api/repositories \
-H "content-type: application/json" \
-d '{"name":"DeadByte Bot","slug":"deadbyte-bot","repositoryUrl":"https://github.com/sergiooak/deadbyte-bot.git","defaultBranch":"main"}'curl -X POST http://localhost:3000/api/repositories/deadbyte-bot/sync-manifestIsso clona/fetch, instala, builda, executa pnpm manifest, valida o manifesto com schema do runtime e sincroniza comandos.
curl -X POST http://localhost:3000/api/instances \
-H "content-type: application/json" \
-d '{"repositorySlug":"deadbyte-bot","name":"Nitro","slug":"nitro","clientId":"nitro","branch":"main"}'curl -X POST http://localhost:3000/api/instances/nitro/start
curl -X POST http://localhost:3000/api/instances/nitro/stop
curl -X POST http://localhost:3000/api/instances/nitro/restartUse PATCH /api/instances/:slug/commands. O endpoint valida colisão de aliases antes de salvar e regenera runtime.config.json.
- Trocar o
ChildProcessManagerpor PM2, Docker ou systemd sem alterar o bot. - Adicionar filas para operações longas de clone/build.
- Implementar jobs de agregação para
instance_daily_stat. - Adicionar autenticação no painel antes de expor em rede.
- Importa
@deadbyte/runtimepara validar manifesto e eventos. - Controla
deadbyte-botpor processo e runtime config. - Não importa código de comando do bot diretamente; usa apenas manifesto.