Skip to content

bruno

API Development

Open‑source API client that stores collections as plain‑text files for Git‑based collaboration and works offline on Mac, Windows, and Linux

JavaScript Latest v3.4.2 · 8d ago Security brief →

Features

  • Runs natively across macOS, Windows, and Linux
  • Stores API collections as plain‑text files for version control via Git or any VCS
  • Completely offline – no cloud sync, preserving data privacy

Recent releases

View all 34 releases →
No immediate action
v3.4.2 Bug fix

ui tab & api multipart fixes

No immediate action
v3.4.1 Bugfix

Event sync fix

No immediate action
v3.4.0 New feature

UI snapshots, PropertyList API, Git integration

v3.3.0 New feature
Notable features
  • Support PAC file upload for proxy configuration
  • Add `OAuth 1.0` authentication support
Full changelog

Features

  • feat: Support PAC file upload by @dbrglc and @Pragadesh-45 in #7651
  • feat: replace send button with Send/Cancel buttons on request url by @gopu-bruno in #7675
  • feat: add gRPC proxy support by @lohit-bruno in #7575
  • feat: basic annotation syntax support for lang by @sid-bruno in #7609
  • feat: keybindings customisation by @shubh-bruno in #7603
  • feat(cookies): add direct cookie access methods and update translations by @sanish-bruno in #7073
  • feat: revamp Runner UI with Timings and Filters sections by @gopu-bruno in #7505
  • feat: add OAuth 1.0 authentication support by @lohit-bruno in #7482
  • feat: graphql query builder by @pooja-bruno in #7468
  • feat: persist window frames and widths by @shubh-bruno in #7409
  • feat: support for pkg installer by @shubh-bruno in #7561
  • feat: enhance ScriptError with source context and remove auto-commenting of untranslated pm commands by @sanish-bruno in #7449
  • feat(request-pane): restore body tab scroll position on tab switch by @Nizam-Chaudhary in #7250
  • feat: add proxy and SSL certificate support for AWS, Azure, and Vault Cloud secret managers by @lohit-bruno
  • feat: include git collection URL in generated documentation by @lohit-bruno
  • feat: improve telemetry and track trial users by @naman-bruno
  • feat: Github search and import for collections by @Pragadesh44-Bruno
  • feat: add support for embedded workspace fetch in bruno by @bijin-bruno
  • feat: Surface Stage, Commit, Push in Git UI for free users with upgrade modal by @gopu-bruno
  • feat: refine license activation error messages and SSL detection by @gopu-bruno
  • feat: show Initialize Git control in collection header by @gopu-bruno
  • feat: surface collection runner options and gate parameter component by @gopu-bruno
  • feat: bru visualize with handlebars support by @sanish-bruno
  • feat: .pkg installer for macos (nightly) builder by @shubh-bruno
  • feat: include posthogDistinctId in trial license verification by @naman-bruno
  • feat: introduce OpenAPI Sync beta feedback feature by @abhishek-bruno

Fixes

  • fix: fix scroll in querybar component by @naman-bruno in #7700
  • fix: timeline url race condition by @pooja-bruno in #7154
  • fix: resolve process.env variables in global environment level by @abhishek-bruno in #7600
  • fix: add uuid v7 support in pre-request scripts by @chirag-bruno in #7377
  • fix: validate environment variables in unsaved changes dialog by @chirag-bruno in #7403
  • fix: allow __Host- prefixed cookies to be stored via script API by @abhishek-bruno in #7549
  • fix: clear inherited DNS lookup for non-localhost URLs in redirect handling by @chirag-bruno in #7426
  • fix: graphql doc close button by @pooja-bruno in #7667
  • fix: sample collection creation race condition by @bijin-bruno in #7665
  • fix: close previous SSE connection before sending new request by @chirag-bruno in #7474
  • fix: support response query filtering in safe mode by @abhishek-bruno in #7441
  • fix: isJson assertion should accept arrays as valid JSON by @abhishek-bruno in #7620
  • fix: handle copy/paste item for requests & js file by @shubh-bruno in #7656
  • fix: add size and duration fields to CLI bru.runRequest() response by @chirag-bruno in #7429
  • fix: allow file selection in multipart form without entering a key first by @pooja-bruno in #7640
  • fix: prevent autoscroll cursor when middle-clicking to close tabs by @abhishek-bruno in #7443
  • fix: include examples when writing collection items in CLI OpenAPI import by @abhishek-bruno in #7613
  • fix: clear CodeMirror selection highlight on blur in inline editors by @abhishek-bruno in #7619
  • fix: forward cookies from 4XX/5XX responses in collection runner and CLI by @abhishek-bruno in #7498
  • fix(cli): handle non-array tags from bru parser to prevent crash by @abhishek-bruno in #7631
  • fix: handle non-array tags from bru parser to prevent crash by @abhishek-bruno in #7616
  • fix: cURL paste not updating request tab editors visually by @chirag-bruno in #7610
  • fix: autosave playwright test by @pooja-bruno in #7641
  • fix: prevent rerun flicker and fix runner configuration list order by @gopu-bruno in #7639
  • fix: refine dotenv serialization for special characters handling by @chirag-bruno in #7592
  • fix: 'axios' module not found locally by @sid-bruno in #7638
  • fix: folder docs edit button style by @pooja-bruno in #7630
  • fix: multipart form button alignment by @pooja-bruno in #7629
  • fix(dependencies): update fast-xml-parser to 5.5.7 and simple-git to … by @sid-bruno in #7602
  • fix: status & statusText swap by @shubh-bruno in #7589
  • fix: interpolate env variables in multipart-form file attachment paths by @abhishek-bruno in #7595
  • fix: coerce numeric header values to string during Postman collection import by @abhishek-bruno in #7564
  • fix: prevent Enter key from submitting form during autocomplete selection by @iyush05 in #7221
  • fix: prevent colons in OData datetime values from being parsed as path parameters by @abhishek-bruno in #7388
  • fix: preserve global environment color during script execution by @chirag-bruno in #7427
  • fix: resolve theme, overflow, and z-index bugs in Remove Collection modal by @chirag-bruno in #7590
  • fix: make documentation, folder docs and collection docs edit button … by @SahilShameerDev in #7151
  • fix: unmatched brackets invisible on dark themes by @abhishek-bruno in #7596
  • fix: multipart form upload icon visibility by @pooja-bruno in #7571
  • fix: prompt variable in URL path incorrectly parsed as query parameter by @pooja-bruno in #7216
  • fix: add the meta block to the object returned by transformFolderRoot… by @fantpmas in #7582
  • fix: cross-collection drag and drop tab and format issues by @chirag-bruno in #7584
  • fix: preserve folder/request ordering in Postman export by @abhishek-bruno in #7581
  • fix(theme): convert theme bg to hex for Electron backgroundColor by @abhishek-bruno in #7569
  • fix(import): resolve EEXIST error when importing OpenAPI collections with paths folder arrangement by @abhishek-bruno in #7499
  • fix: overlapping help text issue in Environment Variables by @statxc in #7225
  • fix: html report collapse for repeated requests by @pooja-bruno in #7153
  • fix: global search filter by active workspace by @pooja-bruno in #7156
  • fix: prevent white flash on startup with dark theme by @abhishek-bruno in #7454
  • fix: quote values containing hash (#) in .env file serialization by @chirag-bruno in #7380
  • fix: handle nested parentheses in URL link detection by @chirag-bruno in #7406
  • fix: convert non-string variable values to strings during postman import by @pooja-bruno in #7476
  • fix: add hasCookie hint to autocomplete suggestions for cookie management by @sanish-bruno in #7516
  • fix: enhance proxy configuration to support PAC mode by @Pragadesh44-Bruno
  • fix: detect Electron crashes on app close in e2e tests by @chirag-bruno
  • fix: cleanup git watchers on app quit by @bijin-bruno
  • fix: OAuth1 tests on windows by @lohit-bruno
  • fix: load AWS profiles when editing an existing secrets provider by @pooja-bruno
  • fix: update export icon in ShareCollection by @naman-bruno
  • fix: Git UI showing "Initialize Git" on detached HEAD by @prateek-bruno

Others

  • perf: optimize DNS resolution to reduce request latency by @chirag-bruno in #7664
  • Add support for importing Swagger 2.0 specifications into Bruno collections by @gopu-bruno in #7622
  • refactor: update Bru constructor to accept a single options obj for improved readability by @sanish-bruno in #7562
  • chore: add in more react standards by @sid-bruno in #7577
  • remove activeEnvironmentUid and migration by @naman-bruno in #7545
  • Replace SpaceX external API with local graphql-yoga mock server by @sid-bruno in #7471
  • Revert "workspace renaming with path update" by @naman-bruno in #7455
  • Feature/more visibility close icon in multipart form data on collumn value by @Bobonimo111 in #7341
  • workspace renaming with path update by @naman-bruno in #7437
  • refactor: simplify GitHubDropdownTab and SearchResults components by @Pragadesh44-Bruno
  • refactor: update toggle switch design by @naman-bruno
  • chore: wait on shell before making license calls by @sid-bruno
  • chore: sync shrinkwrap npm by @sid-bruno
  • rm: expand collapse in collection settings by @pooja-bruno
  • added playwright tests for fetch in bruno workspace by @sanish-bruno

New Contributors

  • @Nizam-Chaudhary made their first contribution in https://github.com/usebruno/bruno/pull/7250
  • @Bobonimo111 made their first contribution in https://github.com/usebruno/bruno/pull/7341
  • @bohat-y made their first contribution in https://github.com/usebruno/bruno/pull/7481
  • @statxc made their first contribution in https://github.com/usebruno/bruno/pull/7225
  • @iyush05 made their first contribution in https://github.com/usebruno/bruno/pull/7221

Full Changelog: https://github.com/usebruno/bruno/compare/v3.2.2...v3.3.0

v3.2.2 Security relevant
Security fixes
  • fix(security): sanitise HTML before being rendered in documentation blocks
Full changelog

Changelog

Fixes

  • fix: app crashes when closing the window by @chirag-bruno in #7637
  • fix: preserve user-defined boundary in multipart/mixed Content-Type header by @chirag-bruno in #7531
  • fix: preserve query params without values by not appending = sign by @pooja-bruno in #7567
  • fix: ensure string values within auth, add string header processing during postman collection imports by @sanish-bruno in #7646
  • fix: recreate HTTP/HTTPS agents on redirect to prevent stale agent reuse by @lohit-bruno in #7615
  • fix: re-apply secret masking after editor value changes by @abhishek-bruno in #7585
  • fix(security): sanitise HTML before being rendered in documentation blocks by @sid-bruno in #7598 - Credits to @andrejtomci and other anonymous contributors for bringing it up
  • fix: update system proxy fetching to use finally by @sid-bruno in #7652
  • fix: status & statusText swap by @shubh-bruno in #7589
  • fix: convert non-string variable values to strings during postman import by @pooja-bruno in #7476
  • fix: add conversion for non-string values within headers, params, etc during postman collection imports by @sanish-bruno in #7644

Others

  • security: fix all critical vulnerable dependency reports by @sid-bruno in #7645
  • chore: add a promise based wait group for the shell variables by @sid-bruno in #7647

Full Changelog: https://github.com/usebruno/bruno/compare/v3.2.0...v3.2.2

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
44,650
Forks
2,537
Languages
JavaScript TypeScript Bru
Downloads/week
30 ↑493%
NPM Maintainers
1
Contributors
453

Install & Platforms

Install via
brew chocolatey scoop winget snap flatpak apt binary
Platforms
macos windows linux

Community & Support

Alternative to

Postman

Beta — feedback welcome: [email protected]