-
Latest Version
Bruno 4.0.0 LATEST
-
Review by
-
Operating System
Windows 10 / Windows 11
-
User Rating
Click to vote -
Author / Product
-
Filename
bruno_4.0.0_x64_win.exe

Instead of depending on cloud workspaces, forced accounts, or proprietary sync systems, Bruno stores API collections locally as plain-text files that can be versioned with Git.
This makes Bruno for PC especially useful for teams that already manage code through GitHub, GitLab, Bitbucket, or another version control workflow.
REST, GraphQL, gRPC, and WebSocket testing are all supported, making it a practical daily API client for backend development, debugging, documentation, and automated request validation.
Features
- Local-First Storage: Keeps API collections on your computer instead of forcing cloud sync.
- Git-Friendly Collections: Saves requests as plain-text files that work naturally with Git.
- REST API Testing: Create, organize, send, and debug REST requests.
- GraphQL Support: Test queries, mutations, variables, and API responses.
- gRPC Support: Work with modern service-to-service communication workflows.
- WebSocket Support: Test real-time API connections and event-based communication.
- Environment Variables: Manage development, staging, and production values.
- Scripting: Add logic before or after requests for advanced testing workflows.
- Secret Management: Store sensitive values more safely inside your workflow.
- Collection Runner: Run multiple requests for testing and validation.
- Documentation Support: Keep useful API notes close to requests and collections.
- Import Options: Move existing API collections into Bruno more easily.
Bruno has a clean, developer-focused interface that avoids unnecessary clutter.
The layout is simple: collections and requests are placed on the left, request configuration appears in the main workspace, and responses are shown clearly after execution.

The app feels closer to a coding tool than a corporate dashboard.
This is a good thing for technical users, because the workflow is fast and predictable. Request methods, headers, body data, authentication settings, variables, scripts, and response details are easy to access.
Beginners may need a little time to understand the Git-based collection model, but experienced developers will likely appreciate the structure very quickly.
Installation and Setup
- Download Bruno API Client for Windows from FileHorse.
- Run the installer and follow the setup wizard.
- Launch Bruno from the Start Menu or desktop shortcut.
- Create a new collection or open an existing one.
- Choose a local folder where Bruno should store the collection files.
- Add your first API request.
- Configure method, URL, headers, body, and authentication.
- Send the request and inspect the response.
- Optionally connect the collection folder to Git for version control.
- Open the Bruno API Client.
- Click to create a new collection.
- Select a local project folder for the collection.
- Create a new request inside the collection.
- Choose the request method, such as GET, POST, PUT, PATCH, or DELETE.
- Enter the API endpoint URL.
- Add headers, query parameters, body data, or authentication details.
- Click Send to run the request.
- Review the response status, headers, timing, and body.
- Save the request for future testing.
- Add environment variables for reusable values.
- Use scripts or tests when you need deeper validation.
- Commit the collection files to Git if working with a team.
Is the Bruno API Client free?
Yes, it has a free open-source version that is suitable for most individual developers and many small teams.
Does Bruno require an online account?
No. Bruno is designed as a local-first API client, so users can work without mandatory cloud accounts or forced sync.
Can Bruno replace Postman?
For many developers, yes. Bruno is strong for API testing, local collections, Git workflows, and privacy. However, teams that depend on large cloud collaboration ecosystems may still need additional tools.
Is Bruno good for teams?
Yes, especially for teams that already collaborate through Git. Collections can be reviewed, versioned, branched, and merged like normal project files.
Does Bruno support Windows?
Yes, Bruno is available for Windows PC, as well as macOS and Linux.
Alternatives
Postman - Popular API platform with strong collaboration and cloud features.
Insomnia - Clean API client for REST, GraphQL, and developer testing workflows.
HTTPie Desktop - Simple visual API testing tool with an easy request builder.
Pricing
Open Source: Free version for local API testing, collections, scripting, documentation, and core developer workflows.
Pro: Paid plan from $6 per user/month, billed annually, with deeper Git integration, automation, and support features.
Ultimate: Advanced paid option for teams needing stronger support, account management, enterprise controls, and expanded workflow features.
Free Trial: A 14-day trial is available for premium features.
System Requirements
- Operating System: Windows 10 or Windows 11.
- Processor: Modern Intel, AMD, or ARM-compatible processor.
- Memory: 4 GB RAM minimum, 8 GB recommended.
- Storage: At least 300 MB of free disk space.
- Internet: Required for downloads, updates, and online API testing, but local work can be performed offline.
- Developer Tools: Git is recommended for team collaboration and version control.
- Free and open-source core version.
- Excellent Git-friendly workflow.
- Local-first design improves privacy.
- No mandatory cloud sync.
- Clean and fast user interface.
- Supports REST, GraphQL, gRPC, and WebSocket.
- Great for developers who prefer file-based workflows.
- Smaller ecosystem than older API platforms.
- Git workflow may confuse beginners.
- Advanced team features require paid plans.
- Cloud collaboration is not the main focus.
- Some enterprise workflows may need extra setup.
- Fewer third-party integrations than larger competitors.
Bruno API Client is one of the most practical API testing tools for developers who value speed, privacy, and Git-based collaboration.
Its local-first design makes it especially attractive for technical teams that want full control over API collections.
While it may not replace every enterprise platform, it is an excellent Windows PC choice for modern API workflows.
What's new in this version:
Features:
- feat(app): migrate ctx API to bru.ctx by @gopu-bruno in #8557
- feat(overview): show human-readable size for unloaded requests by @chirag-bruno in #8580
- feat(description): file binary description implementation by @sid-bruno in #8434
- feat(ai): AI model handling with reasoning support by @naman-bruno in #8539
- feat: variable descriptions by @sid-bruno in #8269
- feat(snapshot): implement active workspace tab type tracking by @sid-bruno in #8487
- feat: Added the option for bruno version edit in the collection overview by @sachin-bruno in #8424
- feat(auth): akamai auth integration by @shubh-bruno in #8199
- feat(ai): add security preferences management to AI settings by @naman-bruno in #8453
- feat: Added collection name and minor UI changes to the generate doc modal by @sachin-bruno in #8391
- feat(cli): persist env, global-env, and collection var changes from scripts by @sanish-bruno in #8387
- feat(import): set yml as a default file format across all types of imports by @sharan-bruno in #8363
- feat(electron): add pkg configuration for installation location by @sid-bruno in #8403
- feat(variables): persist scripted variable changes by default and re-enable disabled scripting APIs by @sanish-bruno in #8315
- feat(ai): mode toggle UI and add AI support for folder & collection by @naman-bruno in #8385
- feat(environments): split variables and secrets into separate tabs by @pooja-bruno in #8191
- feat(ai): add AI chat sidebar with code block and diff view components by @naman-bruno in #8358
- feat(ai): OpenAI-compatible endpoints support by @naman-bruno in #8365
- feat(woof): add WOOF easter egg by @sanish-bruno in #8301
- feat(app): introduce app functionality by @naman-bruno in #8338
- feat(network-ui): added resizable columns in network panel by @sachin-thakur-bruno in #8265
- feat: integrate Markdown into NotificationDetail by @naman-bruno in #8335
- feat(ai): implement AI autocomplete by @naman-bruno in #8300
- feat: add cli offline bundle script by @sid-bruno in #8192
- feat: faster collection mount via file cache (Beta) by @chirag-bruno in #8222
- feat(ai-assist): add docs generation with folder and collection context by @utkarsh-bruno and @ravindra-bruno in #8246
- feat: Choose environments to include and show versions in the Generate Documentation modal by @sachin-bruno in #8268
- feat: variable data types support by @lohit-bruno in #8046
- feat: redesign notification modal by @prateek-bruno in #8140
- feat(websocket): show full message name in a tooltip on hover by @pooja-bruno in #8299
- feat(import): hide File Format option and default collections to Open… by @ravindra-bruno in #8247
- feat: implement file mode by @naman-bruno, @shubh-bruno, and @chirag-bruno in #8258
- feat(openapi-sync): preserve user-configured request values on sync by @sundram-bruno in #8204
- feat(app): scroll to and highlight error line on script error by @pooja-bruno in #8183
- feat(dev-tools-rquest-resize): dev tools details panel can be resized horizontally via a drag handle by @sachin-thakur-bruno in #8234
- feat(dev-tools): adds sorting on columns with verticle borders by @sachin-thakur-bruno in #8238
- feat(workspace): move external collections into the workspace by @gopu-bruno in #8196
- feat: integrate AIAssist for script editing by @naman-bruno in #8220
- feat(ws): multiple messages support in websockets by @pooja-bruno in #8115
- feat(ai): implement organization policy checks for AI features by @naman-bruno
- feat: add trial upgrade dynamic url flow by @prateek-bruno
- feat(telemetry): add per-generation documentation telemetry (BRU-3673) by @arpit-bruno
- feat: secrets managers ui revamp by @lohit-bruno
- feat(telemetry): track v2 collection mount (file cache) usage by @chirag-bruno
- feat(notifications): enhance notification handling by @naman-bruno
- feat(runner): revamp runner results table by @chirag-bruno
- feat(mount): support js files in collection parsing and tree building by @chirag-bruno
- feat(electron): add pkg configuration for installation location by @sid-bruno
Fixes:
- fix(app): point generated docs to api-docs CDN path by @sundram-bruno in #8633
- fix(variable-tooltip): mask secret variables of non-string dataType by @pooja-bruno in #8606
- fix(description): bulk edit round trip looses description information by @sid-bruno in #8595
- fix: remove broken markdown in README_pt_br by @BraianS in #8375
- fix(ui): Added Horizontal Scroll On CollectionHeader to avoid overlapping and squeezing of contents by @ravindra-bruno in #8511
- fix(ui): websocket and grpc tooltip overflow fixed in request panel by @sachin-thakur-bruno in #8544
- fix: handle missing location header in redirect error response by @Pragadesh-45 in #7725
- fix(oauth2): prevent code injection in OAuth2 callback handling by @abhishekp-bruno and @kOaDT in #8405
- fix: system proxy refresh by @abhishekp-bruno and @sid-bruno in #8535
- fix(ui): fixed overflow size column issue on first load by @sachin-thakur-bruno in #8525
- fix(ToggleSwitch): correct onChange handler for response pane by @sid-bruno in #8520
- fix(openapi): validate API spec imports by @adwait-bruno in #8322
- fix(app): scope env variable/secret search per tab by @pooja-bruno in #8491
- fix(request-panel): changed request panel static width to percentage width of screen width by @sachin-thakur-bruno in #8499
- fix(snapshot): active workspace restoration from snapshot by @sid-bruno in #8392
- fix(variables): correct scripted-variable persistence races and cross-request propagation by @sanish-bruno in #8406
- fix: Draft icon indicator on Workspace Environment tab by @adwait-bruno in #8342
- fix(app): move env save-all icon to header actions by @pooja-bruno in #8449
- fix(import): linting issue in Import fails for gRPC request without URL in exported collection by @sharan-bruno in #8462
- fix: serialize object variable values before copying to clipboard by @adwait-bruno in #8362
- fix(import): Import fails for gRPC request without URL in exported collection by @sharan-bruno in #8367
- fix(lang): filter multipart multi file by @sid-bruno in #8444
- fix(workspace-watcher): use workspace-environment IPC channels so env file changes hot-reload by @sanish-bruno in #8370
- fix(openapi): copy cURL icon now respects the theme variables by @adwait-bruno in #8314
- fix: prevent redundant workspace switch toast by @DeviSriSaiCharan in #8229
- fix(transient): scope bruno- lookup to transient base, not full path by @chirag-bruno in #8273
- fix: correctly parse insomnia exported yaml by @prateek-bruno in #7966
- fix(import): Postman import: OAuth2 tokenPlacement not set correctly, Header Prefix field hidden and value lost by @rajashreehj-bruno in #8197
- fix(request-parser): preserve literal colon path segments without path param value by @utkarsh-bruno in #8157
- fix(ui): open response pane at a minimum height on expand by @gopu-bruno in #8236
- fix: Preserve folder order from seq attribute by @sachin-bruno in #8213
- fix(sse): sse response body is empty in res.getBody() for app and cli by @sachin-thakur-bruno in #8212
- fix: open panes at default size on expand from collapsed state by @gopu-bruno in #8133
- fix(ui): prevent empty header row from persisting state and crashing CLI by @sharan-bruno in #8167
- fix(cli): use path name for classname in JUnit reports instead of request URL by @sharan-bruno in #8169
- fix(grpc): gRPC request loses all messages except the first on save for yaml collection by @sharan-bruno in #8203
- fix(generate-code): generate code URL issues by @shubh-bruno in #8136
- fix(ui): correct “modified” indicator state across collection, folder, request, and presets/auth tabs (#3386) by @sharan-bruno in #8027
- fix: show correct New Request shortcut in response placeholder by @gengjiawen in #8116
- fix(postman-import): OAuth2 Implicit Grant Type Silently Converted to Client Credentials on Import by @rajashreehj-bruno in #8113
- fix(ui): use primary accent in OpenAPI Sync settings modal by @sundram-bruno in #8161
- fix: Remove Beta badge from openAPI sync by @sachin-bruno in #8250
- fix(ui): Version edit modal minor UI fixes by @sachin-bruno in #8549
- fix(sidebar): remove deleted JS files from the sidebar by @pooja-bruno
- fix(mount): build js items as script nodes instead of request nodes by @chirag-bruno
- fix: with email open upgrade url by @prateek-bruno
- fix: refresh full-git when git-ui is active tab by @prateek-bruno
- fix(environments): keep env row's secret flag in sync with active tab by @shubh-bruno
- fix(watcher): added a value to the present param on collection addWatcher method by @utkarsh-bruno
- fix(mountv2): attach git watcher after collection watcher by @chirag-bruno
- fix(environments): remove draft indicator from variable & secret tabs by @pooja-bruno
- fix: update tab state structure for environment tabs and enhance tests by @sid-bruno
- fix: throttle git calls to an acceptable amount by @sid-bruno
- fix(cli): swap persistPaths / bailAbortSignal args in runSingleRequest calls by @sanish-bruno
- fix(runner): Remove iteration data from runtime variables by @rajashreehj-bruno
- fix: use portal to prevent z-index issues by @prateek-bruno
- fix: Added file js as well in the doc generation order by @sachin-bruno
- fix(git-provider): cache settings page for revisits by @gopu-bruno
- fix(ui): OpenAPI sync "Syncs Used" counter not updating after sync by @sundram-bruno
- fix: style responsiveness by @Pragadesh44-Bruno
- fix: update lodash version to 4.18.1 across multiple packages by @sid-bruno
Others:
- test(sidebar): move sidebar locators to a dedicated file by @pooja-bruno in #8634
- test(folder): folder no auth test description by @pooja-bruno in #8560
- test: update openFolderRequest function for tests by @shubh-bruno in #8506
- test(e2e): update runner to run on self-hosted instances by @sid-bruno in #8524
- test: flaky bound action tests by @shubh-bruno in #8071
- test: await the websocket visibility assertion so it actually runs by @voidmatcha in #8317
- test: fix flaky tests by @bijin-bruno in #8319
- test: update timeline item locators and improve response status code assertion by @sharan-bruno in #8202
- test: update locators for save button in presets indicator tests by @sharan-bruno in #8201
- docs: update guidelines on 'Readability and Abstractions' section by @gopu-bruno in #8623
- test(tabs): enhance tab migration tests and add restoreTabs functionality by @utkarsh-bruno in #8609
- refactor: separate app items from requests in sidebar & sorting logic by @naman-bruno in #8577
- chore(electron): update notarization team ID and add app requirements by @sid-bruno in #8578
- test(auth): fix modified-indicator inherit spec test by @pooja-bruno in #8550
- refactor(environments): use tabState.environment.tab for env tabs by @pooja-bruno in #8528
- style(app): app mode toggle button styling by @naman-bruno in #8523
- chore: update coding conventions and best practices for this repo by @bijin-bruno in #8482
- CDN docs url change by @sachin-bruno in #8466
- chore: update lodash to version 4.18.1 across all packages by @sid-bruno in #8455
- chore: improve bug report issue template by @rreyn-bruno in #8369
- ci: use env vars instead of hard coded paths by @sid-bruno in #8389
- test: workspace import and validation testcase by @mohit-bruno in #8349
- chore: change app builder to bruno team by @sid-bruno in #8218
- ci: group the runner to PR by @sid-bruno in #8343
- test(preferences): set default preferences values by @bijin-bruno in #8321
- test: fix test and update default retry in local to 0 by @bijin-bruno in #8316
- test: run playwright e2e fully parallel by @bijin-bruno in #8313
- add: change log tab by @naman-bruno and @utkarsh-bruno in #8289
- test(core): current mount pipeline by @chirag-bruno in #7466
- docs: update README to include Bruno CLI and Docker usage instructions by @abhishek-bruno in #8184
- chore: remove deps array from playwright test by @pooja-bruno in #8181
- test: import buildPreferencesLocators from its source module by @lohit-bruno
- test: update test for externally added remotes by @sid-bruno
- test: make git tests less flaky by @prateek-bruno
- test(e2e): fix git-providers tests on local and CI by @Pragadesh44-Bruno
- test(cli): use bru.runner.iterationData in bail-iter fixtures by @sanish-bruno
- chore: fix typo by @prateek-bruno
- switch file-mode sync e2e tests to shared helpers and retrying assertions by @ravindra-bruno
- Telemetry tracking for AI and app features by @naman-bruno
- import-workspace-limit: unlicensed user is blocked with the by @mohit-bruno
- test(cli): cover persistence for iteration-count, bail, and parallel by @sanish-bruno
- Added file-mode sync e2e tests to use view-mode toggle after upstream UI sync by @ravindra-bruno
- File Format toggle for Bulk collection import by @ravindra-bruno
- test: fix data test it for failing tests by @bijin-bruno
- perf(runner): virtualize iterations table for high iteration counts by @chirag-bruno
OperaOpera 134.0 Build 5954.56 (64-bit)
BlueStacksBlueStacks 10.42.255.1002
PhotoshopAdobe Photoshop CC 2026 27.9.1 (64-bit)
LDPlayerLDPlayer - Android Emulator
GTA 6GTA 6 for PS5
CapCutCapCut Desktop 9.1.0
PC RepairPC Repair Tool 2026
Hero WarsHero Wars - Online Action Game
TradingViewTradingView - Trusted by 100 Million Traders
Halo: CampaignHalo: Campaign Evolved


Comments and User Reviews