A unified AI service gateway supporting multiple deployment options:
- Node.js version: Located in the
nodejsfolder for self-hosted deployment - Vercel version: Located in the project root for direct deployment to Vercel platform
- Unified AI service gateway
- Support for multiple deployment options
- Extensible architecture design
- Support for multiple AI providers (OpenAI, Claude, Grok, Gemini)
- OpenAI:
https://api.openai.com - Claude (Anthropic):
https://api.anthropic.com - Grok (xAI):
https://api.x.ai - Gemini (Google):
https://generativelanguage.googleapis.com
- Node.js (v14 or higher)
- npm or yarn
- Clone the repository:
git clone https://github.com/yourusername/aiGateway.git
cd aiGateway/nodejs- Install dependencies:
npm install
# or
yarn install- Start the service:
npm start
# or
yarn startThe service will run on port 3008 by default.
- Vercel account
- GitHub account (for automatic deployment)
- Fork this project to your GitHub account
- Import the project in Vercel
- Click deploy
After deployment, you can use https://your-project-name.vercel.app/v1/{model} as the base URL.
For example:
https://your-project-name.vercel.app/v1/grokmaps tohttps://api.x.aihttps://your-project-name.vercel.app/v1/claudemaps tohttps://api.anthropic.comhttps://your-project-name.vercel.app/v1/geminimaps tohttps://generativelanguage.googleapis.com
URL Examples:
https://your-project-name.vercel.app/v1/grok/v1/models
https://your-project-name.vercel.app/v1/claude/messages
https://your-project-name.vercel.app/v1/gemini/v1beta/models
The gateway automatically forwards requests to the appropriate AI provider based on the model parameter in the URL. All necessary headers (authorization, x-api-key, etc.) are preserved and forwarded.
curl "https://your-project-name.vercel.app/v1/gemini/v1beta/openai/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $GEMINI_API_KEY" \
-d '{
"model": "gemini-2.5-pro",
"messages": [
{"role": "user", "content": "Explain to me how AI works"}
]
}'curl "https://your-project-name.vercel.app/v1/gemini/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a few words"
}
]
}
]
}'curl "https://your-project-name.vercel.app/v1/claude/messages" \
-H "Content-Type: application/json" \
-H "x-api-key: $CLAUDE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-3-sonnet-20240229",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'curl "https://your-project-name.vercel.app/v1/grok/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $GROK_API_KEY" \
-d '{
"model": "grok-beta",
"messages": [
{"role": "user", "content": "What is the meaning of life?"}
]
}'Make sure to set the following environment variables:
GEMINI_API_KEY: Your Google Gemini API keyCLAUDE_API_KEY: Your Anthropic Claude API keyGROK_API_KEY: Your xAI Grok API keyOPENAI_API_KEY: Your OpenAI API key
MIT