v0.4.1 · open source — local-first · no telemetry

Debug your APIs and databases in a single markdown file.

httui is a markdown editor with executable blocks — HTTP requests and SQL (PostgreSQL, MySQL, SQLite). Each runbook is documentation and a troubleshooting tool, versioned in 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
Open source · MIT license

Built in the open. Hack on it, fork it, send a PR.

15
GitHub stars
github.com/httuicom/httui
2
contributors
growing in the open
MIT
license
no strings attached
v0.4.1
latest release
release pending
One file · many blocks

Markdown that runs.

Each block is executable: HTTP requests and SQL queries (PostgreSQL, MySQL, SQLite). Captures from one block become variables for the next, chaining the entire flow inside a single .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}}
Database-native

Schema explorer next to the editor.

Connect PostgreSQL, MySQL, and SQLite. Browse tables with foreign keys, indexes, and row counts. EXPLAIN ANALYZE in tree form shows where your query spends time.

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
Git-native · diffable

Versioned. Reviewable. Sharable.

Runbooks are .md files in your repo. Pull request review like any other code. Diff between runs shows what changed in the response across executions.

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 it anywhere.

The .httui block format is a real language with a tree-sitter grammar and an LSP server. Runbooks get autocomplete, hover, and go-to-definition for references — inside any editor that speaks LSP.

VS CodeNeovimZedHelixIntelliJSublime

Built into the desktop app · standalone binary for terminals · publish your grammar to any package registry.

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
Install

Free forever. Yours to fork.

One line. No signup, no card, no telemetry.

~/projects · zsh
$ curl -fsSL https://httui.com/install.sh | sh
✓ downloading the latest release…
✓ installed httui → /Applications/httui.app
$ open /Applications/httui.app
Homebrew
brew tap httuicom/httui
brew install --cask httui
GitHub Releases
.dmg · .msi · .exe
.deb · .rpm · .AppImage
{ } From source
make install-deps
cargo tauri build

GUI builds for macOS · Linux · Windows on GitHub releases. The macOS build is unsigned — the install script and Homebrew cask clear the Gatekeeper quarantine; in-app auto-update keeps it current.

Stop debugging in five tabs.
Start writing runbooks instead.

Open source, MIT licensed. curl -fsSL https://httui.com/install.sh | sh and it's yours.

Get started Read the docs