hitspec Studio is the desktop companion to hitspec studio: the same
keyboard-friendly workflow in a native window instead of a terminal. It edits
and runs the exact same plain-text .http files, so what you click in the app
is what CI executes.
The desktop app is developed in this repository under
apps/desktop. It is
not bundled with the Go binary yet — build it from source (below) or grab a
packaged build from the releases page.Run it from source
1
Install dependencies
2
Build the CLI it drives
3
Launch
cmd/ctrl+O, by dropping a folder on the app icon, or by
passing a directory on the command line. Recent workspaces are remembered on
the welcome screen.
What you get
- Workspace browser — file tree with request counts, fuzzy filter, and a per-file request list with pass/fail dots from the last run.
- Request inspector — method, URL, headers, query params, body,
assertions, captures and metadata (
@timeout,@depends,@auth, …). - Runner — run one request (
cmd/ctrl+enter) or the whole file (cmd/ctrl+shift+enter) with live per-request progress, then a tabbed response viewer: pretty-printed JSON body, headers, assertion results, timing, captures and SSE events. - Source editor — line numbers plus
.httpsyntax highlighting, save (cmd/ctrl+s), revert, and automatic reload when the file changes on disk. - Environments — switch from the toolbar or edit variables in a grid that
writes straight back to
hitspec.yaml. - History — the persistent SQLite run history with per-run drill-down.
- Stress, mock, record — the same engines as the CLI, with live metrics
charts, route tables and recording export to
.http. - Import — curl, OpenAPI and Insomnia sources previewed as
.httpbefore you save them into the workspace. - Command palette (
cmd/ctrl+k) and five themes shared with the terminal UI.
How it works
The app spawnshitspec serve --api-only as a child process on a random
loopback port with a freshly generated bearer token, then drives the REST and
WebSocket API from packages/serve. The renderer never talks to the network
and never sees the token: every call crosses a small IPC bridge in the main
process, and file writes outside the workspace are only allowed for paths you
picked in a native save dialog.
packages/serve
becomes available to the desktop app without new native code.