v0.4.1 · código aberto — local-first · sem telemetria

Debugue suas APIs e bancos em um único arquivo markdown.

httui é um editor de markdown com blocos executáveis — requisições HTTP e SQL (PostgreSQL, MySQL, SQLite). Cada runbook é documentação e ferramenta de troubleshooting, versionado no git.

rollout-v2.3.md — httui
httui
acme payments rollout-v2.3.md
local
staging
prod
Search blocks, vars, schema… ⌘K
RMT
main
Run all
Files
runbooks
payments
rollout-v2.3.md
rollback.md
incident-2026-03-19.md
onboarding
data-fixes.md
scratch
ad-hoc.md
shared / team
Connections
pg · payments@staging 18ms
pg · payments@prod PROD 41ms
mongo · audit 22ms
redis · cache 88ms
API · payments 142ms
Variables — staging
BASE_URL https://api.staging.acme.dev
TENANT_ID tnt_8f2a91
ADMIN_TOKEN ••••••••••••mB9k
PG_DSN postgres://app@db-staging…
rollout-v2.3.md
rollback.md
ad-hoc.md
runbooks / payments / rollout-v2.3.md · edited há 4 min by rafael 10 blocks · 4 ran · 1 pending · auto-capture
runbooks / payments / rollout-v2.3.md draft · 4 unsaved edits

Rollout — Payments v2.3 → staging

R rafael · edited há 4 min · 10 blocks · main +3 ~1 · last run 14:23 — all green

Deploy do novo provider de cartão (stripe_v2) para o tenant acme-payments em staging. Antes de promover para prod, validar que a config foi propagada, que payments_route não tem rotas órfãs, e que a latência do stream de captura fica abaixo de 800ms.

PRÉ-FLIGHT — 4 itens
config do tenant atualizada em tenants.config
0 registros órfãos em payments_route
subscrever stream WS por 30s
rollout_pct ≤ 25 antes de prod
TAGS
#rollout
#payments
#staging
#breaking-change
1 Sanidade — health check do gateway
02
ran 14:22:08 200 · 142ms
GET {{BASE_URL}}/v2/health
{
"status": "ok", "version": "2.3.0-rc4",
"deps": { "db": "ok", "kafka": "degraded" }
}
2 Autenticar como admin do tenant
04
ran 14:22:14 201 · 318ms
POST {{BASE_URL}}/v2/auth/admin
Authorization: Bearer {{ADMIN_TOKEN}}
X-Tenant: {{TENANT_ID}}
captured → SESSION_ID = ses_01HZ4RTQ8VK7…
3 Verificar rotas órfãs no banco
06 SQL
pg · payments@staging 3 rows · 47ms
SELECT r.id, r.tenant_id, r.provider_key
FROM payments_route r
LEFT JOIN payment_provider p ON p.key = r.provider_key
WHERE p.key IS NULL;
Outline
Schema
History
Comments 2
Database payments
pg · payments@staging · 18ms
public 5
payment_provider 12
payments_route 4,318
id text
tenant_id text
provider_key text
fallbacks text[]
rollout_pct int4
created_at timestamptz
updated_at timestamptz
tenants 821
captures 1,284,913
audit_log 9,123,402
billing 3
History 6
14:24:07 WS captures 14 msgs
14:23:01 SELECT … rotas órfãs 3 rows · 47ms
14:22:14 POST /v2/auth/admin 201 · 318ms
14:22:08 GET /v2/health 200 · 142ms
Ask httui ⌘J
Por que kafka está degraded?
main · 3 changes connected · staging pg 18ms api 142ms Ln 47, Col 12 UTF-8 chained httui 0.4.2
Código aberto · Licença MIT

Construído no aberto. Mexa, faça fork, mande PR.

15
Estrelas no GitHub
github.com/httuicom/httui
2
contribuidores
crescendo no aberto
MIT
licença
sem amarras
v0.4.1
última release
release pendente
Um arquivo · vários blocos

Markdown que executa.

Cada bloco é executável: requisições HTTP e SQL (PostgreSQL, MySQL, SQLite). Capturas de um bloco viram variáveis do próximo, encadeando todo o fluxo dentro de um único .md.

1. Verify shadow traffic
Confirm payments-router is mirroring 5% of requests in staging.
POST {{api}}/v2/payments ● 201 · 218ms
{
"id": "pay_01H8XK...",
"provider": "stripe_v2",
"shadow": true
}
captured: payment_id = pay_01H8XK…
SQL pg · payments@staging ● 1 row · 14ms
SELECT status, provider FROM payments
WHERE id = {{payment_id}}
Nativo de banco

Schema explorer ao lado do editor.

Conecta PostgreSQL, MySQL e SQLite. Navega tabelas com foreign keys, índices e row count. EXPLAIN ANALYZE em árvore mostra onde sua query gasta tempo.

SCHEMA · payments
▾ public 4 tables
▸ payments 84.2k
▾ payments_route 4.3k
id uuid
provider_key text
tenant_id uuid
active bool
created_at timestamptz
▸ payment_provider 12
▸ tenants 284
▾ analytics 1 table
▸ events 12.4M
Result · 3 rows · 14ms EXPLAIN
#idprovider_keytenantactivecreated_at
1rt_4f2astripe_v2acmetrue2026-04-24 14:08
2rt_7ce1stripe_v2acmetrue2026-04-24 13:51
3rt_b08dadyen_v1acmefalse2026-04-23 09:12
EXPLAIN ANALYZE
Index Scan using idx_route_provider · 0.42..18.7 · 3 rows · 0.21ms
Nativo de git · diffável

Versionado. Revisável. Compartilhável.

Runbooks são .md no seu repo. Revisão por pull request igual qualquer código. Diff entre execuções mostra o que mudou na resposta.

main · 3 changes · runbooks/payments/rollout-v2.3.md +18 −4
@@ -42,7 +42,11 @@ ## 3. Verify latency
- ```http GET {{api}}/v2/health
- expect: status === 200
- ```
+ ```http POST {{api}}/v2/payments
+ Authorization: Bearer {{user_token}}
+ Content-Type: application/json
+
+ { "amount": 1200, "currency": "BRL" }
+
+ expect: status === 201
+ expect: time < 500ms
+ capture: payment_id = $.id
+ ```
httui-lang · LSP

Use em qualquer lugar.

O formato dos blocos .httui é uma linguagem de verdade com grammar tree-sitter e servidor LSP. Runbooks ganham autocomplete, hover e go-to-definition pra referências — dentro de qualquer editor que fale LSP.

VS CodeNeovimZedHelixIntelliJSublime

Embutido no app desktop · binário standalone pra terminais · publique a grammar em qualquer registry de pacotes.

smoke-test.httui
# Smoke test
http alias=login timeout=5000
POST https://api.example.com/auth/login
Content-Type: application/json

{ "user": "alice", "pwd": "{{SECRET}}" }

http alias=me
GET https://api.example.com/me
Authorization: Bearer {{login.body.token}}

# expect:
#   status == 200
#   time < 500ms
Instalar

De graça pra sempre. Seu pra fazer fork.

Uma linha. Sem cadastro, sem cartão, sem telemetria.

~/projects · zsh
$ curl -fsSL https://httui.com/install.sh | sh
✓ baixando a última release…
✓ httui instalado → /Applications/httui.app
$ open /Applications/httui.app
Homebrew
brew tap httuicom/httui
brew install --cask httui
GitHub Releases
.dmg · .msi · .exe
.deb · .rpm · .AppImage
{ } Pelo código
make install-deps
cargo tauri build

Builds GUI pra macOS · Linux · Windows em GitHub releases. O build de macOS não é assinado — o script de install e o cask do Homebrew limpam a quarentena do Gatekeeper; o auto-update interno mantém atualizado.

Pare de debugar em cinco abas.
Comece a escrever runbooks no lugar.

Código aberto, licença MIT. curl -fsSL https://httui.com/install.sh | sh e é seu.

Começar Ler os docs