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/

Repository

  • LicenseMIT
  • Created27 Sept 22
  • Primary languageJavaScript
  • Size62,235 KB
  • Stars46,732
  • Forks2,840
  • Watchers46,732

Language Usage

Language Usage

Project Health

  • Last commit5 days ago
  • Open issues1,822
  • Latest releasev4.1.0

Top Contributors

Recent Commits

  • sachin-thakur-bruno(03 Sept 26)

    fix(variables): scope list env name on creation (#9167)

  • morsh-bruno(03 Sept 26)

    feat(grpc): add scripting support (#9144) * feat: add before-call-start and after-call-end grpc lifecycle hooks' types, schema, filestore, converter and UI changes. * fix: address review comments from CLAUDE code review. * fix: fix typo on grpc script type * feat: add gRPC Orchestration flow for before call start and after call end * feat: add gRPC scripting test results in response pane * fix: fix review comments from local review * test(grpc): add e2e test cases for grpc before-call-start, after-call-end scripts and API surfaces. * test(grpc): add more coverage for grpc scripting * test: unit test cases for grpc scripting on filestore, converters and lang * test: grpc scripting classes unit cases * fix: change grpc APIs from req and res to request and response * fix: fix code rabbit reviews * fix: modify bru.grpc.request.messages to be always the transmitted messages array. * fix: deep clone messages array so it is immutable * fix: add beta tag to scripts and add scripts to beta features list * fix: fix review comments on file structuring * fix: convert scripting test from bru to yml * fix: fix review comments * fix: add Script Types const to bruno-common and remove methodType from grpc-response * refactor: move common actions to util file for reuse. * fix: address review comments * refactor: rename util test methods and constants for better readability * feat: add before-message-send and after-message-receive grpc message hooks' types, schema, filestore, converter and UI changes. * fix: re-order script types for uniformity * fix: add message object to request and response shims and organise grpc under a directory * feat: add message object to grpc response and request object * feat: handle script errors in grpc message hooks * feat: add script runtime changes for message hooks. * fix: fix nit comments * fix: fix review comments from code-review * test: add unit test cases covering message hooks and refactor bru.runRequest in script runtime * test: add coverage for grpc test results and responseCleared reducer method * test: add e2e coverage for message hooks * fix: fix review comments. * fix: add comment to explain the runAfterMessageReceive error handling behavior * fix: fix review comments * fix: rename set, delete and deleteAll metadata methods to upsert, remove and clear. * fix: fix review code rabbit comments * feat: add autocomplete for grpc scripting * fix: fix review comments * fix: remove conflict in test/action.ts * fix: pass snapshots of session for afterMessageReceiveHooks instead of live copy and fix review comments * refactor: modify messages name for better readability * fix: capture and pass the snapshot to afterMessageReceive hook.

  • Sid(03 Sept 26)

    chore(standards): update coding standards for call site specific clones (#9160)

  • sachin-thakur-bruno(03 Sept 26)

    feat(preferences): support page redesign (#9064)

  • sachin-thakur-bruno(03 Sept 26)

    feat(variable-scope): added icons to variable scope list and the badge (#9157)

  • sachin-thakur-bruno(02 Sept 26)

    fix(variable-scope): collection env in variable scope should not present if active env is deleted (#9154)

  • shubh-bruno(02 Sept 26)

    fix(bruno-js): await async test() callbacks in developer mode (#9081)

  • Chirag Chandrashekhar(02 Sept 26)

    perf(runner): store runner request and response payloads in sqlite (#8944)

  • sachin-bruno(02 Sept 26)

    fix(collection-docs): Include git repo url toggle is hidden when there is no git remote url (#9147) * fix: git repo url toggle is hidden when there is no git remote url * fix: comments fixed

  • sanish chirayath(02 Sept 26)

    feat(runtime): expose __dirname, __filename within scripting context (#9101) * feat(collection): enhance script wrapping with dynamic __dirname/__filename binding Updated the `wrapScriptInClosure` and `wrapAndJoinScripts` functions to accept file paths, allowing for the injection of the correct `__dirname` and `__filename` values into scripts. This change ensures that scripts can reference their own directory and file name, improving their ability to load resources relative to their location. Added tests to verify the correct behavior of these enhancements, including fallback mechanisms when file paths are not provided. feat(tests): add integration tests for __dirname/__filename binding in CLI scripts Introduced new integration tests to verify that the __dirname and __filename variables are correctly bound per script segment in the CLI environment. This includes the creation of fixture files and directories to simulate various script executions, ensuring that scripts can reference their own paths accurately. The tests cover scenarios for collections, folders, and requests, validating the expected behavior of path resolution and variable persistence across different script types. refactor(tests): remove deprecated fixture helpers and update integration tests Deleted the `fixture-workdir.js` and `run-cli.js` helper files as they are no longer needed. Updated integration tests to utilize the new `createCollectionFixture` function for setting up test environments, ensuring that the tests remain functional and maintain their intended behavior. This change streamlines the test setup process and improves code maintainability. refactor(tests): update path handling in wrapAndJoinScripts tests Refactored test cases for the `wrapAndJoinScripts` function to use dynamic path resolution for file paths. This change improves maintainability and clarity by defining paths using `path.join` and `path.resolve`, ensuring that the tests accurately reflect the expected behavior of the script wrapping functionality. Updated assertions to match the new path structure. test(tests): enhance dirname-per-script-segment tests with additional assertions Updated the `dirname-per-script-segment` test suite to include a new assertion verifying that the `folderFile` environment variable ends with `folder.yml`. Additionally, the total number of passed requests in the validation results was incremented to reflect the new test case. This enhancement improves coverage for path resolution scenarios in the testing framework. * refactor(collection): improve path handling in script wrapping functions Updated the `wrapScriptInClosure` and `wrapAndJoinScripts` functions to utilize nullish coalescing for `__dirname` and `__filename` parameters, enhancing fallback behavior when file paths are not provided. Adjusted the integration tests to verify that the correct collection directory is used when no file path is available, ensuring robust path resolution across script segments. * refactor(collection): standardize parameter naming in script wrapping functions Renamed parameters in `wrapScriptInClosure` and `wrapAndJoinScripts` functions for clarity, changing `paths` to `sourcePaths`. Updated the function calls throughout the codebase to reflect this change. Enhanced the integration tests to ensure proper handling of the new parameter structure, improving code readability and maintainability. * fix(collection): update type definition for sourcePaths parameter in wrapScriptInClosure Modified the type definition of the `sourcePaths` parameter in the `wrapScriptInClosure` function to allow for a null filename, enhancing type safety and clarity in the function's usage. This change improves the overall robustness of the code by accurately reflecting the expected structure of the parameter. * feat(tests): enhance dirname-per-script-segment tests with new fixtures and assertions Updated the integration tests for the dirname-per-script-segment functionality to include new fixture files for parent and child directories, ensuring accurate binding of __dirname and __filename per script segment. Refactored existing tests to validate the correct behavior of environment variables and added assertions to check the distinctness of directory paths. Removed deprecated subfolder fixtures to streamline the test setup and improve clarity. * refactor(tests): improve clarity and consistency in dirname-per-script-segment tests * fix(tests): normalize line endings in dirname-per-script-segment test files * refactor(tests): enhance clarity in createCollectionFixture function comments Updated comments in the createCollectionFixture function to improve clarity regarding path resolution on macOS. This change aims to provide better understanding of how temporary directories are handled in the testing environment. * refactor(tests): remove outdated comment in dirname-per-script-segment test Eliminated a redundant comment regarding the binding of __dirname and __filename in the dirname-per-script-segment test file to enhance clarity and maintainability of the test code. * fix(collection): update script wrapping to handle undefined __filename and __dirname

  • Abhishek Patil(02 Sept 26)

    feat(response-example): support previewing pdf images and videos for 'save responses' (#9000) * feat(response-example): we now support previewing pdf, images and videos for 'save responses' * feat(example-preview): add comprehensive tests and support for various binary response types including images, audio, video, and PDFs * feat(example-preview): integrate StyledWrapper for improved layout in binary response previews * refactor(binary-preview): enhance layout and content type handling in binary response previews * refactor(response-preview): move getBinaryPreviewType to utils * refactor(response-example): improve binary content type detection and styling in response previews * refactor(response): implement normalizeMime utility for consistent content type handling across response components * refactor(response-example): enhance test structure and improve binary response handling with new utility functions * refactor(response-bookmark): sniff should win over any non-binary label. * refactor(response-example): replace binary preview with QueryResult component for enhanced response handling * refactor(response-example): remove deprecated binary preview component and update StyledWrapper usage in response content * feat(binary-preview): add comprehensive tests for various binary response types and update example fixtures * refactor(response-example): streamline binary content type detection and update test fixtures for improved clarity * refactor(response-example): introduce utility functions for opening collection requests and saving response examples * refactor(response-example): rename sendAndSaveResposeExample to sendReqAndSaveResposeExample for consistency in binary preview tests * fix(binary-preview): coverted all fixtures to .yml * refactor(binary-preview): update test cases and fixtures for improved binary response handling and organization * refactor(response-bookmark): remove outdated comment * refactor(binary-preview): simplify test cases by removing retry logic and using direct example names * refactor(binary-preview): enhance test structure by isolating collection setup and improving app lifecycle management * refactor(binary-preview): enhance binary preview tests by utilizing new locator methods for media elements * refactor(response-example): clean up onRun function formatting and remove outdated comment in ResponseBookmark * refactor(response-example): enable editing of raw body in edit mode and update read-only logic in ResponseExampleResponseContent * refactor(response-processor): remove normalizeMime and replace existing extractMimeType function * test(response-example): pin sniff-vs-header priority when resolving example body type * test(binary-preview): add test for preserving binary preview after Content-Type header change * test(binary-preview): add test to ensure binary preview remains visible in edit mode * test(binary-preview): add tests for persisting binary and JSON examples with validation of stored body formats * test(binary-preview): add test for SVG handling as editable markup instead of binary preview * UPDATE function name sendReqAndSaveResposeExample to sendRequestAndSaveResposeExample * test(binary-preview): add test for round-tripping binary (base64) example body * Resolved github conversations * refactor(binary-preview): streamline test structure by removing try-finally blocks for better readability * Reused existing methods to openCollectionRequest * feat(response-example): add testId to response headers table for improved testability * fix: correct spelling of 'Response' in sendRequestAndSaveResponseExample function and its usage in binary preview tests * refactor(ResponseExampleResponseContent): optimize MIME type detection using useMemo for improved performance * Removed extra comments

  • Chirag Chandrashekhar(02 Sept 26)

    perf(runner): remove redundant deep clones of the runner results tree (#9151)

  • ravindra-bruno(02 Sept 26)

    fix(app): labelled cloned items by type in the clone modal and toast (#9153)

  • Sid(02 Sept 26)

    fix: the status bar is shown for smaller bodies as well (#9152)

  • Chirag Chandrashekhar(02 Sept 26)

    test(benchmark): added benchmark test suite for collection runner (#9126)

  • Anoop M D(02 Sept 26)

    chore: improve test comments (#9139) * chore: improve test comments * Potential fix for pull request finding --------- Co-authored-by: sachin-thakur-bruno <[email protected]>

  • sachin-thakur-bruno(02 Sept 26)

    fix(request): creating a new request from sidebar add request pre fils the preset url (#9150)

  • adwait-bruno(01 Sept 26)

    fix(openAPI):multifile openAPI specs can be imported (#8946) * fix(openAPI):multifile openAPI specs can be imported

  • sachin-thakur-bruno(01 Sept 26)

    feat(checkbox): adds checkbox component in ui with story and unit tests (#8861) * WIP feat(checkbox)/adds checkbox component in ui with story and unit tests

  • sharan-bruno(01 Sept 26)

    fix(CLI): fixed junit reporters omit iterations and requests skipped due to bail (#9080) * fix(CLI): fixed junit reporters omit iterations and requests skipped due to bail * addressed review comments * addressed review comments * addressed code rabbit comments

  • sachin-thakur-bruno(01 Sept 26)

    fix(tests): websocket messages scroll flaky tests (#9122) * fix(flaky-test): fixed websockets flaky tests

  • naman-bruno(01 Sept 26)

    feat(preferences): add docs URL for Mock Server (#9142)

  • Gopi Kishore(01 Sept 26)

    fix(test): add dataTestId to delete collection item modal (#9141)

  • shubh-bruno(01 Sept 26)

    fix(collection-settings): save presets using shortcuts (#9138) Co-authored-by: mr-weed-88 <[email protected]>

  • Chirag Chandrashekhar(01 Sept 26)

    fix(sqlite): write generated artifacts as TypeScript literals (#8951)

  • Siddharth Gelera (reaper)(31 Aug 26)

    feat(code-editor): degraded editor and status bar (#8867)

  • Sid(31 Aug 26)

    feat: add multi-selection state for collections (#6339) (#8721) * feat: add multi-selection state for collections (#6339) * feat(sidebar): implement multi-select support for sidebar items with bulk actions (#8881) * feat: open collections bulk actions enhancements (#9125) * fix: improve file handling safety, cross-platform path resolution in tests, and sidebar UI/logic consistency * refactor: simplify dropdown item locator by removing exact text matching requirement * feat: open collections bulk actions enhancements (#9128) - Improve file handling safety and cross-platform path resolution in tests, and sidebar UI/logic consistency - Simplify dropdown item locator by removing exact text matching requirement - Simplify file operation error handling by removing redundant target state tracking --------- Co-authored-by: Youssef Al-Hassan <[email protected]> Co-authored-by: sachin-thakur-bruno <[email protected]> Co-authored-by: Gopi Kishore <[email protected]>

  • sachin-thakur-bruno(31 Aug 26)

    fix(app): added clone option for app and name collission for app while creating (#9133)

  • adwait-bruno(31 Aug 26)

    Fix:openapi sync update (#8979) * fix(converters): preserve OpenAPI sync config in single-file YAML

  • naman-bruno(31 Aug 26)

    feat(tests): add tests for app creation and management (#9124) * feat(tests): add tests for app creation and management * fix --------- Co-authored-by: e2e <e2e@test>

Bruno Security

Security Advisories (5)

  • mediumPatched

    GHSA-g747-7v24-2w4vOAuth2 state parameter is not validated on callback, allowing authorization code injection

  • criticalPatchedCVSS 9.8

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

  • criticalPatched

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

  • highPatched

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

  • highPatched

    CVE-2025-30210XSS 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 Address100.27.249.156
  • Hostnameec2-100-27-249-156.compute-1.amazonaws.com
  • LocationAshburn,Virginia,United States of America,NA
  • ISPAmazon Technologies Inc.
  • ASNAS14618

Associated Countries

  • USUS
  • CACA
  • JPJP

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

Edit Bruno Data

You can edit Bruno's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

Origin Data

Modify Data

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!