Skip to main content

A gh-style CLI for Bitbucket — PR management for humans, scripts, and LLM agents

Project description

lite-bb (Lite Bitbucket CLI)

Because sometimes you want gh, but your company uses Bitbucket.

lite-bb is a lightweight, gh-style command-line tool for managing Bitbucket pull requests. It brings the simplicity and ergonomics of the GitHub CLI to Bitbucket — whether you're on Bitbucket Cloud or running Bitbucket Server / Data Center on-prem.

Built for developers who live in the terminal, CI/CD pipelines that need scriptable PR workflows, and LLM agents that benefit from structured --json output.

Features

  • Familiar interface — if you know gh pr, you already know bb pr. Same commands, same flags, same muscle memory.
  • Cloud + on-prem — works with both Bitbucket Cloud and Bitbucket Server / Data Center. Auto-detects your instance type from the git remote.
  • Zero-config start — auto-detects workspace, repo, and branch from your git context. Just cd into your repo and go.
  • Code searchbb search code searches across your workspace or a specific repo, with filters for extension and filename.
  • Machine-readable output — every command supports --json for scripting, piping, and LLM agent consumption.
  • Credential verificationbb auth login validates your token against the API before saving, so you catch auth issues immediately.
  • Easy install — distributed as a pre-built binary via PyPI. No Rust toolchain needed — just pip install lite-bb.

Install

The recommended way to install lite-bb is via pip or uv. This downloads a pre-built native binary for your platform — no Rust toolchain required.

pip install lite-bb
# or
uv pip install lite-bb

After installation, the bb command is available on your PATH.

Building from source

If you prefer to build from source, you'll need the Rust toolchain installed:

cargo install --path crates/cli

This compiles and installs the bb binary to ~/.cargo/bin/.

Quick Start

# 1. Authenticate (interactive — choose Cloud or Server, enter token)
bb auth login

# 2. List open PRs in the current repo
bb pr list

# 3. Create a PR from your current branch
bb pr create --title "feat: add user authentication"

# 4. View PR details (human-readable or JSON)
bb pr view 42
bb pr view 42 --json

Authentication

lite-bb supports two authentication methods, matching how Bitbucket handles access:

  • Access Token — a single token value (workspace, project, or repository token). This is the simplest option, similar to gh auth login with a personal access token.
  • App Password — a username + app password pair. Useful when your organization requires app passwords for API access.

Interactive Login

bb auth login

This walks you through an interactive setup:

  1. Choose your Bitbucket instance — Cloud or Server / Data Center
  2. For Server/DC, enter the server URL (auto-detected from your git remote if available)
  3. Choose your credential type — Access Token or App Password
  4. Enter your credentials
  5. Credentials are verified against the API before saving
# Check your current auth status
bb auth status

# Remove saved credentials
bb auth logout

Environment Variables

For CI/CD pipelines and scripting, you can set credentials via environment variables. These take priority over the config file.

Variable Description
BB_TOKEN Access token (used as Basic auth for Cloud, Bearer for Server/DC)
BB_USERNAME Username for app password auth
BB_APP_PASSWORD App password (used together with BB_USERNAME)
BB_SERVER_URL Bitbucket Server/DC base URL (e.g. https://bitbucket.company.com)
BB_CONFIG_DIR Override the config directory (default: ~/.config/bb/)

The config file is stored at ~/.config/bb/config.yml and respects the XDG_CONFIG_HOME environment variable.

Usage

All commands auto-detect the workspace and repository from your git remote. You can override this with -R WORKSPACE/REPO (or -R PROJECT/REPO for Server/DC).

Listing Pull Requests

# List open PRs (default)
bb pr list

# Filter by state and limit results
bb pr list --state MERGED --limit 10
bb pr list --state DECLINED --limit 5

Viewing a Pull Request

# Human-readable summary
bb pr view 42

# JSON output (for scripts, pipes, and LLM agents)
bb pr view 42 --json

Creating a Pull Request

# Create from current branch (auto-detected) to default branch
bb pr create --title "feat: add login page"

# Specify description
bb pr create --title "feat: add login page" --body "Implements the login page with OAuth support"

# Specify source and destination branches explicitly
bb pr create --title "fix: typo in docs" --head my-branch --base main

Editing a Pull Request

# Update title
bb pr edit 42 --title "new title"

# Update description
bb pr edit 42 --body "updated description"

# Change destination branch
bb pr edit 42 --base develop

Merging

# Merge with default strategy
bb pr merge 42

# Merge with a specific strategy and commit message
bb pr merge 42 --strategy squash --message "squash: combine all commits"

Code Review

# Approve a PR
bb pr review 42 --approve

# Request changes (unapprove)
bb pr review 42 --request-changes

Comments

# Add a comment to a PR
bb pr comment 42 --body "Looks good! Just one minor suggestion on line 15."

Diffs and CI Checks

# View the PR diff
bb pr diff 42

# View CI/CD pipeline status
bb pr checks 42

# CI checks as JSON
bb pr checks 42 --json

Searching Code

# Search across your whole workspace (Cloud) or server (Server/DC)
bb search code "fn main"

# Scope to a specific repo
bb search code "TODO" --repo myworkspace/myrepo

# Scope to a personal repo (Server/DC)
bb search code "TODO" --repo ~username/myrepo

# Filter by file extension or filename
bb search code "import requests" --extension py
bb search code "Makefile" --filename Makefile

# Limit results (default: 30)
bb search code "error handling" --limit 10

# JSON output for scripts and agents
bb search code "apiKey" --json

Results show the file path, repository, and matching lines. Lines that directly match the query are highlighted with a > prefix.

Branch Operations

# Checkout a PR branch locally (fetches and switches)
bb pr checkout 42

# Close (decline) a PR
bb pr close 42

# Reopen a previously declined PR
bb pr reopen 42

Command Reference

Command Description
bb auth login Authenticate with Bitbucket (Cloud or Server/DC)
bb auth logout Remove saved credentials
bb auth status Show current auth info and provider
bb pr list List pull requests (filterable by state)
bb pr view <id> View pull request details
bb pr create Create a new pull request
bb pr edit <id> Edit title, description, or destination branch
bb pr merge <id> Merge a pull request
bb pr close <id> Decline / close a pull request
bb pr reopen <id> Reopen a declined pull request
bb pr review <id> Approve or request changes
bb pr comment <id> Add a comment to a pull request
bb pr diff <id> View the pull request diff
bb pr checks <id> View CI/CD status checks
bb pr checkout <id> Fetch and checkout the PR branch locally
bb search code <query> Search code across workspace or a specific repo

Bitbucket Server / Data Center

lite-bb fully supports Bitbucket Server and Data Center (on-prem) installations. The CLI automatically adapts its API calls, authentication method, and URL structure based on your configured provider.

Key differences handled automatically:

  • API endpoints — Cloud uses /2.0/repositories/{workspace}/{repo}, Server/DC uses /rest/api/1.0/projects/{project}/repos/{repo}
  • Authentication — Cloud tokens use Basic auth with x-token-auth, Server/DC personal access tokens use Bearer auth
  • Pagination — Cloud uses page/pagelen, Server/DC uses start/limit
  • Diff format — Cloud returns raw unified diff, Server/DC returns structured JSON (converted to unified diff automatically)
  • Git remotes — parses both Cloud (bitbucket.org) and Server/DC remote URL formats (SSH with port, HTTPS with /scm/ prefix, SCP-style)

No special flags are needed — just configure your server URL during bb auth login or via BB_SERVER_URL, and all commands work the same way.

Development

cargo build            # build the CLI binary
cargo test             # run all unit tests
cargo run -- pr list   # run the CLI directly without installing

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lite_bb-0.1.5.tar.gz (38.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

lite_bb-0.1.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

lite_bb-0.1.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

lite_bb-0.1.5-py3-none-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

lite_bb-0.1.5-py3-none-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file lite_bb-0.1.5.tar.gz.

File metadata

  • Download URL: lite_bb-0.1.5.tar.gz
  • Upload date:
  • Size: 38.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lite_bb-0.1.5.tar.gz
Algorithm Hash digest
SHA256 d1782ebe32ecb17eee9f84d749e6f65826f286a9185375bf1e3c6b20ddabfa4e
MD5 4cc2b511137d9e0d28b125c5ba25fad3
BLAKE2b-256 16d00c77c6f4777154b30578654cc658c7c67e724ee9e22dad11f93820cf9c64

See more details on using hashes here.

Provenance

The following attestation bundles were made for lite_bb-0.1.5.tar.gz:

Publisher: release.yml on key4ng/lite-bb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lite_bb-0.1.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lite_bb-0.1.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c8781d1efbaeb77f89fc1f52b6dd30152a8eadc8552f86e3471893ab82e604d3
MD5 45454951cb20609145fd024d24c2efa2
BLAKE2b-256 7ddfde53f5d2920c547596fe04ca4e48929d5eaf0fcb57b40887c7be6ffb1726

See more details on using hashes here.

Provenance

The following attestation bundles were made for lite_bb-0.1.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on key4ng/lite-bb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lite_bb-0.1.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for lite_bb-0.1.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ee1a78fe9c1d3d9158f4c0c428ac574edcc46beec106d043f7b9943254366cfc
MD5 80be803abe00cd21c05083dd0b5c8b92
BLAKE2b-256 b9012c9c0a644edf0d5628fe565c1610956048c45a39e653f143e818162363ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for lite_bb-0.1.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on key4ng/lite-bb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lite_bb-0.1.5-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lite_bb-0.1.5-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c462da93e7548ace1d0a7d3eb2e71ba98f37e1135773dad122f82a501d25c30
MD5 acc1879ce7e7f4ebbc0e2c8afbebf42b
BLAKE2b-256 ab2bad6b4bd44031005b8835a07283633a771b9a310d4f30d749744dbf64f264

See more details on using hashes here.

Provenance

The following attestation bundles were made for lite_bb-0.1.5-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on key4ng/lite-bb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lite_bb-0.1.5-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lite_bb-0.1.5-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2db2c5b3e76523a6517d1dfaaa3cfdd9364b218302d878aea6f0f2bc9a9bbea0
MD5 853fc1771a0dac9a01b586a35eb2a8ec
BLAKE2b-256 0921b01a2207e6c75a99e6491374c82e5a2dd78d3c5bad618b60b459d11ef38b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lite_bb-0.1.5-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on key4ng/lite-bb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page