API access to Google's Gemini models via the Code Assist API with OAuth authentication.
This is a fork of llm-gemini modified to use Google's Code Assist API, which requires OAuth authentication instead of API keys.
Install this plugin in the same environment as LLM:
llm install llm-gemini-code-assistUnlike the standard llm-gemini plugin, this version uses OAuth authentication with the Code Assist API. Authentication generally is automatic if you have gemini-cli installed; else, you can authenticate manually:
llm gemini-ca authThis will:
- Open your browser to Google's OAuth consent page
- After you approve, save credentials to
~/.gemini/oauth_creds.json - The credentials include a refresh token for automatic renewal
The OAuth credentials are stored with file permissions 0600 for security.
Once authenticated, use the models with the gemini-ca/ prefix:
llm -m gemini-ca/gemini-2.5-flash "Tell me a joke about a pelican"You can set it as your default model:
llm models default gemini-ca/gemini-2.5-flash
llm "Tell me a joke about a pelican"Only a limited subset of models from the standard llm-gemini plugin are available with the gemini-ca/ prefix:
gemini-ca/gemini-2.5-pro- Latest Gemini 2.5 Progemini-ca/gemini-2.5-flash- Latest Gemini 2.5 Flashgemini-ca/gemini-2.5-flash-lite- Gemini 2.5 Flash Lite
All features from llm-gemini are supported:
llm -m gemini-ca/gemini-2.5-flash 'describe image' -a image.jpgllm -m gemini-ca/gemini-2.5-flash -o json_object 1 \
'3 largest cities in California'llm -m gemini-ca/gemini-2.0-flash -o code_execution 1 \
'calculate factorial of 13'llm -m gemini-ca/gemini-2.5-flash -o google_search 1 \
'What happened today?'llm chat -m gemini-ca/gemini-2.5-flashIf you get authentication errors:
-
Check if your credentials are expired:
cat ~/.gemini/oauth_creds.json | python -m json.tool
-
Re-authenticate:
llm gemini-ca auth
To set up the development environment:
cd llm-gemini-code-assist
uv sync
uv run pre-commit installThis installs dependencies and sets up pre-commit hooks (including secret scanning).
Run tests:
uv run pytestThe pre-commit hooks will automatically run linting, formatting, type checking, and secret scanning before each commit. You can also run them manually:
uv run pre-commit run --all-files- Uses OAuth authentication instead of API keys
- Requires Code Assist API access
- Models use
gemini-ca/prefix - Tokens auto-refresh using stored refresh tokens
Apache 2.0