Day 12 / Daily GitHub Discovery / Developer Tools

Bruno

Keep API requests and tests in plain-text files you can review and version with Git.

~47,200 stars · checked Sep 28, 2026
JavaScriptTypeScriptElectronReactNode.jsBruGit
Visit GitHub (opens in a new tab)

What it does

Bruno is a local-first API client with a desktop interface and CLI runner. Collections live on the filesystem as readable request files rather than requiring a cloud workspace.

Why it’s interesting

API changes and their tests can be reviewed together in a pull request. Keep credentials out of committed collection files and inject environment-specific values at runtime.

Real-world use case

Store an API collection beside a backend service. Developers run it locally while CI checks response status codes and important fields.

What I can learn

  • 01

    Language tooling

    parse the Bru request format into structured data.

  • 02

    Local-first UX

    synchronize files with an Electron interface.

  • 03

    CLI orchestration

    resolve variables, send requests, and evaluate assertions.

One thing to explore

Bru language parser

Follow the implementation and connect it to the learning points above.

Explore the source (opens in a new tab)

10-Minute Challenge

Run a GitHub API assertion

Before you start: Node.js, npm, and network access. GitHub may rate-limit anonymous API requests.

  1. Create a collection folder containing bruno.json and github.bru with the contents below.
  2. From that folder, run npx @usebruno/cli run.
  3. Change the expected status code and confirm that the assertion fails.
JSON
{ "version": "1", "name": "API demo", "type": "collection", "ignore": ["node_modules", ".git"] }
Text
meta {  name: GitHub Zen  type: http  seq: 1}

get {  url: https://api.github.com/zen  body: none  auth: none}

assert {  res.status: eq 200}
Terminal
npx @usebruno/cli run

Keep exploring

All repositories →