omnifeed Search

The best open-source API clients for keeping your data local: Bruno, Yaak, Insomnia and Hoppscotch

By Research Desk Facts checked 4 products · 69 cited quotes

Bruno is the best open-source API client if you want your requests and collections to stay on your own machine. Its README says it “is offline-only” and that there are no plans to add cloud sync, ever. Its documentation adds that no account is needed. Collections are plain-text files in a folder, so you share them through your own Git repository rather than a vendor’s server. It scores 5.0/5.

Yaak (4.2/5) makes the same local promise and lists the requests it sends to its own servers, but it has no test scripts. Insomnia (3.5/5) can keep a project fully local, though its README says most features need an account. Hoppscotch (3.3/5) is the one to pick if you would rather run the server yourself: its documentation covers self-hosting “with full data ownership”, but it lists no support for gRPC (a remote procedure call protocol).

Our picks

  • Best overall Bruno 5.0 /5
  • Most detailed privacy documentation Yaak 4.2 /5
  • Best for teams that want optional encrypted cloud sync Insomnia 3.5 /5
  • Best for running your own server Hoppscotch 3.3 /5

Scores

1–5 per criterion · total is the weighted average · select a score to see its source
Open-source API clients rubric: scores out of 5 and weighted totals
# Product Local storage without an account ×3 Collections as files in Git ×2 Protocols supported ×3 Tests and command-line runs ×2 Total
1 Bruno 5555 5.0
2 Yaak 5452 4.2
3 Insomnia 2354 3.5
4 Hoppscotch 3244 3.3
How each criterion is scored

Local storage without an account ×3

Where your requests, collections and environments are stored, and whether you need an account with the vendor to use the app's features.

  1. 5 Every feature works without an account, data stays on your device, and the project documents that there is no cloud sync or cloud component.
  2. 4 Every feature works without an account and data stays on your device, but the vendor also offers an optional cloud sync.
  3. 3 Works without an account with data kept on your device; syncing and team features need the vendor's cloud or a server you host yourself.
  4. 2 A local-only mode exists, but an account with the vendor is needed for most features.
  5. 1 Collections are stored only in the vendor's cloud.

Collections as files in Git ×2

Whether collections can live as plain-text files in a folder you choose, so you can review and share them with Git, and what that costs.

  1. 5 Collections are plain-text files in a folder by default, and any Git tool can version them at no cost.
  2. 4 Collections can be synced to plain-text files in a folder for use with Git, after you turn it on for each workspace, at no cost for personal use.
  3. 3 Collections can be stored in a Git repository, but only on a paid plan.
  4. 2 Collections can only be exported and imported as files or gists.
  5. 1 Collections can't be saved as files at all.

Protocols supported ×3

Which API protocols the client can send requests over, out of REST, GraphQL, gRPC, WebSocket and Server-Sent Events (SSE).

  1. 5 All five (REST, GraphQL, gRPC, WebSocket and SSE).
  2. 4 Four of the five (REST, GraphQL, gRPC, WebSocket, SSE).
  3. 3 REST, GraphQL and one more of gRPC, WebSocket or SSE.
  4. 2 REST and one other protocol.
  5. 1 REST only.

Tests and command-line runs ×2

Whether you can write test assertions against responses, and run collections from a command-line tool in continuous integration (CI).

  1. 5 Test scripts plus a command-line runner with documented report formats such as JUnit, not labelled alpha or beta.
  2. 4 Test scripts plus a command-line runner for CI, or the same with report output when the runner is labelled alpha or beta.
  3. 3 Test scripts in the app, but no command-line runner.
  4. 2 A command-line tool can send saved requests, but there are no test assertions.
  5. 1 No test scripts and no command-line runner.
01

Bruno

Best overall 5.0 /5

Bruno’s claim and its documentation agree. The README says collections are stored “directly in a folder on your filesystem” in a plain-text format, and that the project has no plans to add cloud sync. The getting started guide says Bruno “does not require an account to use”. Secrets are also kept on your machine, encrypted with the operating system’s encryption when it is available and AES-256 otherwise.

Because collections are ordinary files, you collaborate through Git or any other version control system. One caveat: the free version’s built-in Git screens cover init, diffs, pull and clone, while commit, push, branching and conflict resolution inside the app need a paid plan. Running Git from your terminal works without one. The README says the majority of features are free and open source.

  • Offline-only, with no account and no cloud sync
  • Collections are plain-text files that any Git tool can version
  • REST, GraphQL, gRPC, WebSocket and Server-Sent Events (SSE)
  • Command-line runner that writes JSON, JUnit and HTML test reports
  • Commit, push, branching and merge-conflict tools inside the app need a Pro or Ultimate plan
  • gRPC support needs Bruno 2.10.0 or later

Skip it if: Teams that want the vendor to host and sync their collections for them.

02

Yaak

Most detailed privacy documentation 4.2 /5

Yaak’s security page is the most specific of the four about data flows. It says requests, environments, history and settings live in a local SQLite database, with “no cloud component” and no account. It then lists the requests the desktop app does make to Yaak’s servers, such as update checks, notification checks and license checks, and says these carry metadata like the app version and operating system, not your requests or environment values. Update and notification checks can be disabled. The README states “No telemetry”.

Git use is opt-in per workspace: directory sync writes YAML files and a built-in Git client handles commits and branches, while environments stay out of the sync unless you mark them shareable. The gap is testing. Yaak’s documentation says it “does not currently support request scripting” and has no collection runner screen. The source code is MIT licensed. The prebuilt app is free for personal use and needs a license for work.

  • Local SQLite storage with no account and no cloud component
  • Documents every request it makes to its own servers, and update checks can be turned off
  • Encrypts secrets with ChaCha20-Poly1305, with the master key in the system keychain
  • All five protocols, including gRPC and SSE
  • No request scripting and no test assertions
  • No collection runner in the app; sending folders in order needs the command-line tool
  • A license is required when you use it at work

Skip it if: Anyone whose workflow depends on test scripts that check each response.

03

Insomnia

Best for teams that want optional encrypted cloud sync 3.5 /5

Insomnia offers three storage modes, and you have to read past the first sentence to see the trade. Local Vault stores “all project data” on your device, and the Scratch Pad needs no account. But the README also says “to access most capabilities of the product we require an account”. The collected-data page says usage data is gathered if you are logged in, or if you have not opted out in the desktop app; the opt-out is a Send Usage Statistics checkbox in Preferences.

For teams, Cloud Sync can be end-to-end encrypted (E2EE), which the storage page says keeps data encrypted “during transmission and storage”, and Private Environments stay local whichever storage you choose. Git Sync stores projects as YAML files in your own repository, though the README places it among the premium features. Testing is strong: Chai assertions in scripts, plus the Inso command-line tool for automated runs.

  • Local Vault keeps a project entirely on your device
  • Optional cloud sync with end-to-end encryption
  • Private Environments are never stored in the cloud
  • All five protocols, with all four gRPC call types
  • An account is required for most features
  • Collects usage data from logged-in users and from desktop users who have not opted out
  • Git Sync is listed among the paid plans' premium features

Skip it if: Anyone who wants every feature without creating an account.

04

Hoppscotch

Best for running your own server 3.3 /5

Hoppscotch keeps collections in “cloud/local session storage”, and syncing across devices needs a sign-in. The privacy-friendly route is the self-hosted Community Edition, which runs as a set of Docker containers on your own infrastructure. Even then, check the settings: the documentation says a self-hosted instance sends an anonymous usage ping once a week, and that you can turn it off in the settings. It also says Hoppscotch “does not capture any data from your APIs”.

Hoppscotch Limited’s privacy policy says the company uses session-replay tools from PostHog that record users’ interactions with its services. The policy names the company’s website and mobile application among those services; it does not name the API client specifically. Secret variables are protected either way: their values “will never be synced to the server”. For collaboration, collections can be exported as files or GitHub gists, but there is no Git sync.

  • Self-hostable Community Edition under the MIT license
  • Secret variables are never synced to the server
  • Extra real-time protocols such as Socket.IO and MQTT
  • Post-request tests and a command-line tool that writes JUnit reports
  • No gRPC support listed
  • No Git sync; collections move by file or GitHub gist export
  • The command-line tool is labelled alpha

Skip it if: Developers who want collections versioned in Git next to their code.

Questions

Which of these API clients work without an account?

Bruno and Yaak need no account for any feature. Insomnia works without one only in its local Scratch Pad; its README says most capabilities require an account. Hoppscotch keeps data in local session storage without signing in, but syncing needs an account on Hoppscotch’s cloud or on your own self-hosted instance.

Which ones send usage data?

Insomnia collects usage data from logged-in users and from desktop users who have not opted out. A self-hosted Hoppscotch instance sends a weekly anonymous usage ping that you can turn off. Yaak says it has no telemetry and lists the update, notification and license checks it does make. We found no statement either way in the Bruno pages we captured, beyond its offline-only promise.

Can I keep my API collections in Git?

Bruno stores them as plain-text files by default. Yaak can sync a workspace to YAML files with a built-in Git client. Insomnia’s Git Sync writes YAML files to your repository but is listed as a premium feature. Hoppscotch only exports files or GitHub gists.

Method

Each client was scored from 1 to 5 against a published scale on four weighted criteria: local storage without an account (×3), collections as files in Git (×2), protocols supported (×3) and tests and command-line runs (×2). The ranking is the weighted average. Every score cites quotes from the project’s own documentation, website or GitHub README, captured on 5 November 2026.

We did not install or benchmark the clients, so statements about data flows reflect what each project documents, not network traffic we observed. How our rankings work