š Bypass AI API Rate Limits with SmartCore LLM Proxy
Hitting HTTP 429 Rate Limits on Google Gemini, DeepSeek, or OpenAI can crash your AI backend or assistant (like Hermes AI).
SmartCore LLM Proxy is a lightweight local gateway built with LiteLLM that automatically load-balances requests and routes to fallback models whenever your primary key hits a limit.
š” How It Works
Instead of calling LLM APIs directly, your app points to http://127.0.0.1:4000:
Instead of calling LLM APIs directly, your app points to http://127.0.0.1:4000:
[ App / Hermes AI ] āāā¶ [ SmartCore LLM Proxy ] ā āāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāā ā¼ ā¼ Gemini 1.5 Pro āā(On 429)āāā¶ Gemini 1.5 Flash / DeepSeek
- Primary Route: Sends requests to your main model.
- Automatic Cooldown & Fallback: Put rate-limited endpoints on a 60s cooldown and failover instantly.
3. Zero Code Changes: Works with any OpenAI-compatible client.
š ļø Quick Setup (4 Steps)
1. Clone & Install
bash
git clone https://github.com/aaserag1/SmartCore-LLM-Proxy.git
cd SmartCore-LLM-Proxy
pip install "litellm[proxy]"
2. Configure Keys (config.yaml)
Add your API keys and fallbacks in config.yaml:
yaml
model_list:
- model_name: gemini-1.5-pro
litellm_params:
model: gemini/gemini-1.5-pro
api_key: "YOUR_GOOGLE_KEY"
- model_name: deepseek-coder
litellm_params:
model: deepseek/deepseek-chat
api_key: "YOUR_DEEPSEEK_KEY"
router_settings:
cooldown_time: 60
fallbacks:
- gemini-1.5-pro: ["deepseek-coder"]
3. Run Gateway
Double-click Run_LiteLLM.bat or run:
bash
python -m litellm --config config.yaml --port 4000 --host 127.0.0.1
4. Connect Your App
Set your app's Base URL to http://127.0.0.1:4000.
š Open Source & Contribution
Check out the project and leave a ā on GitHub!
š GitHub: https://github.com/aaserag1/SmartCore-LLM-Proxy
šØāš» Author: Ahmed Adel (Abo Adel)
5:09 AM
Top comments (1)
Nice practical approach, Ahmed. Putting the 429 handling and cooldown logic behind a LiteLLM-compatible endpoint seems like a clean way to keep that complexity out of application code.
I'm curious about one design choice: when the primary model is rate-limited, is your fallback order always fixed, or have you encountered cases where the backup model needed to be selected based on latency, cost, or compatibility with the original request?
Also, has the 60-second cooldown been sufficient in your testing, or have different providers required different recovery behavior?
Would be interested to hear what you've found while building and testing this.