Nine protocols. Zero context switching.
Hitro is an open-source desktop API client for testing REST, gRPC, GraphQL, WebSocket, Kafka, SQS, MQTT, SSE, and Socket.IO from a single unified interface. Built with Electron + React + TypeScript.
| Protocol | Capabilities |
|---|---|
| REST | All HTTP methods · JSON / XML / text / form-data / URL-encoded bodies · Query params & custom headers |
| gRPC | Proto file loading · TLS · Service/method selection · Metadata |
| GraphQL | Queries & mutations · Variables editor · Operation name · Custom headers |
| WebSocket | Connect / send / disconnect · Real-time event log |
| Kafka | Produce & consume · Consumer group · fromBeginning · Max-message cap |
| AWS SQS | Send & receive · Region + queue URL · Message attributes · Custom credentials |
| MQTT | Publish & subscribe · QoS 0/1/2 · Retain flag · Broker auth |
| SSE | Server-Sent Events streaming · Custom headers · Max-event cap |
| Socket.IO | Emit & listen modes · Custom events · Payload JSON |
All auth types available for REST:
| Type | Fields |
|---|---|
| None | — |
| Bearer Token | Token string |
| Basic Auth | Username + password |
| API Key | Key, value, header or query placement |
| OAuth 2.0 | Token URL, client ID/secret, scope — token fetched automatically |
| Digest Auth | Username + password |
| Feature | Description |
|---|---|
| Collections | Organise requests by project or domain, with folder support |
| Collection Runner | Run all requests in a collection sequentially, see pass/fail per request |
| Environments | Named variable sets; reference with {{varName}} |
| Global Variables | Cross-environment variables always available |
| Assertions | 16 operators against status, headers, and JSON body paths (eq, ne, contains, gt, gte, lt, lte, startsWith, endsWith, type, length, isEmpty, isNull, and more) |
| Pre/Post Scripts | JavaScript sandboxed execution with pm API (Postman-compatible) |
| History | Last 100 requests persisted locally in SQLite |
| Code Generation | Export as cURL, JS fetch, Python requests, Node.js axios, PHP |
| cURL Import | Paste a curl command to create a request |
| OpenAPI Import | Import an OpenAPI 3.0 JSON spec to create a full collection |
| Collection Export | Export any collection to JSON |
| Tabs | Work on multiple requests simultaneously |
| Console tab | View console.log() output from scripts |
Go to Releases and download the installer for your platform:
| Platform | File |
|---|---|
| Windows | Hitro-Setup-x.y.z.exe (NSIS installer) |
| macOS | Hitro-x.y.z.dmg |
| Linux | Hitro-x.y.z.AppImage |
git clone https://github.com/aks-builds/hitro.git
cd Hitro
npm install # also runs electron-rebuild automatically
npm run dist:win # Windows .exe
npm run dist:mac # macOS .dmg
npm run dist:linux # Linux .AppImageInstallers are written to release/.
npm install
npm run devStarts the Vite dev server on :5173 and launches Electron once ready. Hot-module replacement is active for the renderer.
npm run dev:main # tsc --watch on main process only
npm run dev:renderer # vite dev server onlyHitro supports JavaScript scripts that run before a request is sent or after a response is received. The API is Postman-compatible:
// Pre-request script
pm.variables.set('token', 'abc123')
pm.variables.get('baseUrl')
// Post-response script
const body = pm.response.json()
pm.variables.set('userId', body.id)
// Assertions in scripts
pm.test('status is 200', () => {
pm.expect(pm.response.code).to.equal(200)
})
// Console output (visible in Console tab)
console.log('response body:', pm.response.json())docs/ Technical reference documentation
├── ARCHITECTURE.md Process model, IPC contract, DB schema
├── TESTING.md Unit + E2E test guide
├── MIGRATION.md Database migration strategy
├── RUNBOOK.md Build, release, and debugging procedures
├── GUARDRAILS.md Security and quality constraints
└── DoD.md Definition of Done checklist
src/
├── main/ Electron main process
│ ├── adapters/ One file per protocol
│ │ ├── rest.ts REST (axios, OAuth 2.0, all body types)
│ │ ├── grpc.ts gRPC (@grpc/grpc-js)
│ │ ├── graphql.ts GraphQL
│ │ ├── websocket.ts WebSocket (ws)
│ │ ├── kafka.ts Kafka (kafkajs)
│ │ ├── sqs.ts AWS SQS (@aws-sdk/client-sqs)
│ │ ├── mqtt.ts MQTT (mqtt)
│ │ ├── sse.ts SSE (native fetch streaming)
│ │ └── socketio.ts Socket.IO (socket.io-client)
│ ├── scripts.ts Sandboxed JS execution (vm module)
│ ├── tools.ts cURL import/export, OpenAPI import, code generation
│ ├── index.ts App entry — BrowserWindow
│ ├── database.ts SQLite schema and CRUD helpers
│ ├── ipc.ts IPC handler registrations
│ └── preload.ts Context bridge
├── renderer/ React frontend
│ ├── components/ UI components
│ │ ├── protocols/ Per-protocol config panels
│ │ ├── Sidebar.tsx Collections, environments, global vars, import
│ │ ├── RequestBuilder.tsx
│ │ ├── ResponsePanel.tsx
│ │ ├── CollectionRunner.tsx
│ │ └── ImportModal.tsx
│ ├── store/appStore.ts Zustand state
│ └── App.tsx
└── shared/
├── types.ts All TypeScript interfaces
└── assertions.ts Assertion evaluation engine
| Tool | Minimum version |
|---|---|
| Node.js | 20 LTS |
| npm | 10 |
| Git | 2.40 |
macOS: Xcode Command Line Tools required (
xcode-select --install)
Linux:libgtk-3-0 libxss1 libnss3 libasound2 libgbm1
Windows: No extra dependencies needed
GitHub Actions builds native installers on each platform's own runner:
| Trigger | What happens |
|---|---|
Push tag v* |
Builds Windows + macOS + Linux, creates a GitHub Release |
workflow_dispatch |
Manual build — creates a draft release by default |
See .github/workflows/build.yml.
To cut a release:
git tag v1.2.0
git push origin v1.2.0We welcome contributions! Please read CONTRIBUTING.md before opening a pull request.
MIT © 2026 aks-builds