Free forever Β· v0.1 Β· No account needed

One file.
Four tools replaced.

bolla replaces your API client, load tester, mock server, and CI runner with a single plain-text file. Define a request once β€” it does everything else. No account. No cloud. Fully offline.

$ curl -fsSL https://bolla.cikubo.it/install.sh | sh
bolla β€” my-project / users-api
πŸ” Search requests... COLLECTIONS πŸ“ users-api POST create-user GET list-users GET get-user PUT update-user DELETE delete-user ENVIRONMENTS staging production POST {{base_url}}/users Send Body Headers Auth Assertions id : create-user name : Create user method : POST url : {{base_url}}/users auth : type : bearer token : {{TOKEN}} body : type : json content : name : Alice email : alice@example.com Response 201 42ms { "id" : "usr_01JXKQ" "name" : "Alice" "email" : "alice@example.com" "created_at" : "2026-06-26T..." } ASSERTIONS βœ“ status_code = 201 βœ“ body contains "id" βœ“ elapsed_ms < 500 HISTORY βœ“ 201 create-user 42ms staging 2026-06-26 14:32:01 βœ“ 200 list-users 18ms staging 2026-06-26 14:31:55
Capabilities

Everything in one binary

Core features always on. Every module independently toggleable β€” disable what you don't use and it vanishes completely.

⚑

Request builder

Send HTTP, GraphQL, WebSocket and SSE requests. Switch environments (local/staging/prod) in one click. Store your collection as YAML files alongside your code.

Core
πŸš€

Load & stress testing

Write a scenario file, set a concurrency ramp, hit run. Watch live p50/p95/p99 latency and requests-per-second as the test runs.

Core
🎭

Mock server

One command turns your collection into a running HTTP mock. Returns hand-written examples or auto-generates realistic fake data (emails, UUIDs, prices…) β€” no extra config.

Optional
πŸ”’

CI / CD gates

Add bolla --ci to any pipeline. Set latency budgets, error rate limits and throughput minimums. bolla exits 0 on pass and 1 on failure. JUnit XML included.

Optional
πŸ”‘

OAuth2 β€” built in

Client credentials, auth code + PKCE, device flow. Tokens are cached and refreshed automatically. Presets for Google, GitHub and Microsoft.

Optional
πŸ“‹

OpenAPI import

Point bolla at any OpenAPI 3.x spec and it generates a full collection instantly. Drift detection alerts you when live responses stop matching the spec.

Optional
πŸ“Š

History & reports

Every run is saved. Browse and filter past results, compare two runs side-by-side, or export as CSV, HTML, or JSON.

Optional
πŸ› 

Productivity extras

Paste a cURL command and get a bolla file back. Export any request as Python, JS or Go code. Security linter catches hardcoded secrets and missing auth.

Optional
πŸ€–

AI assist

Bring your own Anthropic API key. bolla suggests assertions from any response and explains load test results in plain English. Your key never leaves your machine.

Optional
How it works

See it in action

From a single YAML file to load test results, CI pass/fail, and mock server β€” all in one tool.

Load testing β€” live metrics

Real-time p50/p95/p99 latency and RPS as the scenario runs

SCENARIO: api-smoke Β· 50 VUs Β· 60s ramp p50 latency 87ms p95 latency 142ms avg RPS 312 error rate 0.0% Latency over time (ms) 200 150 100 50 p95 p50 gate 200ms

CI gate output

bolla --ci exits 0 on pass, 1 on fail β€” works with any CI system

$ bolla --ci --scenario api-smoke --env staging bolla ci β€” running scenario 'api-smoke' 50 VUs Β· ramp 5β†’50 Β· 60s βœ“ status 200 on POST /auth/token βœ“ p50 latency 87ms ≀ gate 200ms βœ“ p95 latency 142ms ≀ gate 300ms βœ“ error rate 0.0% ≀ gate 1% βœ“ throughput 312 req/s β‰₯ gate 100 req/s All gates passed. Reports: .bolla/runs/abc123/junit.xml .bolla/runs/abc123/result.json $ echo $? 0

Mock server

One command spins up a full mock from your collection

$ bolla --mock --collection ./users-api --mock-port 3078 bolla mock β€” serving collection: ./users-api mock server running on http://localhost:3078 routes (5): POST /users examples: success, error GET /users generated GET /users/:id generated PUT /users/:id examples: success DEL /users/:id examples: success $ curl -s http://localhost:3078/users -X POST | jq .id "usr_01JXKQM2N4..." # select example: -H 'X-Bolla-Example: error' press Ctrl+C to stop

Code snippets & security linting

Export any request as cURL, Python, JS, or Go. Detect hardcoded secrets instantly.

SNIPPET β€” create-user Β· Python import requests headers = { 'Authorization' : f'Bearer {TOKEN}' } res = requests.post(base_url+ '/users' , ...) SECURITY LINTS β€” create-user HIGH HARDCODED_TOKEN β€” Bearer token appears hardcoded. Use {{TOKEN}}. MED SECRET_IN_URL β€” Query param 'api_key' in URL (logged by proxies). LOW NO_ASSERTIONS β€” Add at least a status code check.
The format

Plain text. Always in git.

A .bolla.yaml file is readable in any editor, diff-able in any PR, and drives every capability from one definition.

request.bolla.yaml
scenario.yaml
CI run
id: create-user name: Create user method: POST url: {{base_url}}/users auth: type: bearer token: {{TOKEN}} body: type: json content: name: Alice email: alice@example.com assertions: - check: status_code value: 201 - check: body_contains text: id # Examples are served by `bolla --mock` examples: - name: success status: 201 body: '{"id":"usr_01","name":"Alice"}'
id: user-flow name: User signup flow load: type: ramp start_concurrency: 5 end_concurrency: 50 duration_s: 60 steps: - request_id: create-user extract: USER_ID: $.id - request_id: get-user vars: id: {{USER_ID}} gates: p95_ms: max: 300 error_pct: max: 0.5 rps: min: 100
$ bolla --ci --scenario user-flow --env prod bolla ci β€” 50 VUs Β· ramp 5β†’50 Β· 60s βœ“ p95 latency 142ms ≀ gate 300ms βœ“ error rate 0.1% ≀ gate 0.5% βœ“ throughput 287 req/s β‰₯ gate 100 req/s All gates passed. Reports: .bolla/runs/abc123/ junit.xml β†’ GitHub Actions / GitLab / Jenkins result.json β†’ custom dashboards $ echo $? 0
Comparison

bolla vs the alternatives

bolla isn't just another API client. It's the one tool that replaces the whole stack β€” with no compromises on any of the four.

Capability
bolla
BrunoPostmank6Apidog
Request builder & collectionsβœ“βœ“βœ“β€”βœ“
Load & stress testingβœ“β€”paidβœ“βœ“
Built-in mock serverβœ“β€”cloudβ€”βœ“
CI gates (exit 0/1)βœ“bru CLINewmanβœ“paid
OpenAPI import + drift detectionβœ“import onlyβœ“β€”βœ“
Plain text files, version-controlledβœ“βœ“β€”βœ“optional
Fully offline, no accountβœ“βœ“β€”βœ“β€”
Free, no seat limit, everβœ“ foreverβœ“1 userβœ“3 users
One definition drives all of the aboveβœ“β€”β€”β€”partial
Installation

One command. No runtime.

A single static binary. Download and run β€” no npm, no Docker, no runtime to manage.

🍎 macOS

curl -fsSL https://bolla.cikubo.it/install.sh | sh

🐧 Linux

curl -fsSL https://bolla.cikubo.it/install.sh | sh

πŸ“¦ Manual

Download from bolla.cikubo.it/releases/

Grab the pre-built binary for your platform and put it in your PATH.

Supports: macOS (Apple Silicon & Intel) Β· Linux (x86_64 & ARM64)

Free forever

Replace four tools.
Keep one file.

No seat limits. No subscriptions. No usage caps. No account. Ever.

Get started in 2 minutes Full reference β†’