Bruno

usebruno.com
Bruno

Open-source, local-first API client that stores collections as plain text files and works seamlessly with Git. A privacy-focused alternative to cloud-based API tools.

Open Source

Bruno Source Code

Author

usebruno

Description

Opensource IDE For Exploring and Testing API's (lightweight alternative to Postman/Insomnia)

#api-client#api-testing#automation#developer-tools#git#graphql-client#http-client#javascript#openapi#openapi3#opensource#rest-api#testing#testing-tools

Homepage

https://www.usebruno.com/

License

MIT

Created

27 Sept 22

Last Updated

12 Jul 26

Latest version

v3.5.1

Primary Language

JavaScript

Size

56,125 KB

Stars

45,547

Forks

2,671

Watchers

45,547

Language Usage

Language Usage

Star History

Star History

Top Contributors

Recent Commits

  • Pooja (10 Jul 26)

    fix(test): folder no auth test description (#8560) * fix(test): folder no auth test description * fix

  • Chirag Chandrashekhar (10 Jul 26)

    fix(mount): prevent crash when a malformed file recovers to a valid request (#8558) A file that fails to parse is loaded as a partial item with a valid type (e.g. http-request) but request === undefined. When the file is later corrected on disk, collectionChangeFileEvent updated the type but left request undefined, so RequestMethod crashed reading item.request.method. Guard the update path on item.request: partial items now flow through a dedicated branch that assigns the parsed request once it is available, so an item is never left with a valid type but an undefined request. Co-authored-by: Chirag Chandrashekhar <[email protected]>

  • ravindra-bruno (10 Jul 26)

    Used shared Button for Stop action to keep chat and generation styling consistent (#8566)

  • sachin-bruno (10 Jul 26)

    Version edit modal minor UI fixes (#8549) Co-authored-by: bruno-sachin <[email protected]>

  • ravindra-bruno (10 Jul 26)

    fix(collection-header): Added Horizontal Scroll On CollectionHeader to avoid overlapping and squeezing of contents (#8511) * fix(collection-header): resizable AI panel width and horizontally scrollable header actions * Reverted the AIChatSidebar changes

  • ravindra-bruno (10 Jul 26)

    Added the fix for bottom spacing and also AiAssits can have default 4… (#8546) * Added the fix for bottom spacing and also AiAssits can have default 4 lines earlier it was 3 * stretched AI preferences wrapper to full panel height so inner tab panel scrolls --------- Co-authored-by: Utkarsh <[email protected]>

  • ravindra-bruno (10 Jul 26)

    fix(migration): migrate collection to yml in-place to preserve open tabs and uids (#8553) * fix(migration): migrated collection to yml in-place to preserve open tabs and uids * Added the unit test and e2e for nesting folders * fix(migration): surface watcher reattach failure and sync draft config on yml migration

  • Chirag Chandrashekhar (09 Jul 26)

    fix(mount): show requests that failed to load in the collection overview (#8545) * fix(mount): show requests that failed to load in the collection overview Partial/errored requests were being dropped or mis-rendered: - collection-watcher (v1): the synchronous add path and the change path only logged parse errors and never emitted the item, so failed requests never reached the renderer. Both now send a partial item, matching the async worker path. - mount v2: reconcile dropped `raw` for errored items; it is now forwarded so the item's size can be derived, and size is set for every item. - RequestsNotLoaded: the relative pathname is computed separator-agnostically so it renders on Windows, and errored items are included. * fix(mount): render v2 requests that failed to parse in the sidebar An errored request had no parsed `request`, so tree-builder set `request: undefined`. The main->renderer payload is JSON round-tripped, which drops undefined keys, so the item reached the renderer without a `request` property and `isItemARequest` (which requires it) excluded it from the sidebar. Give errored items an empty `request` object so they survive serialization and render. Also render the "not loaded" table from the same filtered list used for the empty-state check, so errored items are listed consistently. * fix(mount): guard against NaN size and unstable keys for unloaded requests * fix(mount): recover unloaded requests on valid re-parse without crashing the reducer * feat(mount): moved the assignments in change reducer --------- Co-authored-by: Chirag Chandrashekhar <[email protected]>

  • Sid (09 Jul 26)

    feat(description): file binary description implementation (#8434) * Add description support to file body entries Covers the UI table, FileEntry schema, .bru and .yml file persistence, OpenCollection converters, and end-to-end tests. * chore: update @opencollection/types to version 0.10.0 and adjust related code * fix: ensure placeholder is displayed correctly in description editor * fix: improve column resizing logic in EnvironmentVariablesTable * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <[email protected]> * fix: remove unused import of FileEntry in body.ts * feat: enhance file handling and selection logic in various components * test: refactor file description tests for improved readability and structure * refactor: streamline test setup for binary file selection * test: improve comments for clarity in file body description tests * refactor: simplify selection update logic in collections slice --------- Co-authored-by: Copilot Autofix powered by AI <[email protected]>

  • Pooja (09 Jul 26)

    test(auth): fix modified-indicator inherit spec test (#8550) * test(auth): fix modified-indicator inherit spec test * fix(locators): updated locators for inherit

  • sachin-thakur-bruno (09 Jul 26)

    fix(request-panel)/websocket and grpc tooltip overflow fixed in request panel (#8544) * fix(request-panel)/websocket and grpx tooltip overflow fixed in request panel * added test ids and updated the locators for request panel icons

  • Pragadesh-45 (09 Jul 26)

    fix: handle missing location header in redirect error response (#7725)

  • shubh-bruno (09 Jul 26)

    fix(file-mode): crash issue while searching in file mode (#8532) * fix(file-mode): crash issue while searching in file mode * fix: moved test utils & updated locators * fix: resolved comments * fix: resolved comments * fix: resolve comments & update locators --------- Co-authored-by: shubh-bruno <[email protected]>

  • Abhishek Patil (09 Jul 26)

    fix(oauth2): prevent code injection in OAuth2 callback handling (#8405)

  • Pooja (08 Jul 26)

    refactor(environments): use tabState.environment.tab for env tabs (#8528) * refactor(environments): use tabState.environment.tab for env tabs * add: playwright test * fix * rm: only * rm: tabs container style * add: style

  • naman-bruno (08 Jul 26)

    feat(ai): AI model handling with reasoning support (#8539)

  • Bijin A B (08 Jul 26)

    Merge pull request #8535 from sid-bruno/fix/system-proxy-refresh fix: system proxy refresh

  • Chirag Chandrashekhar (08 Jul 26)

    fix(mount): persist raw file content in file-index for file mode (#8531)

  • naman-bruno (08 Jul 26)

    feat(app): introduce Enable App setting (#8521)

  • Pooja (08 Jul 26)

    fix(ws): preserve message editor scroll when selecting another message (#8536)

  • ravindra-bruno (08 Jul 26)

    fix(ai-assist): prevent double border and gap shift on AI generate button hover (#8517)

  • Sid (08 Jul 26)

    feat(system-proxy): implement refreshShellEnvProxyVars to sync proxy vars from shell config

  • abhishekp-bruno (24 Jun 26)

    FIXED proxy not refreshing from terminal RESOLVED pr conversations ADD test cases and os specific test casess REVERTE comment removed for windows refetch refactor: remove redundant afterEach cleanup in shell-env-proxy-refresh tests RENAME the test file and add more test for wider coverage among the test cases test: add integration tests for refreshShellEnvProxyVars delete: remove outdated system proxy integration test file fix: enhance proxy variable restoration on shell-env subprocess failure fix: implement timeout for shellEnv to prevent hanging on misconfigured shells feat: add refreshShellEnvProxyVars function to shell-env-state.ts and update shell environment initialization logic refactor: simplify shell environment refresh and update system proxy integration refactor: implement withTimeout utility for shell environment operations to prevent indefinite hangs

  • naman-bruno (08 Jul 26)

    style(app): app mode toggle button styling (#8523)

  • naman-bruno (08 Jul 26)

    feat(ai): implement AI chat sidebar popout and sidebar resizing (#8509)

  • Chirag Chandrashekhar (08 Jul 26)

    fix(mount): survive large and corrupt files when mounting collections (#8514)

  • sachin-thakur-bruno (08 Jul 26)

    fix(request-panel)/fixed overflow size column issue on first load (#8525) * fix(request-panel)/fixed overflow size column issue on first load * added tests * refactor the total width calculation based on available space

  • Sid (07 Jul 26)

    fix(ToggleSwitch): correct onChange handler for response pane (#8520) * fix(ToggleSwitch): correct onChange handler to prevent unintended toggling * fix(ToggleSwitch): update onChange handler to correctly trigger toggle action * fix(tests): enhance clipboard handling and improve response pane interactions * fix(ToggleSwitch): change event handler from onChange to onInput for better toggle interaction fix(tests): update response pane click action to ensure proper interaction with dropdown * fix(tests): remove clipboard initialization from test setup

  • adwait-bruno (07 Jul 26)

    fix(openapi):validate API spec imports (#8322) * fix(openapi):validate API spec imports and resolve preview to error state instead of hanging * fix(openapi):allows opening of malformed files with correct extension * fix(openapi):reject non-OpenAPI content in spec preview before timeout * test(openapi): add unit + e2e coverage for spec import validation * refactor(openapi):centralise spec error messages and fix dialog restore * fix:removed nested try catch * test:added common locators * refactor:removed repeated lines * refactor:removed redundant file reads --------- Co-authored-by: Adwait Aayush <[email protected]>

  • Sid (07 Jul 26)

    feat: variable descriptions (#8269) * feat: add description column to various tables and enhance UI interactions - Introduced a description column in Headers, VarsTable, and other components to allow multi-line descriptions. - Added toggle buttons to show/hide the description column in relevant tables. - Updated EditableTable component to support dynamic row addition with customizable labels. - Enhanced UI for better user experience with consistent button styles and spacing adjustments. * chore: resize fix handles * fix: restrict column check for last index * refactor: remove unwanted style and fix bottom padding of the last child in the table row * tests: improve testability and fix impacted locators * tests: fix locators for value fields * fix: improve newline handling in description prefix * fix: ts changes * chore: remove redundant code and fix description roundtrip * chore: remove redundant check * tests(bru-lang): tests for description and annotation * test: improve locators and tests * tests: descriptions * chore: re-add description setup * fix: re-add description cols * chore: fix the double click reset * fix: account for hidden sidebar in request pane width calculation * refactor: ui/ux fixes for data type toggle * chore: inline common deps into bruno-lang and bruno-schema * chore: tests * chore: fix ux for descriptions * fix: layout for environment vars table * fix: ensure correct row selection for multipart file upload in tests * feat: enhance UID assignment for request headers and variables in collections * chore: simplify * chore: update pkg * chore: abstract the e2e utils * chore: fix exports * tests: fix locators for datatype vars * fix: ux issue with secrets in environment table * tests: update locators for collection headers and vars descriptions * tests: update locators to use data attributes for datatype selectors * chore: update default css width for actions column * chore: remove tooltip for string type warnings * fix: reduce name widths * refactor: update annotation serialization to use single-quote delimiters for descriptions * refactor(tests): simplify description formatting in jsonToEnv tests * feat: add multiline description escaping and unescaping functions with tests * refactor: clean up imports and improve multiline text block handling * refactor: update locators to use new test IDs for environment variable editors * refactor: streamline header input handling and improve environment variable row access * refactor: update e2e-test job to support self-hosted runners * refactor: update E2E test runner configuration to include e2e and macOS environments --------- Co-authored-by: Pragadesh-45 <[email protected]>

Bruno Security

Security Advisories (4)

  • critical Patched CVSS 9.8

    CVE-2026-34841 Axios npm Supply Chain Incident Impacting @usebruno/cli

  • critical Patched

    GHSA-246j-fv2m-6jhx SHA1-Hulud supply-chain compromise (transitive @postman/tunnel-agent) — Upgrade @usebruno/cli to 2.14.4

  • high Patched

    CVE-2025-30354 Safe-Mode ignored in Asserts expressions

  • high Patched

    CVE-2025-30210 XSS On Environment Name

Bruno Website

Website

Bruno - The Git-Native API Client

Bruno is the Git-native API client for REST, GraphQL, gRPC and Websocket. A local and open-source solution to Postman. Fast, developer-first, and no cloud syncing.

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address 100.27.249.156
  • Hostname ec2-100-27-249-156.compute-1.amazonaws.com
  • Location Ashburn, Virginia, United States of America, NA
  • ISP Amazon Technologies Inc.
  • ASN AS14618

Associated Countries

  • US US
  • CA CA
  • JP JP

Safety Score

Website marked as safe

100%

Blacklist Check

www.usebruno.com was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Bruno Reviews

More Developer Tools

About the Data: Bruno

Change History

  • Moved from Developer Utilities › Developer Tools by @lissy93 #639

API

You can access Bruno's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/bruno

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share Bruno

Help your friends compare Developer Tools, and pick privacy-respecting software and services.
Share Bruno and Awesome Privacy with your network!

View Developer Tools (3)