GitHub - akgitrepos/explain-my-curl: Takes a curl command and explains DNS/TLS/HTTP details step-by-step

2 min read Original article ↗

explain-my-curl is a local-first CLI for understanding what a curl command is doing across DNS, TLS, and HTTP.

explain-my-curl TUI preview

This repository currently includes:

  • A CLI command to parse and explain a curl input
  • A starter TUI for interactive exploration
  • Execution telemetry for DNS, TCP connect, TLS handshake, and time-to-first-byte
  • Secret redaction for command display and error strings
  • Evidence labels (Observed, Inferred, Estimated) to support protocol transparency
  • A transparency contract in docs/transparency-contract.md

Quick Start

go mod tidy
go run ./cmd/explain-my-curl explain "curl https://example.com -I"
go run ./cmd/explain-my-curl tui
go run ./cmd/explain-my-curl doctor
go run ./cmd/explain-my-curl version

TUI Controls

  • Enter: run current curl input
  • Esc: switch to inspect mode
  • Tab: switch input/inspect focus
  • i: focus input mode
  • j/k or arrow keys: move selected timeline step
  • Space: collapse/expand selected timeline step
  • Ctrl+R: toggle response diagnostics panel
  • Ctrl+B: toggle response body preview visibility
  • q: quit

Releases

  • Tagged releases (v*) are built automatically with GoReleaser via GitHub Actions.
  • CI validates go test ./... on pushes and pull requests.
  • CI also runs a GoReleaser snapshot build to verify release config continuously.
  • Artifacts are published for macOS/Linux/Windows on amd64 and arm64.
  • Release binaries include embedded build metadata (version, commit, date).
  • A Homebrew formula is generated in Formula/ during release (tap uses this same repository).

Current Status

Local execution telemetry, split-pane TUI, redaction, tests, transparency contract, and release automation are in place.