Bruno
usebruno.comOpen-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.
- Homepage: usebruno.com
- GitHub: github.com/usebruno/bruno
- Web info: web-check.xyz/check/usebruno.com
Bruno Source Code
Author
Description
Opensource IDE For Exploring and Testing API's (lightweight alternative to Postman/Insomnia)
Homepage
https://www.usebruno.com/License
MIT
Created
27 Sept 22
Last Updated
12 Jul 26
Latest version
Primary Language
JavaScript
Size
56,125 KB
Stars
45,547
Forks
2,671
Watchers
45,547
Language Usage
Star History
Top Contributors
-
@helloanoop (1415)
-
@lohxt1 (344)
-
@pooja-bruno (213)
-
@naman-bruno (193)
-
@lohit-bruno (184)
-
@Pragadesh-45 (159)
-
@sanish-bruno (119)
-
@abhishek-bruno (103)
-
@sid-bruno (92)
-
@bijin-bruno (84)
-
@sanjaikumar-bruno (73)
-
@chirag-bruno (69)
-
@sanjai0py (55)
-
@gopu-bruno (49)
-
@shubh-bruno (46)
-
@Its-treason (39)
-
@ramki-bruno (33)
-
@devendra-bruno (32)
-
@therealrinku (31)
-
@barelyhuman (30)
-
@survivant (28)
-
@pietrygamat (25)
-
@ganesh-bruno (21)
-
@DogukanUrker (19)
-
@anusreesubash (18)
-
@prateek-bruno (17)
-
@maintainer-bruno (15)
-
@dcoomber (14)
-
@jsoref (14)
-
@sharan-bruno (14)
-
@sreelakshmi-bruno (13)
-
@anusree-bruno (12)
-
@n00o (12)
-
@dependabot[bot] (11)
-
@PChaparro (11)
-
@nelup20 (11)
-
@grubersjoe (11)
-
@ajaishankar (11)
-
@dozed (10)
-
@sundram-bruno (10)
-
@ravindra-bruno (10)
-
@NikHillAgar (10)
-
@snippetkid (9)
-
@Scotsoo (9)
-
@jwetzell (9)
-
@rreyn-bruno (9)
-
@martinsefcik (8)
-
@awinder (8)
-
@arnaduga (8)
-
@tlaloc911 (8)
-
@baptpln (8)
-
@jokj624 (7)
-
@sachin-thakur-bruno (7)
-
@sachin-bruno (7)
-
@tpyle (7)
-
@lared (7)
-
@brahma-dev (6)
-
@cwilper (6)
-
@jeromed-weekera (6)
-
@mjhcorporate (6)
-
@mvmn (6)
-
@utkarsh-bruno (6)
-
@abhishekp-bruno (5)
-
@poojabela (5)
-
@Sl-Alex (5)
-
@notfounnd (5)
-
@jaktestowac (5)
-
@stupidly-logical (5)
-
@kapami (5)
-
@josbiz (5)
-
@fgrande (5)
-
@akshat-khosya (5)
-
@Beedhan (5)
-
@pongpayak-rsp (5)
-
@qweme32 (4)
-
@james-ha-bruno (4)
-
@dnnr1 (4)
-
@krummbar (4)
-
@AyushNigam-1 (4)
-
@mirkogolze (4)
-
@depapp (4)
-
@end3rbyte (4)
-
@bplatta (4)
-
@adwait-bruno (4)
-
@nikischin (4)
-
@iamsushantk (4)
-
@helloitsm3 (4)
-
@mheidinger (4)
-
@luizfonseca (4)
-
@jarne (4)
-
@adarshlilha (4)
-
@BrandonGillis (4)
-
@acostinescu (4)
-
@rsilvr (3)
-
@rickyl3aks (3)
-
@dssagar93 (3)
-
@fantpmas (3)
-
@aviskase (3)
-
@shash68i (3)
-
@zyrouge (3)
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 -
CA -
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
Bruno Reviews
More Developer Tools
-
Open-source offline toolbox for developers, with utilities for JSON, YAML, hashes, JWTs, Base64, text comparison and more. Useful alternative to pasting sensitive data into random online tools.
-
Push to GitHub anonymously: add gitGost as a git remote and it opens a pull request with your name, email and commit metadata stripped, optionally over Tor. Anonymity isn't perfect, and the hosted service has had abuse-related downtime.
About the Data: Bruno
Change History
- Moved from Developer Utilities › Developer Tools #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!