Linux terminal Gemini client with secure local API key config
Project description
Bro CLI
A lightweight, fast, and secure Linux terminal client for Google's Gemini AI.
bro allows you to interact with Gemini directly from your command line, offering both single-prompt execution and a persistent interactive chat mode. It securely manages your API credentials using standard Linux XDG directories.
Features
- Interactive & Single-Prompt Modes: Seamlessly switch between quick one-off questions and interactive conversational sessions.
- Secure Credential Management: API keys are stored securely in
~/.config/bro/config.jsonwith strict user-only (0600) file permissions. - Environment Variable Support: Override stored configurations on the fly using the
BRO_GEMINI_KEYenvironment variable. - Terminal-Optimized Output: Instructs Gemini to return direct, concise answers without unnecessary markdown formatting or conversational filler.
Requirements
- Linux
- Python 3.10 or higher
- pipx (Required for isolated global CLI installation)
Installation
Install bro-cli globally as an isolated application using pipx.
To install directly from your Git repository:
pipx install git+https://github.com/PromitSarker/Bro-CLI.git
Local Installation: If you have cloned the repository to your local machine, you can navigate to the project folder and install it by running:
pipx install .
Updating: To upgrade to the latest version in the future:
pipx upgrade bro-cli
Configuration
Before using the client, you must configure your Google Gemini API key. Run the following command:
bro config
You will be prompted to paste your API key. It will be saved securely to your system.
Usage
Single Prompt
Ask a direct question. The client will return the answer to your standard output and exit:
bro "Why life so hard ?"
Note: You can also skip the quotes for simple queries:
bro how to go and breathe ?
Interactive Mode
Start a multi-turn chat session by running the command without any arguments:
bro
Inside the interactive prompt, type exit, quit, or press Ctrl+C/Ctrl+D to end the session.
Technical Details
- Default Model:
gemini-2.5-flash-lite - SDK: Powered by the official
google-genaiPython SDK.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bro_cli-0.1.6.tar.gz.
File metadata
- Download URL: bro_cli-0.1.6.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7610cf559b669ee31f798c8950de9fed26fc046a79d734c26459b2595a712d60
|
|
| MD5 |
5aa701ef3a6c7e7d012b6ce773768bb9
|
|
| BLAKE2b-256 |
10d530be189a7e8c594ef6116032094f5428f79e4326f95d3e7163320f32a6ee
|
Provenance
The following attestation bundles were made for bro_cli-0.1.6.tar.gz:
Publisher:
publish.yml on PromitSarker/Bro-CLI
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bro_cli-0.1.6.tar.gz -
Subject digest:
7610cf559b669ee31f798c8950de9fed26fc046a79d734c26459b2595a712d60 - Sigstore transparency entry: 1279347685
- Sigstore integration time:
-
Permalink:
PromitSarker/Bro-CLI@5f0af5662db3aec91f11dc662d795c446f51d518 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/PromitSarker
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5f0af5662db3aec91f11dc662d795c446f51d518 -
Trigger Event:
push
-
Statement type:
File details
Details for the file bro_cli-0.1.6-py3-none-any.whl.
File metadata
- Download URL: bro_cli-0.1.6-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef49b6f5b254ea8ac3cba818e0d740c9b3d9c9177ddd20a9b85c1ded475340bd
|
|
| MD5 |
893cb1cf9156295c76d11c4b31b96af9
|
|
| BLAKE2b-256 |
f15ec2b6528c02e5ec124fc8629d271677f54b08660f3c6fd39c445b6689bcd5
|
Provenance
The following attestation bundles were made for bro_cli-0.1.6-py3-none-any.whl:
Publisher:
publish.yml on PromitSarker/Bro-CLI
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bro_cli-0.1.6-py3-none-any.whl -
Subject digest:
ef49b6f5b254ea8ac3cba818e0d740c9b3d9c9177ddd20a9b85c1ded475340bd - Sigstore transparency entry: 1279347834
- Sigstore integration time:
-
Permalink:
PromitSarker/Bro-CLI@5f0af5662db3aec91f11dc662d795c446f51d518 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/PromitSarker
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5f0af5662db3aec91f11dc662d795c446f51d518 -
Trigger Event:
push
-
Statement type: