What Bruno Does
- HTTP requests — REST, GraphQL, gRPC (beta)
- Plain text storage —
.brufiles in your repo - Environments — dev/staging/prod variables
- Scripting — pre-request and post-response JavaScript
- Tests — assertions on responses
- Auth — Basic, Bearer, OAuth2, AWS Sig
- CLI —
bru runfor CI/CD - Offline — no account, no cloud sync
Architecture
Electron app + open .bru file format (similar to HTTP files). Each collection is a directory tree. Environment files are .env style. CLI shares the same engine for headless runs.
Self-Hosting
Desktop app — no server. Collections live in your Git repo.
# Project structure
my-api/
├── bruno.json
├── environments/
│ ├── dev.bru
│ └── prod.bru
└── users/
├── list.bru
└── create.bruKey Features
- Plain text
.bruformat (Git-friendly) - Offline by default (no cloud account)
- Environment variables
- JavaScript scripting (pre/post)
- Built-in assertions
- CLI for CI/CD
- OpenAPI/Postman import
- Free, no paywall
Comparison
| Tool | Storage | Cloud | CLI | Price |
|---|---|---|---|---|
| Bruno | Plain text | Optional | Yes | Free |
| Postman | Cloud DB | Required | Newman | Paid tiers |
| Insomnia | YAML | Optional | Inso | Paid tiers |
| Hoppscotch | Cloud/local | Optional | Yes | Free + paid |
FAQ
Q: Can I migrate from Postman? A: Yes. File → Import → select a Postman collection JSON. Bruno automatically converts it to .bru files.
Q: How does team collaboration work?
A: Store the collection in a Git repo and have the team push/pull. Use .env for environment variables to keep sensitive info isolated.
Q: Does it support GraphQL? A: Yes. Select GraphQL as the request type and introspection is provided automatically.
Sources & Credits
- Docs: https://docs.usebruno.com
- GitHub: https://github.com/usebruno/bruno
- License: MIT