HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
fluxninja
aperture
Go2022–2024
fluxninja / aperture

aperture

Rate limiting, caching, and request prioritization for modern workloads

4Distinct people
32Mentions
0Explicit recommenders
732GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Rate limiting, caching, and request prioritization for modern workloads

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:03:16 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by month32 dated mentions

Observed mentions: 2022-09-13 19:35:28 UTC to 2024-03-01 01:03:15 UTC.

02462022-09-01 00:00:00 UTC to 2022-10-01 00:00:00 UTC (exclusive): 3 mentions; 3 submissions, 0 commentsSep 20222022-10-01 00:00:00 UTC to 2022-11-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2022-11-01 00:00:00 UTC to 2022-12-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-12-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2023-01-01 00:00:00 UTC to 2023-02-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-02-01 00:00:00 UTC to 2023-03-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023-03-01 00:00:00 UTC to 2023-04-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2023-04-01 00:00:00 UTC to 2023-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-05-01 00:00:00 UTC to 2023-06-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-06-01 00:00:00 UTC to 2023-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsJun 20232023-07-01 00:00:00 UTC to 2023-08-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2023-08-01 00:00:00 UTC to 2023-09-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2023-09-01 00:00:00 UTC to 2023-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-01 00:00:00 UTC to 2023-11-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-11-01 00:00:00 UTC to 2023-12-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-12-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2024-02-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2024-02-01 00:00:00 UTC to 2024-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-01 00:00:00 UTC to 2024-04-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsMar 2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Sep 20222022-09-01 00:00:00 UTC2022-10-01 00:00:00 UTC330
Oct 20222022-10-01 00:00:00 UTC2022-11-01 00:00:00 UTC303
Nov 20222022-11-01 00:00:00 UTC2022-12-01 00:00:00 UTC000
Dec 20222022-12-01 00:00:00 UTC2023-01-01 00:00:00 UTC110
Jan 20232023-01-01 00:00:00 UTC2023-02-01 00:00:00 UTC101
Feb 20232023-02-01 00:00:00 UTC2023-03-01 00:00:00 UTC202
Mar 20232023-03-01 00:00:00 UTC2023-04-01 00:00:00 UTC615
Apr 20232023-04-01 00:00:00 UTC2023-05-01 00:00:00 UTC000
May 20232023-05-01 00:00:00 UTC2023-06-01 00:00:00 UTC000
Jun 20232023-06-01 00:00:00 UTC2023-07-01 00:00:00 UTC000
Jul 20232023-07-01 00:00:00 UTC2023-08-01 00:00:00 UTC505
Aug 20232023-08-01 00:00:00 UTC2023-09-01 00:00:00 UTC404
Sep 20232023-09-01 00:00:00 UTC2023-10-01 00:00:00 UTC000
Oct 20232023-10-01 00:00:00 UTC2023-11-01 00:00:00 UTC000
Nov 20232023-11-01 00:00:00 UTC2023-12-01 00:00:00 UTC000
Dec 20232023-12-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
Jan 20242024-01-01 00:00:00 UTC2024-02-01 00:00:00 UTC615
Feb 20242024-02-01 00:00:00 UTC2024-03-01 00:00:00 UTC000
Mar 20242024-03-01 00:00:00 UTC2024-04-01 00:00:00 UTC101

What Hacker News says

32 sources
gillh·Jan 30, 2024Submission

Show HN: Rate limiting, caching and request prioritization for AI apps

Generative AI applications pose a unique challenge in production. They are computationally intensive and orders of magnitude slower than traditional data-intensive applications. Scaling these applications is further complicated by expensive hardware requirements and GPU shortages. Consequently, developers are scrambling to implement home-grown caching and rate-limiting solutions, which are error-prone and difficult to get right. FluxNinja Aperture delivers a production-grade experience with a purpose-built load management platform that provides rate & concurrency limiting, caching, and request prioritization for generative AI applications. Developers can wrap their workloads with Aperture SDKs and define load management policies on business attributes such as user tier, request type, priority, etc. Features: - Global Rate Limiting: Preven
Read the rest
t abuse by filtering traffic based on user, service, and tier levels, among other granular options. - Request Prioritization: Boost application performance by prioritizing critical requests while queueing less urgent ones. - Serverless Caching: Reduce costs and alleviate system load by caching frequently requested data. - Manage External Limits: Manage API rate limits from third parties (OpenAI, GitHub, Shopify, etc.) with client-side rate limits and prioritization. SDKs are available in Typescript, Python, Go, etc. The solution also integrates with API gateways and service meshes with an in-cluster deployment option. We'd love to hear your feedback! Links: Sign up for the cloud service: https://www.fluxninja.com Open-source: https://github.com/fluxninja/aperture Use-cases: Manage OpenAI rate limits with request prioritization: https://blog.fluxninja.com/blog/coderabbit-openai-rate-limit... Building cost-effective generative AI applications with rate limiting and caching: https://blog.fluxninja.com/blog/coderabbit-cost-effective-ge...
10 points · Open discussion
I agree that queues can cause problems especially when misconfigured. But some amount of queuing is necessary, to absorb short spikes in demand vs capacity. Also, queues can be helpful to re-order requests based on criticality which won't be possible with zero queue size - in which case we have to immediately drop a request or admit it without considering it's priority. I think it is beneficial to re-think how we tune queues. Instead of setting a queue size, we should be tuning the max permissible latency in the queue which is what a request timeout actually is. That way, you stay within the acceptable response time SLA while keeping only the serve-able requests in the queue. Aperture, an open-source load management platform took this approach. Each request specifies a timeout for which it is willing to stay in the queue. And weighted fai
Read the rest
r queuing scheduler then allocates the capacity (a request quota or max number of in-flight requests) based on the priority and tokens (request heaviness) of each request. Read more about the WFQ scheduler in Aperture: https://docs.fluxninja.com/concepts/scheduler Link to Aperture's GitHub: https://github.com/fluxninja/aperture Would love to hear your thoughts on our approach!
In Queues don't fix overload (2014)
Aperture (https://github.com/fluxninja/aperture) takes a slightly opinionated take on queue size. Instead of defining queue sizes, you put a timeout on each request which is the amount of time the request is willing to wait in the queue. Then we run a weighted fair queuing algorithm that ensures relative allocation across workloads, e.g. 90% capacity for critical requests. But the capacity is allowed to burst when there is low demand.
In Queues don't fix overload (2014)
I agree that fair queueing is a good solution to this problem! A request scheduler based on weighted fair queuing is also central to Aperture, an open-source load management system my team has been building for the last 2 years. Priorities and tokens (request weights) can be provided to Aperture when scheduling requests. It runs weighted fair queuing that ensures relative allocation of capacity based on the relative values of (token/priorities). It also ensures fair allocation of capacity across users within the same priority class so that no single user can starve others. Would love to hear your thoughts about this project: https://github.com/fluxninja/aperture
In Queues don't fix overload (2014)
We have been building a platform called Aperture in the open-source trying to solve this very problem. Our approach is to let the developer decide how long they want to wait in the queue using a timeout parameter. If timeout is hit, they may re-try with exponential backoff or load shed. While in the queue, requests get prioritized based on a weighted fair queuing algorithm. If there is tiering in the app, there could be a policy that can allocate majority of the capacity to paid vs free customer tiers. But this allocation is not really static, if there is free capacity available in the system then the free customer tier can take all of it. This is just like how CPU time is allocated by Linux based on nice values, even low priority processes are allowed to take up all the CPU time when demand is low. Apart from relative allocation across u
Read the rest
ser tiers, Aperture's request scheduler can also ensure fairness across individual users within each tier to make sure no single user is hogging up all of the server capacity. The demand and capacity is determined based on a request rate quota or the maximum number of in-flight requests. Would love the community here to check us out on GitHub and provide feedback: https://github.com/fluxninja/aperture
In Queues don't fix overload (2014)
Anyone looking to build a practical solution that involves weighted-fair queueing for request prioritization and load shedding should check out - https://github.com/fluxninja/aperture The overload problem is quite common in generative AI apps, necessitating a sophisticated approach. Even when using external models (e.g. by OpenAI), the developers have to deal with overloads in the form of service rate limits imposed by those providers. Here is a blog post that shares how Aperture helps manage OpenAI gpt-4 overload with WFQ scheduling - https://blog.fluxninja.com/blog/coderabbit-openai-rate-limit...
In Queues don't fix overload (2014)
Fascinating historical insight! We have a team of 20 engineers currently working on solving this problem in the context of API requests and service chains. Do you know JMS @ Penn? Asking because he did some work in ATM networks, QoS etc. He is advising us on the project. This is the link to the project: https://github.com/fluxninja/aperture We built a weighted-fair queueing scheduler as well - https://docs.fluxninja.com/concepts/scheduler/load-scheduler
In Graceful behavior at capacity
Very interesting blog post! Our team has been working intensively in this area for the last couple of years - flow control, load shedding, controllability (PID control), and so on. We have open-sourced our work at - https://github.com/fluxninja/aperture We also did a Twitter Spaces discussion with Kelsey earlier today - https://twitter.com/kelseyhightower/status/16893552848026296... We would love feedback from folks reading this blog post! Disclaimer: I am one of the co-authors of the Aperture project. There are several interesting ideas we have built into this project, and I will be happy to dive into the technical details as well.
In Graceful behavior at capacity
Very interesting blog post! Our team has been working intensively in this area for the last couple of years - flow control, load shedding, controllability (PID control), and so on. We have open-sourced our work at - https://github.com/fluxninja/aperture We would love feedback from folks reading this blog post! Disclaimer: I am one of the co-authors of the Aperture project. There are several interesting ideas we have built into this project and I will be happy to dive into the technical details as well.
In Graceful behavior at capacity
At the time of writing, the first sample image on that page is this: https://coderabbit.ai/assets/section-1-f9a48066.png which recommends adding a "maxIterations" counter to the "for len(executedComponents) ..." loop here: https://github.com/fluxninja/aperture/blob/26e00ea818c7c28da... HOWEVER - the review has failed to notice the logic using "numExecutedBefore" (around line 377) that already prevents the specific bug it is suggesting a fix for - the suggested change decrements "maxIterations" inside the "for ... range circuit.components {" loop which means it isn't counting iterations, it's counting components This kind of suggestion is particularly nasty because it's unlikely that the test suite populates enough components to hit "maxIterations" - so an inattentive reader could accept it, get a green build, and then deploy a production
Read the rest
bug!
In Show HN: Review GitHub PRs with AI/LLMs

Showing the 15 most recent of 32 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.