Throttle sits between your app and Claude/OpenAI APIs. It automatically routes requests to cheaper models when quality doesn't matter, caches repeated queries, and batches requests intelligently. no code changes needed. drop it in as a proxy. result: 70% cost cuts in production.
I built because we watched our inference bill hit 8k/month, optimized it, and realized every AI company has the same problem. open source on github."
Smart model routing based on task complexity / Intelligent query caching / Async request batching / Drop-in proxy deployment / Works with Claude and OpenAI / Open source, these three sections do 80% of the work. Description captures the founder story + problem + solution. Use Cases targets your buyer. Features show technical depth
AI startups bleeding money on inference costs. Teams using Claude/OpenAI at scale. Any company paying $1000+/month on LLM APIs and not optimizing.

shipping Throttle today. spent the last few months building this because teams are getting destroyed by LLM inference costs. the problem is real: you're paying for routes that don't need your best model, you're recomputing the same queries, your batching sucks. we cut our own spend from 8k to 2.4k just by being smart about it. open sourced it because if you're building with Claude or OpenAI at scale, you probably need this. grab it on github, test it on your actual traffic. would love to hear what breaks
The routing piece is the interesting part. How does Throttle decide a request is "low stakes" enough for a cheaper model? Is it a classifier on the prompt, rules per endpoint, or something you configure? I'd also like to see per-route cost and quality numbers in a dashboard before trusting it in production.
Going from $8k to $2.4k a month on your own spend is a pretty convincing proof point. How does the router decide when a request is simple enough for a cheaper model, and have you seen cases where it downgraded something it shouldn't have? Also curious whether the cache handles near-duplicate prompts or only exact matches.
Routing simple requests to cheaper models while caching repeated queries is a practical way to cut spend, and the drop-in proxy setup means teams don't have to touch app code. I'm curious how you decide when a task is 'simple enough' to downgrade, and whether that threshold can be tuned per endpoint. Seems especially useful for startups with high-volume Claude/OpenAI usage.
Dropping in as a proxy between the app and the Claude/OpenAI APIs with no code changes is a very low-friction way to adopt this, and combining model routing with query caching targets a real cost problem. How do you decide when a request is simple enough for a cheaper model, and can teams set their own routing rules?
Caching repeated queries alongside model routing is a sensible pairing, since those two cut cost without touching application code. How do you decide when a cached answer is stale, for example if a system prompt or the underlying model version changes? A per-route cache expiry setting would be a useful addition.

shipping Throttle today. spent the last few months building this because teams are getting destroyed by LLM inference costs. the problem is real: you're paying for routes that don't need your best model, you're recomputing the same queries, your batching sucks. we cut our own spend from 8k to 2.4k just by being smart about it. open sourced it because if you're building with Claude or OpenAI at scale, you probably need this. grab it on github, test it on your actual traffic. would love to hear what breaks
The routing piece is the interesting part. How does Throttle decide a request is "low stakes" enough for a cheaper model? Is it a classifier on the prompt, rules per endpoint, or something you configure? I'd also like to see per-route cost and quality numbers in a dashboard before trusting it in production.
Going from $8k to $2.4k a month on your own spend is a pretty convincing proof point. How does the router decide when a request is simple enough for a cheaper model, and have you seen cases where it downgraded something it shouldn't have? Also curious whether the cache handles near-duplicate prompts or only exact matches.
Routing simple requests to cheaper models while caching repeated queries is a practical way to cut spend, and the drop-in proxy setup means teams don't have to touch app code. I'm curious how you decide when a task is 'simple enough' to downgrade, and whether that threshold can be tuned per endpoint. Seems especially useful for startups with high-volume Claude/OpenAI usage.
Dropping in as a proxy between the app and the Claude/OpenAI APIs with no code changes is a very low-friction way to adopt this, and combining model routing with query caching targets a real cost problem. How do you decide when a request is simple enough for a cheaper model, and can teams set their own routing rules?
Caching repeated queries alongside model routing is a sensible pairing, since those two cut cost without touching application code. How do you decide when a cached answer is stale, for example if a system prompt or the underlying model version changes? A per-route cache expiry setting would be a useful addition.
Find your next favorite product or submit your own. Made by @FalakDigital.
Copyright ©2026. All Rights Reserved