Barroso Harness

Uma harness de agentes leves, em um binário

Feita em Go do zero: CLI imediata, provider qualquer no padrão OpenAI Chat Completions, instruções BARROSO.md, tools locais sem aprovação e gestão de contexto por orçamento medido.

Windows · macOS · LinuxYOLO sempreChat CompletionsBARROSO.md

Instalar

Baixe um binário da última release da página (5 plataformas + SHA256SUMS) ou construa do fonte:

git clone --depth 1 https://github.com/ruanbarroso/barroso-harness
cd barroso-harness
go build -o barroso-harness ./cmd/barroso-harness && ./barroso-harness -version

Atalhos de download binário (valem em qualquer plataforma — troque o nome do arquivo pelo da sua):

# linux amd64
curl -LO https://github.com/ruanbarroso/barroso-harness/releases/latest/download/barroso-harness-linux-amd64
chmod +x barroso-harness-linux-amd64 && ./barroso-harness-linux-amd64 -version

# linux arm64
curl -LO https://github.com/ruanbarroso/barroso-harness/releases/latest/download/barroso-harness-linux-arm64

# macos (apple silicon)
curl -LO https://github.com/ruanbarroso/barroso-harness/releases/latest/download/barroso-harness-darwin-arm64

# macos intel
curl -LO https://github.com/ruanbarroso/barroso-harness/releases/latest/download/barroso-harness-darwin-amd64

# windows (PowerShell)
curl -LO https://github.com/ruanbarroso/barroso-harness/releases/latest/download/barroso-harness-windows-amd64.exe
.\barroso-harness-windows-amd64.exe -version

Configurar (60 segundos)

./barroso-harness -init                # cria ~/.barroso-harness/{config.json,BARROSO.md}
export BARROSO_API_KEY=sua-chave        # a chave NUNCA vai para o arquivo

Depois edite ~/.barroso-harness/config.json:

{
  "base_url": "https://seu-endpoint.example/v1",
  "model": "seu-modelo"
}

Campo opcional context_window: se o endpoint publicar a janela do modelo, informe aqui em tokens — ativa o guardrail de contexto do runtime.

Usar

barroso-harness -p "liste o que tem na pasta e diga o que pensa"

Como o contexto é mantido

A janela do modelo é um guardrail, não o motor da compactação. O runtime mede o request antes de mandar: se o prompt estimado + reserva de saída não caberem na context_window, a poda entra — resultados antigos e grandes de tool saem como bilhete curto, a cauda de 24 mensagens fica intocada e o piso da poda é monotônico dentro do turno. Se o provider recusar mesmo assim, entra a recuperação reativa (uma tentativa). O transcript íntegro nunca é editado: a poda reduz só o request.

O estimador de tokens se calibra ao vivo com o usage que o provider reporta (stream_options.include_usage): o par bytes-enviados/tokens-reais puxa bytes_per_token na direção medida — sem regra fixa de chars/token como verdade.

BARROSO.md

Toda sessão entra com as instruções dos BARROSO.md aplicáveis, em ordem de precedência: pasta do projeto → diretórios pais → global em ~/.barroso-harness/BARROSO.md. O mesmo texto nunca entra duas vezes; arquivo em branco não entra.

Tools yolo

ToolFaz
terminal_runcomando no shell local (timeout configurável, exit code st+stderr)
file_readleitura com números de linha e janelas start/limit
file_writeescreve/sobrescreve; cria diretórios pais
file_appendanexa ao fim
file_copycopia (cp/copy do sistema)
list_dirlista diretório recursivo até depth 3
ctx_readlê o contexto vivo da sessão (arquivo de trabalho do agente)

Modo YOLO significa: essas ferramentas executam direto, com os privilégios do usuário no sistema. Não há allowlist nem diálogo de confirmação.

Roadmap

Slice 1: sessões persistentes + contexto vivo editável (ctx_write/ctx_append), inicialização dos agentes, ACP por stdio e skills. Slice 2: MCP stdio/HTTP, web_search/web_fetch e subagentes (com todas as tools, exceto a de invocar subagente).