TL;DR
Bruno tidak memiliki sinkronisasi cloud bawaan. Tim mengatasi hal ini dengan repositori git, drive jaringan bersama, atau kontainer dev. Setiap solusi memiliki batasan nyata. Apidog kini menutup celah dari kedua sisi: mode Git Berbasis Spesifikasi (Spec-First Git mode) yang baru memungkinkan spesifikasi OpenAPI berada di repositori Anda dan berpindah melalui _pull request_, sama seperti yang dilakukan Bruno, sementara sinkronisasi _cloud_ opsional menambahkan kolaborasi _real-time_, kontrol akses berbasis peran, kredensial terpusat, dan _mock server_ bawaan di atasnya. Anda tidak perlu lagi memilih git *atau* _workspace_ tim.
Pendahuluan
Desain Bruno yang hanya lokal adalah sebuah fitur, bukan sebuah kelalaian. Pengembang membuat pilihan yang disengaja: data Anda tetap di mesin Anda. Tanpa _cloud_ berarti tanpa akun, tanpa langganan, tanpa vendor yang menyandera koleksi Anda.
Namun, "hanya lokal" menciptakan masalah koordinasi saat orang kedua membutuhkan koleksi yang sama. Bagaimana tim yang terdiri dari lima pengembang berbagi koleksi API? Bagaimana seorang _QA engineer_ mendapatkan _request_ terbaru? Bagaimana karyawan baru menyiapkan lingkungan mereka tanpa menyalin _file_ melalui Slack?
Panduan ini membahas setiap solusi yang digunakan tim, berapa biaya sebenarnya dari masing-masing solusi, dan di mana batasnya. Ini juga mencakup sesuatu yang baru: mode Git Berbasis Spesifikasi Apidog, yang memungkinkan Anda mempertahankan filosofi 'file dalam repositori' ala Bruno dan tetap mendapatkan kolaborasi _real-time_ yang tidak dapat diberikan oleh git saja. Jika Anda ingin gambaran yang lebih luas terlebih dahulu, rangkuman kami tentang alat API yang bekerja dengan Git memberikan konteks.
Pendekatan git (jalur yang dimaksudkan)
Bruno dirancang di sekitar git. Koleksi adalah _file_ .bru, _environment_ adalah _file_ JSON, semuanya adalah _plain text_. Mekanisme berbagi yang dimaksudkan adalah repositori git.
Cara kerjanya:
- Buat repositori git untuk koleksi API Anda (atau gunakan _folder_ di dalam repositori Anda yang sudah ada)
- _Push_ koleksi ke GitHub, GitLab, atau Bitbucket
- Anggota tim mengkloning repositori dan membuka _folder_ di Bruno
- Perubahan di-komit dan di-_push_; yang lain me-_pull_
Yang berfungsi dengan baik:
- Riwayat versi lengkap pada setiap _request_
- Perubahan API melalui _code review_
- Integrasi CI/CD alami (
bru rundi _pipeline_ Anda) - Tidak diperlukan layanan pihak ketiga di luar _host_ git Anda
- Bekerja dengan ukuran tim berapa pun secara teori
Apa yang menjadi masalah:
- Anggota tim yang tidak fasih git kesulitan dengan alur kerja
- Perubahan tidak _live_. Anda me-_push_, yang lain me-_pull_ secara manual
- Nilai rahasia (_token_, _password_) tidak di-komit, jadi Anda memerlukan mekanisme terpisah
- Konflik penggabungan terjadi ketika dua orang mengedit _request_ yang sama
- Tidak ada cara untuk memberikan akses hanya-baca kepada non-pengembang tanpa akun git
Untuk siapa ini berfungsi: tim yang hanya terdiri dari pengembang dengan disiplin git yang konsisten. Ini cocok untuk 2-8 pengembang yang sudah bekerja di git untuk hal-hal lain. Pola ini cocok dengan pendekatan kontrol versi OpenAPI dengan Git yang lebih luas.
Pendekatan _shared network drive_
Beberapa tim menempatkan _folder_ koleksi Bruno di _shared network drive_: NAS, _network file server_, Dropbox bersama, atau _folder_ Google Drive.
Cara kerjanya: Bruno membuka koleksi dari jalur _folder_ mana pun. Arahkan ke lokasi _shared drive_.
Yang berfungsi:
- Pengaturan mudah, tidak memerlukan git
- Semua anggota tim melihat _file_ yang sama
- Bekerja untuk non-pengembang yang tidak bisa menggunakan git
Apa yang menjadi masalah:
- Tidak ada riwayat versi, atau riwayat versi yang buruk jika Anda menggunakan Dropbox atau Drive
- Dua orang yang membuka koleksi yang sama secara bersamaan dapat merusak atau menimpa _file_
- Drive jaringan lebih lambat daripada _file_ lokal; koleksi besar terasa lambat
- Tidak ada kontrol akses di luar izin _filesystem_
- Nilai rahasia masih memerlukan pengelolaan terpisah
- Gagal ketika anggota tim _offline_ atau pada koneksi yang tidak stabil
Untuk siapa ini berfungsi: tim kecil yang terdiri dari 2-3 orang yang jarang mengedit secara bersamaan dan membutuhkan berbagi tanpa git. Tidak direkomendasikan di luar penggunaan biasa.
Pendekatan Gitpod / _dev container_
Beberapa tim menempatkan koleksi Bruno mereka di _workspace_ Gitpod atau definisi _dev container_, sehingga setiap orang mendapatkan lingkungan yang konsisten dengan koleksi yang disertakan.

Cara kerjanya: koleksi berada di repositori. Gitpod atau _dev container_ akan berjalan dengan Bruno (atau Bruno CLI) dan koleksi yang sudah dimuat sebelumnya.
Yang berfungsi:
- Lingkungan yang konsisten untuk setiap pengembang
- Koleksi selalu cocok dengan _codebase_ yang diujinya
- Tidak ada pengaturan lokal. Kloning dan mulai _dev container_.
Apa yang menjadi masalah:
- Masih berbasis git; pengguna non-git tidak mendapatkan manfaat
- GUI desktop Bruno tidak berjalan di lingkungan _cloud dev_ (sebagian besar pengaturan _container_ hanya memberikan CLI _headless_)
- Sinkronisasi _real-time_ masih belum ada
Untuk siapa ini berfungsi: tim yang sudah menggunakan Gitpod atau _dev container_ yang ingin _test_ API terhubung ke lingkungan _dev_.
Pendekatan salinan per pengembang
Ini adalah pilihan yang paling tidak terstruktur: setiap pengembang menyimpan koleksi Bruno mereka sendiri dan menyinkronkannya secara manual dengan dokumen bersama atau menyalin dari ekspor rekan tim.
Yang berfungsi:
- Otonomi penuh, tidak diperlukan koordinasi
- Cepat untuk pengembang individu
Apa yang menjadi masalah:
- Koleksi langsung menyimpang
- Tidak ada sumber kebenaran bersama
- “Koleksi API tim” tidak berarti apa-apa ketika setiap orang memiliki versi yang berbeda
- Beban pemeliharaan menumpuk dengan cepat
Untuk siapa ini berfungsi: tidak ada yang lebih dari pengembang solo. Pola ini dengan cepat mengakumulasi _technical debt_.
Batasan yang dimiliki setiap solusi
Semua solusi sinkronisasi Bruno memiliki celah yang sama, dan git tidak dapat menutupnya:
Tidak ada kolaborasi _real-time_. Di Apidog, atau di tingkatan berbayar Postman, dua orang membuka koleksi yang sama dan melihat perubahan satu sama lain secara instan. Dengan Bruno ditambah git, Alice dan Bob selalu bekerja dari _pull_ terakhir mereka. Jika Alice menambahkan _request_ dan me-_push_, Bob tidak melihat apa pun sampai dia me-_pull_. Selama sesi API aktif, itu adalah gesekan yang konstan.
Tidak ada kontrol akses berbasis peran. Izin git (baca atau tulis di tingkat repositori) tidak sesuai dengan peran koleksi API. Anda tidak dapat menjadikan _stakeholder_ sebagai penampil yang menjalankan _request_ tetapi tidak dapat mengeditnya. Anda tidak dapat membatasi kontraktor ke _folder_ tertentu. Akses di Bruno adalah _all-or-nothing_ per repositori.
Tidak ada kredensial lingkungan bersama. Variabel rahasia Bruno tidak di-komit, yang merupakan perilaku keamanan yang benar. Namun, itu berarti setiap rekan tim menyiapkan kredensial secara manual, dan ketika _token_ berputar, Anda memerlukan proses _out-of-band_ untuk memberitahu semua orang agar memperbarui secara lokal. Alat dengan lingkungan _cloud_ yang aman menangani ini secara terpusat.
Tidak ada komentar tingkat koleksi. Anda tidak dapat meninggalkan catatan pada _request_ tertentu agar rekan tim dapat melihatnya. Komentar _PR_ Git mendekati, tetapi mereka melekat pada _diff_, bukan pada koleksi _live_.
Empat celah ini adalah alasan sebenarnya mengapa tim tumbuh melampaui solusi-solusi tersebut. Bagian selanjutnya adalah bagaimana Apidog menutupnya tanpa membuat Anda menyerah pada git.
Mode Git Berbasis Spesifikasi Apidog: alur kerja git tanpa solusi sementara
Pembingkaian yang biasa mengadu “Bruno plus git” melawan “alat _cloud_”. Mode Git Berbasis Spesifikasi Apidog menghilangkan pilihan tersebut. Ini memungkinkan spesifikasi OpenAPI berada di repositori GitHub, GitLab, atau _self-hosted_ Anda sendiri sebagai satu-satunya sumber kebenaran, kemudian menambahkan fitur tim di atas repositori yang sama.

Berikut adalah apa yang berubah dibandingkan dengan pengaturan Bruno-plus-git.
Spesifikasi adalah sumber kebenaran, dan ia berada di repositori Anda. Anda menghubungkan proyek Apidog ke repositori git dan definisi API disinkronkan sebagai _file_. Cabang per fitur, buka _pull request_, tinjau _diff_ kontrak baris per baris, dan _merge_. Ini adalah alur _review_ yang persis diaktifkan Bruno, diterapkan pada dokumen OpenAPI lengkap alih-alih _file_ _request_ .bru yang terpisah. Untuk alasan di balik pendekatan _design-first_, lihat Apa itu pengembangan API _spec-first_?.
Desain, _test_, _mock_, dan dokumentasi berasal dari satu definisi. Ketika spesifikasi berubah pada sebuah _branch_, _mock server_, contoh _response_, _test case_, dan dokumentasi referensi yang dipublikasikan semuanya berubah bersamanya, dan keseluruhan hal tersebut di-_commit_ sebagai satu _diff_ yang dapat ditinjau. Dengan Bruno Anda mendapatkan _file_ _request_; dokumentasi dan _mock_ adalah masalah orang lain. Ini adalah inti dari pendekatan _spec-as-code_, dan di sinilah satu _file_ OpenAPI melakukan pekerjaan yang dulunya dilakukan oleh empat alat terpisah.
Anda tetap menggunakan git, dan Anda menambahkan kolaborasi _real-time_. Ini adalah bagian yang tidak dapat ditandingi oleh solusi Bruno. Repositori tetap menjadi sistem pencatatan, tetapi rekan tim yang bekerja di aplikasi Apidog melihat editan satu sama lain secara _real-time_ alih-alih menunggu _pull_ berikutnya. Git memberi Anda riwayat dan tinjauan; _workspace_ bersama memberi Anda sesi _live_. Anda berhenti memilih antara keduanya.
Akses berbasis peran berada di atas repositori. Peran _viewer_, _editor_, dan _admin_ memungkinkan _stakeholder_ menjalankan _request_ tanpa mengeditnya, atau membatasi kontraktor ke proyek tertentu, yang semuanya tidak dapat diungkapkan oleh izin git tingkat repositori.
Kredensial dikelola secara terpusat. Lingkungan _cloud_ menyimpan variabel bersama (dan disimpan dengan aman), sehingga rotasi _token_ diperbarui sekali saja alih-alih memberitahu setiap pengembang untuk mengedit _file_ .secret.json lokal.
_Mock server_ disertakan. Bruno tidak memiliki _mock server_, itulah sebabnya tim mencari alternatif _mock server_ Bruno. Di Apidog, _mock_ langsung berasal dari spesifikasi, sehingga pekerjaan _frontend_ dimulai sejak hari pertama dengan _response_ yang realistis.
Berjalan di CI. Apidog menyediakan _runner_ CLI, sehingga _test case_ yang terikat pada spesifikasi yang disinkronkan akan dieksekusi dalam _pipeline_ yang sama seperti bru run, pada setiap _push_.
Perbandingan singkat dan jujur:
| Kemampuan | Bruno + git | Apidog Mode Git Berbasis Spesifikasi |
|---|---|---|
| File di repositori Anda sendiri | Ya (.bru) |
Ya (spesifikasi OpenAPI) |
| Tinjauan _branch_ + _pull-request_ | Ya | Ya |
| Runner CI | Ya (bru run) |
Ya (Apidog CLI) |
| Dukungan _self-hosted_ / GitLab | Ya | Ya |
| Pengeditan multi-pengguna _real-time_ | Tidak | Ya |
| Akses berbasis peran (_viewer_/_editor_) | Tidak | Ya |
| Kredensial bersama terpusat | Tidak | Ya |
| _Mock server_ dari spesifikasi | Tidak | Ya |
| Dokumentasi + _test_ berasal dari satu _file_ | Tidak | Ya |
Mode Git Berbasis Spesifikasi sedang dalam beta, jadi konfirmasikan spesifikasinya dengan pengaturan GitHub atau GitLab Anda sendiri dalam uji coba sebelum Anda memigrasikan seluruh tim. Untuk panduan lebih mendalam tentang koneksi itu sendiri, lihat integrasi dan sinkronisasi Git Apidog serta panduan mode Berbasis Spesifikasi. Jika Anda menimbang ini terhadap _stack_ desain dan _test_ dua alat, Stoplight + Postman vs Apidog menjalankan evaluasi yang sama.
Kapan harus bertahan dengan Bruno, dan kapan harus beralih
Bruno ditambah git berfungsi. Untuk tim yang tepat, ini berfungsi dengan baik. Pertanyaannya adalah kapan biaya kumulatif dari solusi-solusi tersebut melampaui nilai kesederhanaan Bruno.
Bertahanlah dengan Bruno ketika seluruh tim Anda adalah pengembang, setiap orang fasih dalam git, Anda tidak memerlukan sinkronisasi _real-time_, dan model izin repositori _all-or-nothing_ sudah cukup.
Beralihlah ke Mode Git Berbasis Spesifikasi Apidog ketika:
- Anda memiliki anggota tim non-pengembang yang membutuhkan akses API tanpa perlu belajar git
- Tim Anda terdiri dari 5 orang atau lebih dan koordinasi hanya-git telah menjadi gesekan harian
- Anda membutuhkan sinkronisasi _real-time_ selama sesi API aktif
- Anda memerlukan kontrol akses di tingkat proyek atau _folder_, bukan hanya repositori
- Anda lelah mendistribusikan kredensial secara manual setiap kali _token_ berputar
- Anda memerlukan _mock server_ di samping klien API Anda
Karena spesifikasi masih berada di repositori Anda, ini bukanlah pintu satu arah menjauh dari kontrol versi. Anda mempertahankan alur kerja git yang diajarkan Bruno dan menambahkan lapisan tim di atasnya.
Menyiapkan alur kerja Bruno + git yang benar-benar berfungsi
Jika Anda bertahan dengan Bruno, berikut adalah tata letak yang menjaga gesekan tetap rendah:
Struktur repositori:
api-collections/
.gitignore # exclude *.secret.json, .env
README.md # onboarding instructions
environments/
local.json
staging.json
production.json # no secrets, just variable names
users-api/
get-user.bru
create-user.bru
orders-api/
create-order.bru
list-orders.bru
bruno.json
Manajemen kredensial: gunakan environments/production.secret.json (_gitignored_) untuk rahasia lokal. Dokumentasikan variabel yang diperlukan di environments/production.json dengan nilai kosong sebagai _template_. Simpan nilai sebenarnya di pengelola _password_ atau _secrets vault_ tim Anda, dengan _link_ di README.
Orientasi pengembang baru:
- Kloning repositori
- Buka _folder_ koleksi di Bruno
- Salin
production.jsonkeproduction.secret.json - Isi kredensial dari _vault_ (ditautkan di README)
- Siap digunakan
CI/CD: _inject_ variabel _environment_ saat _runtime_, sehingga tidak ada _file_ rahasia yang tersimpan di repositori.
Pendirian Bruno yang tanpa _cloud_ adalah prinsipil dan memiliki manfaat nyata, dan solusi sinkronisasi dapat diterima untuk tim yang tepat. Mengetahui batasannya memberi tahu Anda kapan harus mengandalkannya dan kapan harus mencari alat yang dibangun untuk kolaborasi tim. Dengan Apidog kini menjaga spesifikasi di repositori Anda, jangkauan itu tidak lagi berarti meninggalkan git. Unduh Apidog dan arahkan ke repositori Anda yang sudah ada untuk melihat perbedaannya pada API Anda sendiri.
