Kronos Hub
English

Open source · AGPL-3.0 · self-hosted

Agentes de código que provam que o trabalho está pronto.

Harness auto-hospedado para contas de agente de código: tarefa só está pronta com evidência (integrada, no ar, checagens passando) e recibo. Contrato, fila, revisão, CI, merge, deploy.

bash
git clone https://github.com/BRK13/krohnos.git kronos && cd kronos
docker compose build painel
docker compose run --rm --no-deps --entrypoint kronos painel init
docker compose up -d
curl -fsS http://127.0.0.1:8787/saude
Star no GitHub

Status: o repositório público ainda está recebendo o código (hoje tem o README e o roadmap). O snapshot com o compose.yml chega com a publicação; os comandos de instalação desta página são os passos que ele vai rodar.

Requisitos

  • Uma máquina Linux (VPS ou PC) com Docker 24+ e o plugin Docker Compose v2 (docker compose version).
  • 2 GB de RAM livres e uns 4 GB de disco (a imagem leva Python, Node 22, git, gh e o CLI do Claude Code).
  • Opcional: um domínio (ou subdomínio) apontado para o servidor, se quiser abrir o painel pela internet com TLS.
  • Opcional, depois: um token do GitHub e uma chave de API do Linear (o assistente pede; dá para pular).

Nenhum segredo entra na imagem. Eles vivem em volumes do Docker (cofre, dados, home).

Instalar

Cinco passos, do servidor limpo ao painel no ar.

bash
# 1. baixe o código
git clone https://github.com/BRK13/krohnos.git kronos && cd kronos
# 2. construa a imagem (uma só serve os 4 serviços)
docker compose build painel
# 3. configure: o kronos init cria o kronos.toml (volume config), a chave mestra, o cofre e o SEU usuário de dono
docker compose run --rm --no-deps --entrypoint kronos painel init
# 4. suba os 4 serviços (painel, agenda, webhook, mcp)
docker compose up -d
# 5. confira: deve responder ok
curl -fsS http://127.0.0.1:8787/saude

Depois abra o painel (veja Proxy TLS abaixo), entre com o e-mail e a senha do dono e siga o assistente em /comecar.

Atenção: Não ponha o painel na internet antes de rodar o kronos init (passo 3). Enquanto a instalação não tem dono, quem abrir /comecar primeiro vira o dono. O kronos init cria o dono antes de o painel subir; quando o assistente termina, /comecar passa a dar 404.

Configuração

O kronos.toml fica no volume config (gravável: o assistente /comecar o reescreve). Segredos nunca entram no toml: a chave mestra e o cofre ficam no volume cofre; os usuários do painel (só o hash da senha), o projeto e os exemplos ficam em dados.

O kronos init pergunta tudo (domínio, nome e e-mail do dono, senha, organização do GitHub, primeiro projeto). Para pular as perguntas, troque o final do comando do passo 3 por init --sim ...:

bash
docker compose run --rm --no-deps --entrypoint kronos painel init --sim --dominio kronos.minhaempresa.com --dono-email ana@exemplo.test --projeto-dominio meusite.com.br

Use --exemplo no lugar de --projeto-dominio para os projetos de demonstração. A senha nunca vai pela linha de comando: deixe o init gerar uma (aparece uma vez, guarde) ou use --dono-senha-env NOME_DA_VARIAVEL.

Rodar o init de novo é seguro: toml, chave, cofre, usuários e projeto que já existem são mantidos. Para mudar a porta do painel:

bash
KRONOS_PAINEL_PORTA=9000 docker compose up -d

Proxy TLS

O painel fala HTTP na porta 8787. Ponha um proxy com TLS na frente. O cookie de sessão é Secure: o navegador só o guarda em HTTPS (ou em http://localhost). O webhook do Linear (8790) e o MCP (4181) ficam só no 127.0.0.1 do servidor.

Caddy, duas linhas, certificado automático:

caddy
kronos.minhaempresa.com {
    reverse_proxy 127.0.0.1:8787
}

Conectar as contas de agente

O assistente de primeira execução em /comecar passa por quatro coisas: GitHub, Linear, o primeiro projeto e a primeira conta do Claude. Tudo, menos o primeiro projeto, pode ser pulado e feito depois.

Para ver o painel cheio antes de configurar o seu, rode a demonstração. Ela enche uma instalação nova com dados inventados e marcados (demo --limpar remove só eles, e ela recusa uma pasta de dados que já tem dado real). Reinicie o painel depois para ele ler os novos projetos:

bash
docker compose run --rm --no-deps --entrypoint kronos painel demo
docker compose restart painel

Atualizar

Estes são os comandos padrão do Docker Compose para esta instalação (não fazem parte do guia de instalação do projeto). Baixe o código, reconstrua a imagem e reinicie os serviços; os volumes guardam seus dados.

bash
git pull && docker compose build painel && docker compose up -d

Desinstalar

De novo os comandos padrão do Docker Compose para esta instalação. O primeiro para e remove os contêineres e mantém os volumes:

bash
docker compose down

O segundo apaga também os volumes:

bash
docker compose down -v

Atenção: -v apaga o cofre, os dados e a config, incluindo a chave mestra e os logins do painel. Não tem como desfazer: faça backup antes.