EasyPostman is a desktop application designed to combine Postman-style API debugging with JMeter-style performance testing in one local-first tool. It enables developers, QA engineers, and DevOps teams to streamline their workflow by integrating API development, testing, and load testing into a single platform.
Key Features:
API Debugging: A Postman-like interface for sending HTTP/HTTPS requests, inspecting responses, and managing collections, environments, and variables.
Performance Testing: JMeter-style thread groups, timers, extractors, assertions, and real-time metrics for load testing.
Local-first Storage: Data is stored locally by default, with optional Git workspace integration for team collaboration.
Cross-platform Support: Available on Windows, macOS, Linux, and via Winget for easy installation and deployment.
Target Audience and Benefits:
Ideal for developers, QA engineers, and DevOps teams looking to optimize their API development and testing workflows. EasyPostman simplifies the process of debugging APIs, running performance tests, and collaborating with Git workspaces, all while maintaining data privacy through local-first storage.
Install EasyPostman via Winget for seamless deployment on Windows systems.
EasyPostman combines a Postman-style API debugging workspace with JMeter-style performance testing in one local-first desktop app. It is built with Java 17, Swing, and FlatLaf, stores data locally by default, and uses Git workspaces when teams need sync, review, and version control without a hosted cloud service.
🎯 Postman-style Debugging
⚡ JMeter-style Load Testing
🔒 Local-first Desktop
Collections, environments, auth, scripts, imports, history, and response inspection
Your API and test data stay on disk unless you choose a Git workspace
🖼️ Visual Tour
EasyPostman is a GUI-first tool, and the project value is easier to judge when both halves are visible: Postman-style API work and JMeter-style load testing. These screenshots are from the current desktop app.
Create or import a collection, choose an environment, send a request, inspect formatted response bodies, headers, cookies, timing, and the network event log.
Chain requests with scripts
Use pre-request scripts and test scripts to read variables, create signatures, extract response data, assert results, and pass values into the next request.
Share API work through Git
Keep workspace data local, then use Git workspace operations to commit, pull, push, and review collection/environment changes with your team.
Run EasyPostman workspaces in CI
Download the cross-platform JAR or build it from source, then run native workspaces with their collections, environments, scripts, assertions, and uploads.
Run load tests like JMeter
Build a performance plan visually, export plan.json, run it headlessly, or distribute it with master/worker mode while preserving global user and CSV sharding.
✨ Features
🏢 Workspace & Collaboration
Local workspaces - Keep personal API projects fully on disk
Git workspaces - Commit, pull, push, and share collections or environments through your own Git repository
Workspace isolation - Each workspace keeps its own collections, environments, settings, and history
Portable mode - Run with data beside the app when the portable marker or system property is enabled
🔌 Postman-style API Testing
HTTP/HTTPS - REST requests with headers, params, cookies, auth, redirects, and body editors
SSE & WebSocket - Stream and realtime protocol workflows
Multiple body types - Form Data, x-www-form-urlencoded, JSON, XML, text, and binary payloads
Variables - Environment, global, request, and iteration data support for repeatable runs
Import/Export - Postman v2.1 and cURL support, with HAR and OpenAPI/Swagger paths under active development
Headless workspace runs - Use separate collection and functional commands to run native EasyPostman workspaces from the cross-platform JAR with CI exit codes
⚡ JMeter-style Performance Testing
Scenario design in the GUI - Thread groups, timers, extractors, assertions, and result views
Thread group modes - Fixed, ramp-up, stair-step, and spike load profiles
Realtime monitoring - TPS/QPS, response time, error rate, trend charts, and result trees
Headless & distributed runs - Export plan.json from the GUI, then run it with CLI or master/worker mode
Global user sharding - GUI virtual users represent total concurrency; workers split continuous ranges and CSV rows follow the same ranges to avoid duplicates
🧩 Scripts, Assertions & Plugins
Pre-request and test scripts - Postman-style pm APIs, assertions, variables, and request chaining
Bundled JS helpers - crypto-js, lodash, and moment
Script extension points - Plugins can register script APIs, completions, snippets, toolbox panels, and services
Official plugins - Plugin manager, client certificates, capture proxy, Redis, Kafka, and Java decompiler
Network event log - Detailed request/response and stream diagnostics
🎨 User Experience
Light & Dark Mode - Comfortable viewing in any lighting
> WinGet Community Repository updates may become available shortly after the corresponding GitHub Release.
Platform Downloads
Platform
Package
Notes
🍎 macOS (Apple Silicon)
EasyPostman-{version}-macos-arm64.dmg
M1/M2/M3/M4
🍏 macOS (Intel)
EasyPostman-{version}-macos-x86_64.dmg
Intel-based Mac
🪟 Windows (WinGet)
Laker.EasyPostman
Install and upgrade from the WinGet Community Repository
🪟 Windows (Installer)
EasyPostman-{version}-windows-x64.exe
Auto-update support
🪟 Windows (Portable)
EasyPostman-{version}-windows-x64-portable.zip
No install needed
🐧 Linux AMD64 (Generic)
EasyPostman-{version}-linux-amd64.deb
For common x86_64 / amd64 Linux systems
🐧 Linux ARM64 (Generic)
EasyPostman-{version}-linux-arm64.deb
For common aarch64 / arm64 Linux systems
🐧 Linux ARM64 (Compatibility)
EasyPostman-{version}-linux-arm64-compat.deb
Same app as the generic ARM64 package, repacked for older Debian / Ubuntu dpkg environments
🐧 RHEL / Rocky / CentOS / Fedora (x64)
EasyPostman-{version}-1.x86_64.rpm
Available on GitHub Releases only
🐧 RHEL / Rocky / CentOS / Fedora (ARM64)
EasyPostman-{version}-1.aarch64.rpm
Available on GitHub Releases only
☕ Cross-platform JAR
easy-postman-{version}.jar
Requires Java 17+
> 🐧 About the ARM64 Compatibility DEB
>
> The compatibility package contains the same EasyPostman application and runtime as linux-arm64.deb. It only changes the DEB archive format to use xz-compressed members, which helps older dpkg versions that cannot install packages containing newer compression formats such as control.tar.zst or data.tar.zst. Prefer linux-arm64.deb first; use linux-arm64-compat.deb only when the generic package fails during installation because of DEB archive compression compatibility.
> ⚠️ First Run Notice
>
> - Windows: SmartScreen warning → "More info" → "Run anyway"
> - macOS: "Cannot be opened" → Right-click → "Open" → "Open"
>
> The app is 100% open-source. Warnings appear because we don't purchase code signing certificates.
> 🌏 Gitee Mirror only provides macOS (ARM) DMG and Windows packages. Linux DEB/RPM packages are published on GitHub Releases only.
Gitee assets may appear later than GitHub assets. If the latest Gitee release does not yet contain the standalone JAR, use GitHub.
Then verify the commands:
java -version # Java 17+ is required
java -jar easy-postman-6.x.x.jar collection run --help
java -jar easy-postman-6.x.x.jar functional run --help
If either command isn't shown, download a newer release or build the current source.
B. Build from source:
git clone https://github.com/lakernote/easy-postman.git
cd easy-postman
mvn -pl easy-postman-app -am -DskipTests clean package
java -jar easy-postman-app/target/easy-postman-*.jar \
collection run --help
java -jar easy-postman-app/target/easy-postman-*.jar \
functional run --help
Step 2: Run a workspace
collection run selects requests by collection/folder. functional run selects requests from functional_config.json. Both accept a workspace directory directly, so CI does not need desktop registration or GUI state.
From a checked-out Git workspace root:
java -jar easy-postman.jar collection run .
java -jar easy-postman.jar functional run .
You can also pass an absolute workspace path and select a collection and environment:
The CLI automatically reads collections.json and environments.json from the workspace and the app-level global_variables.json. Use -c and -e to select collection and environment names, and -d for CSV/JSON iteration data. Relative iteration-data and upload paths resolve from the workspace directory unless --working-dir is supplied.
Use functional run to reproduce the desktop Functional panel's selected requests and embedded CSV iterations; add -d to override those rows with CI-specific CSV/JSON data. A normal workspace can be copied to the runner as an artifact, while a Git workspace can run directly from its checked-out repository directory.
Exit code 0 means success, 1 means a request, script, or assertion failed, and 2 means invalid arguments or workspace data. --out writes a JSON report containing the resolved workspace, collections, environment, and request details.
mvn -q -pl easy-postman-app -am -Dtest= -Dsurefire.failIfNoSpecifiedTests=false -Djava.awt.headless=true test
The host JAR is written to easy-postman-app/target/easy-postman-{version}.jar. Native packaging scripts live under build/ and produce platform installers with jpackage.
🤝 Contributing
We welcome all forms of contribution — bug reports, feature requests, code, or docs!
We value developer privacy. Local storage ensures your API data is never leaked to third parties. Use Git workspace for team collaboration while maintaining full control over your data.
Q: How to import Postman data?
In the Collections view, click Import and select a Postman v2.1 JSON file. Collections, requests, and environments are converted automatically.
Q: Why does Windows/macOS show security warnings?
Windows SmartScreen: No code signing cert (~$100–400/year). → Click "More info" → "Run anyway". Warnings decrease as download count grows.
macOS Gatekeeper: No Apple Developer cert ($99/year). → Right-click → "Open", or run: sudo xattr -rd com.apple.quarantine /Applications/EasyPostman.app
This project is fully open-source and auditable on GitHub.
💖 Support the Project
If EasyPostman helps you, consider:
⭐ Star this repo — it means a lot!
🍴 Fork & contribute — help make it better
📢 Share with friends — spread the word
💬 WeChat group — add lakernote for direct communication