Skip to content

Local-first

httui is a desktop app that talks to your machine’s filesystem, keychain, and database drivers. There is no httui cloud, no account to create, no telemetry beacon, no usage tracking. This page explains why and what that means in practice.

Aspecthttui’s stance
Where your runbooks liveA folder on your disk you chose
Where the sync happensGit, run by you (push to GitHub, GitLab, self-hosted, whatever)
Where secrets liveOS keychain on your machine (Keychain.app, Credential Manager, Secret Service)
Where the cache livesA notes.db SQLite file in the vault folder
Telemetry / analyticsNone. Zero. The app never phones home for analytics.
License servers / activationNone. Open source, MIT — you can read every line.
Auto-update checkYes — fetches from GitHub Releases. Disable in Settings.

To be honest about the network calls the app makes when you ask for them:

ActionNetwork call
You run an HTTP blockThe request you wrote, to wherever you pointed it
You connect to a DBThe DB you configured, with the creds in your keychain
You use the chat panelClaude API (via the Anthropic SDK), uses your ANTHROPIC_API_KEY
You check for updatesapi.github.com/repos/httuicom/httui/releases/latest
You install from scripthttui.com/install.sh (one-time)

That’s the complete list. There is no background heartbeat, no “how often do users click X” event stream, no crash reporter that hides what it sends.

Why this matters for runbooks specifically

Section titled “Why this matters for runbooks specifically”

Runbooks contain production credentials and incident details. Two reasons that makes local-first non-negotiable:

1. Sensitive data shouldn’t traverse a third party

Section titled “1. Sensitive data shouldn’t traverse a third party”

Your refund-flow runbook references the API token that can issue refunds. Your incident post-mortem runbook contains the SQL queries that revealed the breach. These don’t belong in a SaaS-vendor’s database, indexed and replicated across regions, subject to whatever sub-processor list they updated last month.

When httui resolves {{REFUND_TOKEN}}, it reads from your OS keychain and substitutes the value into the request. The token exists for ~200 microseconds in process memory, never crosses a network boundary except into the API endpoint you chose.

httui might fail as a product. The runbooks in your runbooks/ folder shouldn’t die with it.

If httui shuts down tomorrowWhat you have
Your runbooks.md files in your git repo, readable in any editor
Your secretsStill in your OS keychain, manageable via system UI
Your connection listA plain connections.toml, still parseable by hand
The execution historyLost (it was in notes.db), but that’s a cache

Compare with “a Postman cloud account” — collections live in their service. If they vanish or change pricing, the collections vanish or get held ransom.

httui uses git as the sync layer. You push the vault to any git remote — GitHub, GitLab, Gitea, a bare repo on a VPS, Tailscale self-host. Your teammate clones it. Now you both have it.

Concerngit answer
CollaborationBranches, PRs, code review
Historygit log, git blame, git revert
Conflict resolutionStandard 3-way merge — diff is just text
PermissionsWhatever your git host gives you
Audit logEvery change is a signed commit

The vault has an opinionated git workflow built into the right-side Git panel — stage, commit, sync (pull --ff-only + push) without leaving the editor. But you can also just use git from the terminal — same files.

We’re explicit because most products that say “no telemetry” mean “no telemetry from the marketing site” while still phoning home from the desktop app via crash reporters or update beacons.

httui:

  • No Sentry / Bugsnag / Rollbar — crashes produce a local log file you can attach to a GitHub issue if you want
  • No Plausible / Fathom / GA on the desktop binary
  • No “anonymous usage” counter for which menus you click
  • No A/B testing framework
  • No feature-flag service — flags ship in the binary, no runtime fetch

The update check (api.github.com/repos/httuicom/httui/releases/latest) is a single GET that GitHub sees, and it’s behind a Settings toggle.

If you use the chat panel, the text of your conversation plus the content of files the chat reads travel to Anthropic’s API (Claude). That’s the model serving the responses; there’s no intermediate httui server.

Permissions:

  • Bash commands always require a per-call OK
  • Edit/Write outside the session cwd are hard-denied (no prompt)
  • Read inside the session cwd is auto-allowed
  • Other tools: prompt with Once / Session / Always scope

Permission rules are persisted in your notes.db, not in any cloud. See Chat & MCP for the full model.

What about analytics for the site (httui.com)?

Section titled “What about analytics for the site (httui.com)?”

httui.com (the site you’re reading this on) is a static site on GitHub Pages. There’s no JavaScript that loads an analytics SDK. The only outbound calls a browser makes are to fetch fonts (Google Fonts CDN) and Mermaid for diagrams (jsdelivr CDN).

If you don’t want even those, the site degrades gracefully — fonts fall back to system, Mermaid blocks show as code text.

Local-first is not free. You give up:

  • One-click team sharing. You need a git host. (Most teams already have one.)
  • “Open in browser” feel. The desktop binary is ~80 MB. (Same as Postman / Insomnia / Bruno.)
  • A vendor’s SRE on call. If you self-host the git remote, that’s on you.

What you get:

  • Your data, on your disks, accessible without an internet connection
  • No cost growth as your team grows — the desktop app is free
  • No vendor lock-in, no migration cost
  • Auditable code path — read the source on GitHub