<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/bruno-tutorial-the-official-getting-started-guide-2026--24h6mer0m" -->

---
title: Bruno Tutorial: The Official Getting-Started Guide (2026)
description: An official quickstart walks through Bruno, an open-source, Git-friendly API client that stores collections as plain-text YAML files instead of in a vendor...
canonical: https://daily.dev/posts/bruno-tutorial-the-official-getting-started-guide-2026--24h6mer0m
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Bruno Tutorial: The Official Getting-Started Guide (2026) | daily.dev
og:description: An official quickstart walks through Bruno, an open-source, Git-friendly API client that stores collections as plain-text YAML files instead of in a vendor...
og:url: https://daily.dev/posts/bruno-tutorial-the-official-getting-started-guide-2026--24h6mer0m
og:image: https://api.daily.dev/og/posts/24h6meR0m.png
og:image:alt: Bruno Tutorial: The Official Getting-Started Guide (2026)
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Bruno Tutorial: The Official Getting-Started Guide (2026)

**[Bruno Blog](https://daily.dev/sources/usebruno)** · 9 min read · 0 upvotes · 0 comments

## Summary

An official quickstart walks through Bruno, an open-source, Git-friendly API client that stores collections as plain-text YAML files instead of in a vendor cloud. It covers installing Bruno, creating a collection, sending requests, managing environments and typed variables, writing JavaScript-based tests, committing collections to Git, and automating runs via the Bruno CLI and CI pipelines (GitHub Actions, Docker). It also highlights Bruno v4 features like native AI assistance, typed variables, Apps, rebuilt secret management, and interactive collection docs, plus an FAQ comparing Bruno to Postman and covering offline use, licensing, and CI integration.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.usebruno.com/bruno-tutorial>

## Questions this post answers

### How does Bruno store API collections differently from Postman?

Bruno stores collections as plain-text YAML files (the OpenCollection format) in a folder on your own disk, rather than in a vendor's cloud tied to an account. This makes collections diffable, versionable in Git, and usable fully offline with no forced sign-up, unlike Postman which requires an account and monetizes seats and cloud sync.

_Comparing local-first and cloud-based API clients gets easier when you track tooling changes on daily.dev._

### How do typed variables work in Bruno v4?

In Bruno v4, variables retain real data types instead of being treated as strings, so numbers stay numbers, booleans stay booleans, and objects stay objects. This removes the need for manual JSON.parse conversions inside pre-request or test scripts when working with variable values.

_Developers adopting new Bruno features can follow tooling updates like this on daily.dev._

### How can I run a Bruno API collection in a CI pipeline?

Use the Bruno CLI package @usebruno/cli (requires Node 18+, also available as a Docker image) and run 'bru run --env dev' from the collection folder. The CLI executes every request and test, exits non-zero on any failure, and can generate JUnit, HTML, or JSON reports with flags like --reporter-junit and --reporter-html for pipeline integration with GitHub Actions, Jenkins, GitLab CI, or Azure Pipelines.

_Teams wiring API tests into CI can keep up with tools like Bruno's CLI via daily.dev._

## Similar posts on daily.dev

- [How to Share Bruno Collections: Git, Export, and Import](https://daily.dev/posts/how-to-share-bruno-collections-git-export-and-import-qz4ne3qtg) · Bruno Blog · 0 upvotes · 0 comments
- [How to Use Git in Bruno: Collection, Workspace, and Hybrid Setup](https://daily.dev/posts/how-to-use-git-in-bruno-collection-workspace-and-hybrid-setup-p8o62hr8c) · Bruno Blog · 9 upvotes · 1 comments
- [Bruno AI: Bring Your Own Key, Keep Secrets Local](https://daily.dev/posts/bruno-ai-bring-your-own-key-keep-secrets-local-2wyeze0b0) · Bruno Blog · 1 upvotes · 0 comments

---

Tags: [#testing](https://daily.dev/tags/testing), [#cicd](https://daily.dev/tags/cicd), [#git](https://daily.dev/tags/git), [#postman](https://daily.dev/tags/postman)

[View this post on daily.dev](https://daily.dev/posts/bruno-tutorial-the-official-getting-started-guide-2026--24h6mer0m)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Bruno Tutorial: The Official Getting-Started Guide (2026)","url":"https://daily.dev/posts/bruno-tutorial-the-official-getting-started-guide-2026--24h6mer0m","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/bruno-tutorial-the-official-getting-started-guide-2026--24h6mer0m"},"datePublished":"2026-08-23T07:21:17.937Z","dateModified":"2026-08-23T07:27:30.006Z","description":"An official quickstart walks through Bruno, an open-source, Git-friendly API client that stores collections as plain-text YAML files instead of in a vendor...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4d61773f9684537c66ada4d7db57140a?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4d61773f9684537c66ada4d7db57140a?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Bruno Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Bruno Blog","logo":"https://media.daily.dev/image/upload/s--n6YntNuw--/f_auto,q_auto/v1787469611/logos/usebruno?_a=BAMAMicg0","url":"https://daily.dev/sources/usebruno"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/bruno-tutorial-the-official-getting-started-guide-2026--24h6mer0m","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"testing,cicd,git,postman","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Bruno Blog","item":"https://daily.dev/sources/usebruno"},{"@type":"ListItem","position":3,"name":"Bruno Tutorial: The Official Getting-Started Guide (2026)"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/bruno-tutorial-the-official-getting-started-guide-2026--24h6mer0m#faq","mainEntity":[{"@type":"Question","name":"How does Bruno store API collections differently from Postman?","acceptedAnswer":{"@type":"Answer","text":"Bruno stores collections as plain-text YAML files (the OpenCollection format) in a folder on your own disk, rather than in a vendor's cloud tied to an account. This makes collections diffable, versionable in Git, and usable fully offline with no forced sign-up, unlike Postman which requires an account and monetizes seats and cloud sync. Comparing local-first and cloud-based API clients gets easier when you track tooling changes on daily.dev."}},{"@type":"Question","name":"How do typed variables work in Bruno v4?","acceptedAnswer":{"@type":"Answer","text":"In Bruno v4, variables retain real data types instead of being treated as strings, so numbers stay numbers, booleans stay booleans, and objects stay objects. This removes the need for manual JSON.parse conversions inside pre-request or test scripts when working with variable values. Developers adopting new Bruno features can follow tooling updates like this on daily.dev."}},{"@type":"Question","name":"How can I run a Bruno API collection in a CI pipeline?","acceptedAnswer":{"@type":"Answer","text":"Use the Bruno CLI package @usebruno/cli (requires Node 18+, also available as a Docker image) and run 'bru run --env dev' from the collection folder. The CLI executes every request and test, exits non-zero on any failure, and can generate JUnit, HTML, or JSON reports with flags like --reporter-junit and --reporter-html for pipeline integration with GitHub Actions, Jenkins, GitLab CI, or Azure Pipelines. Teams wiring API tests into CI can keep up with tools like Bruno's CLI via daily.dev."}}]}
```

