Pular para o conteúdo

Local-first

httui é um app desktop que conversa com o filesystem da sua máquina, com o keychain e com drivers de banco de dados. Não existe cloud httui, conta pra criar, beacon de telemetria nem tracking de uso. Essa página explica por quê e o que isso significa na prática.

AspectoPostura do httui
Onde seus runbooks vivemUma pasta no seu disco que você escolheu
Onde o sync rolaGit, executado por você (push pro GitHub, GitLab, self-hosted, o que for)
Onde os secrets vivemKeychain do SO na sua máquina (Keychain.app, Credential Manager, Secret Service)
Onde o cache viveUm arquivo SQLite notes.db na pasta do vault
Telemetria / analyticsNenhuma. Zero. O app nunca telefona pra casa pra analytics.
Servidores de licença / ativaçãoNenhum. Open source, MIT — você pode ler cada linha.
Check de auto-updateSim — busca de GitHub Releases. Desabilite em Settings.

Pra ser honesto sobre as chamadas de rede que o app faz quando você pede:

AçãoChamada de rede
Você roda um bloco HTTPA request que você escreveu, pra onde você apontou
Você conecta num DBO DB que você configurou, com as credenciais no seu keychain
Você usa o painel de chatAPI Claude (via Anthropic SDK), usa seu ANTHROPIC_API_KEY
Você checa por updatesapi.github.com/repos/httuicom/httui/releases/latest
Você instala pelo scripthttui.com/install.sh (uma vez)

Essa é a lista completa. Não tem heartbeat em background, nem event stream “quão frequente usuários clicam em X”, nem crash reporter que esconde o que envia.

Runbooks contêm credenciais de produção e detalhes de incidente. Duas razões pra isso fazer local-first não-negociável:

1. Dados sensíveis não devem atravessar um terceiro

Seção intitulada “1. Dados sensíveis não devem atravessar um terceiro”

Seu runbook do fluxo de refund referencia o token de API que consegue emitir refunds. Seu runbook de post-mortem de incidente contém as queries SQL que revelaram a breach. Isso não pertence ao banco de um vendor SaaS, indexado e replicado em várias regiões, sujeito a qualquer lista de sub-processor que eles atualizaram no mês passado.

Quando o httui resolve {{REFUND_TOKEN}}, ele lê do keychain do seu SO e substitui o valor na request. O token existe por ~200 microssegundos na memória do processo, nunca cruza fronteira de rede exceto pra dentro do endpoint de API que você escolheu.

httui pode falhar como produto. Os runbooks na sua pasta runbooks/ não devem morrer com ele.

Se o httui fechar amanhãO que você tem
Seus runbooksArquivos .md no seu repo git, legíveis em qualquer editor
Seus secretsAinda no keychain do seu SO, gerenciáveis via UI do sistema
Sua lista de conexõesUm connections.toml puro, ainda parseável à mão
O histórico de execuçãoPerdido (estava em notes.db), mas isso é cache

Compare com “uma conta na cloud do Postman” — coleções vivem no serviço deles. Se eles sumirem ou mudarem preço, as coleções somem ou ficam reféns.

O httui usa git como camada de sync. Você dá push do vault pra qualquer remote git — GitHub, GitLab, Gitea, um repo bare num VPS, self-host com Tailscale. Seu colega clona. Agora os dois têm.

PreocupaçãoResposta do git
ColaboraçãoBranches, PRs, code review
Históricogit log, git blame, git revert
Resolução de conflito3-way merge padrão — diff é só texto
PermissõesO que seu git host te der
Audit logToda mudança é um commit assinado

O vault tem um workflow git opinionado embutido no painel Git do lado direito — stage, commit, sync (pull --ff-only + push) sem sair do editor. Mas você também pode usar git pelo terminal — mesmos arquivos.

A gente é explícito porque a maioria dos produtos que dizem “sem telemetria” significam “sem telemetria do site de marketing” enquanto ainda telefonam pra casa pelo app desktop via crash reporters ou beacons de update.

httui:

  • Sem Sentry / Bugsnag / Rollbar — crashes produzem um arquivo de log local que você pode anexar numa issue do GitHub se quiser
  • Sem Plausible / Fathom / GA no binário desktop
  • Sem contador de “uso anônimo” pra que menus você clica
  • Sem framework de A/B testing
  • Sem serviço de feature-flag — flags shippam no binário, sem fetch em runtime

O check de update (api.github.com/repos/httuicom/httui/releases/latest) é um único GET que o GitHub vê, e tá atrás de um toggle de Settings.

Se você usa o painel de chat, o texto da sua conversa mais o conteúdo dos arquivos que o chat lê viajam pra API da Anthropic (Claude). Esse é o modelo servindo as responses; não tem servidor httui intermediário.

Permissões:

  • Comandos Bash sempre requerem OK por chamada
  • Edit/Write fora do cwd da sessão são hard-denied (sem prompt)
  • Read dentro do cwd da sessão é auto-allowed
  • Outras tools: prompt com escopo Once / Session / Always

Regras de permissão são persistidas no seu notes.db, não em nenhuma cloud. Veja Chat & MCP pro modelo completo.

httui.com (o site onde você tá lendo isso) é um site estático no GitHub Pages. Não tem JavaScript que carrega SDK de analytics. As únicas chamadas outbound que um browser faz são pra buscar fontes (CDN Google Fonts) e Mermaid pros diagramas (CDN jsdelivr).

Se você não quer nem isso, o site degrada graciosamente — fontes caem pra system, blocos Mermaid aparecem como texto de código.

Local-first não é grátis. Você abre mão de:

  • Compartilhamento de time num clique. Você precisa de um git host. (A maioria dos times já tem.)
  • Sensação “abre no browser”. O binário desktop é ~80 MB. (Mesmo que Postman / Insomnia / Bruno.)
  • SRE do vendor de plantão. Se você self-hostiza o remote git, é com você.

O que você ganha:

  • Seus dados, nos seus discos, acessíveis sem conexão de internet
  • Sem crescimento de custo conforme seu time cresce — o app desktop é grátis
  • Sem vendor lock-in, sem custo de migração
  • Code path auditável — leia o source no GitHub