A powerful, open-source API testing and development tool built with Electron.
PostBee is a full-featured alternative to Postman β a desktop-native API client with offline-first architecture, real-time protocol support, visual workflow builder, and optional cloud sync. Built with Electron, React, TypeScript, and SQLite.
- Full HTTP support β GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Request builder β Params, headers, body (form-data, urlencoded, raw JSON/XML/Text/HTML, binary, GraphQL), auth, scripts, settings
- 13 authentication types β Basic, Bearer, API Key, Digest, OAuth 1.0, OAuth 2.0, Hawk, AWS Signature, NTLM, JWT, Akamai EdgeGrid, ASAP, and more
- Response viewer β Pretty JSON, raw, preview, headers, timing breakdown, copy/download
- Variable system β Scoped variables (Global β Collection β Environment β Local), dynamic variables (
$guid,$timestamp,$randomInt) - Cookie jar β Automatic send/receive, per-domain management, import/export
- Unlimited nesting β Collections, folders, and requests with drag-and-drop reordering
- Collection runner β Iterations, delays, CSV/JSON data files, live test results,
setNextRequest()flow control - Request history β Grouped by time, searchable, with full response persistence
- Environments β Multiple environments, quick-switch (Ctrl+E), initial/current values, sensitive value masking, bulk edit
- Pre-request & post-response scripts β Full
pm.*API compatible with Postman - Sandboxed execution β Worker thread isolation with timeout and memory limits
- Test assertions β
pm.test(),pm.expect()with Chai-like matchers - Script console β
console.log/info/warn/errorcapture and display - pm.sendRequest() β Make additional requests from within scripts
- WebSocket β Connect/disconnect, send/receive messages, message history, auto-reconnect
- GraphQL β Schema introspection, autocompletion, query validation, schema explorer
- gRPC β Proto file loading, unary and streaming calls
- MQTT β Publish/subscribe, topic management
- Socket.IO β Event-based real-time communication
- SSE β Server-Sent Events streaming
- Unix Domain Sockets β Local process communication
- Drag-and-drop canvas β Built with React Flow
- Node types β Request, Condition (if/else), Loop, Script, Delay, Output
- Data flow β Variable passing between nodes with step-by-step execution visualization
- Local mock servers β Create from collection or define custom responses
- Match rules β Method, path, query params, headers
- Dynamic responses β Random/sequential selection, configurable delay
- Hot-reload β Edit mocks while server is running
- Code generation β Export requests to 22 languages/frameworks
- cURL import/export β Paste detection, multi-line support, Windows CMD format
- Import/Export β Postman v2.1, OpenAPI 3.0, Swagger 2.0, HAR files
- Command palette β Ctrl+Shift+P for quick actions
- Global search β Fuzzy search across collections, requests, URLs (Ctrl+K)
- Keyboard shortcuts β Fully customizable, Postman-compatible defaults
- Console/Network logger β Real-time request logging with variable resolution display
- Response streaming β Large responses (>10MB) handled efficiently
- Virtual scrolling β History and console lists rendered with react-window
- Lazy loading β Collection tree loads children on expand
- Web Workers β JSON formatting offloaded for large payloads
- Memory management β Monaco editor instances disposed on tab close
- Local-first β Works 100% offline, sync is opt-in
- Real-time collaboration β WebSocket-based sync with presence indicators
- Conflict resolution β Last-write-wins with offline queue
- Team workspaces β Invite by email, permission model
- Backend β Fastify + PostgreSQL + Redis (self-hostable via Docker)
- CI/CD integration β Run collections from the command line
- Multiple reporters β Console, JSON output
- Data file support β CSV/JSON variable injection
- OpenAPI linting β Validate specs from terminal
| Layer | Technology |
|---|---|
| Desktop Shell | Electron 28 |
| Frontend | React 18, Ant Design 5, Zustand |
| Editor | Monaco Editor |
| Database | SQLite (better-sqlite3, WAL mode) |
| HTTP Engine | Undici |
| Build | Vite 5, vite-plugin-electron |
| Testing | Vitest |
| Installer | electron-builder (NSIS) |
| Backend (optional) | Fastify, PostgreSQL, Redis |
| Containerization | Docker Compose |
- Node.js 20 LTS (via fnm recommended)
- Windows 10/11 (x64)
- npm (bundled with Node.js)
# Clone the repository
git clone https://github.com/postbee/postbee.git
cd postbee
# Install dependencies
npm install
# Start development (uses fnm to ensure Node 20)
.\dev.ps1Or manually:
fnm use 20
npm run dev# Build the Windows installer (.exe)
npm run electron:buildThe installer will be output to the release/ directory.
cd server
npm install
docker-compose up -d # PostgreSQL + Redis
npm run db:migrate
npm run devpostbee/
βββ electron/ # Main process (Electron)
β βββ main.ts # App entry, window management
β βββ preload.ts # Context bridge (IPC)
β βββ db/ # SQLite schema & initialization
β βββ ipc/ # IPC handlers (request, script, file, etc.)
β βββ services/ # Core services (HTTP engine, gRPC, WebSocket, etc.)
βββ src/ # Renderer process (React)
β βββ components/ # UI components by feature
β βββ layouts/ # App shell, sidebar
β βββ stores/ # Zustand state management
β βββ services/ # Data access & sync layer
β βββ types/ # TypeScript type definitions
β βββ utils/ # Utilities (shortcuts, performance)
βββ server/ # Cloud sync backend (Fastify)
β βββ src/
β βββ routes/ # REST API endpoints
β βββ ws/ # WebSocket handlers
β βββ db/ # PostgreSQL pool & migrations
βββ cli/ # CLI runner for CI/CD
βββ tests/ # Unit, integration, E2E tests
βββ dist-electron/ # Compiled Electron output
βββ electron-builder.yml # Installer configuration
βββ vite.config.ts # Vite + Electron plugin config
βββ dev.ps1 # Development startup script
| Command | Description |
|---|---|
npm run dev |
Start Vite dev server (renderer only) |
npm run electron:dev |
Start full Electron app with hot-reload |
npm run electron:build |
Build Windows installer |
npm run build |
TypeScript compile + Vite build + electron-builder |
npm run test |
Run tests in watch mode |
npm run test:run |
Run tests once |
npm run test:coverage |
Run tests with coverage report |
npm run lint |
ESLint check |
npm run typecheck |
TypeScript type checking |
# Run a collection
postbee run collection.json --iterations 5 --delay 200
# Run with environment variables
postbee run collection.json --environment staging.json
# Lint an OpenAPI spec
postbee lint openapi.yaml
# Export collection to OpenAPI format
postbee export collection.json --format openapi| Shortcut | Action |
|---|---|
Ctrl+Enter / F5 |
Send request |
Ctrl+N / Ctrl+T |
New request tab |
Ctrl+W |
Close tab |
Ctrl+S |
Save request |
Ctrl+E |
Switch environment |
Ctrl+K |
Global search |
Ctrl+Shift+P |
Command palette |
Ctrl+L |
Focus URL bar |
Ctrl+/ |
Toggle console |
Ctrl+, |
Open settings |
Ctrl+Tab |
Next tab |
Esc |
Cancel request / close modal |
PostBee stores all data locally in SQLite. Configuration includes:
- Theme β Light, Dark, or System
- Request defaults β Redirects, SSL verification, timeout, max response size
- Editor β Font family, tab size, word wrap, minimap
- Proxy β HTTP/HTTPS/SOCKS5, per-request override, no-proxy list
- Certificates β CA certs, client certs with domain matching
- Shortcuts β Fully customizable key bindings
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License. See LICENSE for details.
- Electron β Cross-platform desktop apps
- React β UI framework
- Ant Design β Component library
- Monaco Editor β Code editing
- Undici β HTTP/1.1 & HTTP/2 client
- React Flow β Visual workflow canvas
- Zustand β Lightweight state management
- better-sqlite3 β Synchronous SQLite
- Fastify β Backend framework