Bruno is an API client that stores collections as plain files in your git repo — no cloud accounts, no sync fees, no vendor lock-in.
Why Bruno Matters
Postman moved to cloud-only and started charging for team features. Bruno stores everything as files in your project — version controlled, reviewable, and free forever.
What you get for free:
- Collections stored as plain files (Bru markup)
- Git-friendly: diff, merge, review API collections
- No cloud account required
- Offline-first
- Scripting with JavaScript
- Environment variables
- Open source (MIT)
Quick Start
# Install
brew install bruno
# Or download from usebruno.com
# Collections are folders with .bru files
Bru File Format
meta {
name: Get Users
type: http
seq: 1
}
get {
url: {{baseUrl}}/api/users
body: none
auth: bearer
}
auth:bearer {
token: {{authToken}}
}
assert {
res.status: eq 200
res.body.length: gt 0
}
script:post-response {
const data = res.getBody();
bru.setVar("firstUserId", data[0].id);
}
Environment Variables
# environments/dev.bru
vars {
baseUrl: http://localhost:3000
authToken: dev-token-123
}
# environments/prod.bru
vars {
baseUrl: https://api.example.com
authToken: {{process.env.API_TOKEN}}
}
CLI for CI/CD
# Run collection in CI
npx @usebruno/cli run --env dev
# Run specific folder
npx @usebruno/cli run users/ --env staging
Links
Building API workflows? Check out my developer tools on Apify or email spinov001@gmail.com for custom solutions.
Top comments (0)