Serve Gemini CLI models through an OpenAI-compatible API.
1.9K
This project provides a lightweight proxy server that translates OpenAI API requests to the Google Gemini API, utilizing the @google/gemini-cli for authentication and request handling.
gemini-cli for secure OAuth2 authentication with Google.Dockerfile and docker-compose.yml for easy containerized deployment.If you find this project useful, consider supporting its development:
Before you begin, ensure you have the following installed:
Clone the repository:
git clone https://github.com/your-username/gemini-cli-openai-api.git
cd gemini-cli-openai-api
Install project dependencies:
npm install
Install the Gemini CLI and Authenticate:
This is a crucial step to authenticate with your Google account and generate the necessary credentials.
npm install -g @google/gemini-cli
gemini auth login
Follow the on-screen instructions to log in with your Google account. This will create a file at ~/.gemini/oauth_creds.json containing your authentication tokens.
Configure Environment Variables:
Create a .env file by copying the example file:
cp .env.example .env
Open the .env file and set the following variables:
PORT: The port the server will run on (default: 11434).API_KEY: A secret key to protect your API endpoint. You can generate a strong random string for this.To run the server in development mode with hot-reloading:
npm run dev
The server will be accessible at http://localhost:11434 (or the port you specified).
To build and run the server in production mode:
npm run build
npm start
The easiest way to deploy the project with Docker is by using the provided docker-compose.yml file.
Authentication:
The Docker container needs access to your OAuth credentials. You have two options:
Option A (Recommended): Mount the credentials file.
Uncomment the volumes section in docker-compose.yml to mount your local oauth_creds.json file into the container.
volumes:
- ~/.gemini/oauth_creds.json:/root/.gemini/oauth_creds.json
Option B: Use environment variables.
If you cannot mount the file, you can set the ACCESS_TOKEN, REFRESH_TOKEN, and EXPIRY_DATE environment variables in the docker-compose.yml file. You can get these values from your ~/.gemini/oauth_creds.json file.
Configure docker-compose.yml:
Open docker-compose.yml and set the API_KEY and other environment variables as needed.
Start the container:
docker-compose up -d
The server will be running on the port specified in the ports section of the docker-compose.yml file (e.g., 4343).
If you need to build the Docker image yourself:
docker build -t gemini-cli-openai-api .
Then you can run the container with the appropriate environment variables and volume mounts.
You can deploy this project as a Docker Space on Hugging Face.
Create a new Space:
Upload the project files:
Dockerfile) to your new Hugging Face Space repository. You can do this via the web interface or by cloning the space's repository and pushing the files.Configure Secrets:
~/.gemini/oauth_creds.json file.
ACCESS_TOKEN: Your Google OAuth access token.REFRESH_TOKEN: Your Google OAuth refresh token.EXPIRY_DATE: The expiry date of your access token.API_KEY: The secret API key you want to use to protect your endpoint.PORT: The port the application should run on inside the container (e.g., 7860, which is a common default for Hugging Face Spaces).Update Dockerfile (if necessary):
Dockerfile exposes port 4343. If Hugging Face requires a different port (like 7860), you may need to update the EXPOSE instruction in the Dockerfile.Deploy:
Your Gemini-powered OpenAI proxy will now be running on your Hugging Face Space!
Content type
Image
Digest
sha256:f59f639b6…
Size
159.2 MB
Last updated
about 1 year ago
docker pull sfiorini/gemini-cli-openai-api