7 ms·
Show HN: Ratel, give agents unlimited tools and skills without context bloat
Hi HN! We're Giacomo and Roberto, authors of Ratel (https://github.com/ratel-ai/ratel https://github.com/ratel-ai/ratel)
We used to help SaaS companies build agents on top of their products. Whenever we wanted to expand the agents’ complexity/scope, by adding more and more tools and instructions, we always run in the same issue: context bloat, with frequent hallucinations and sky high token bills. So we started constantly engineering the agents, dynamically loading tools, splitting them into subagents, inventing our own way to support skills
And that's exactly when we started building Ratel: a library to let your agent keep its full catalog of tools and skills, but progressively disclosing only the few that actually matter for each turn. Now you can grow your agent's capabilities without breaking it or taking out a loan for it
People are already using it in production, with a user cutting their token cost up to 81% in the first month without compromising the accuracy
We support both keyword and semantic retrieval, all in-process and without any additional infra. Open source, framework-agnostic, exposes OpenTelemetry metrics, available for Typescript and Python
Benchmarks: https://benchmark.ratel.sh https://benchmark.ratel.sh
Some cool things we did with this:
• One team's agent had up to 300+ tools dynamically loaded into context. Ratel cut their token cost 81% in month one.
• Another team split into several subagents instead, one agent per task. It worked, until the swarm got slow and expensive. We fixed this with our skills.
We're both here all day. Tear it apart, especially if you're an AI or SWE running agents in production
- vinci00 2mo agoIsn't this just RAG for tools? Also, MCP already has tool search, how is this useful in that case?
- jack1689 2mo agoHey, yes it's on the same family for sure! The difference is that it works with anything, not just MCPs, and it runs in-process without any additional infra (which usually isn't the case for other RAG solutions). Happy to hear your feedback if you try it out :)
- novellogic 2mo ago[flagged]
- tomhow 2mo ago[stub for offtopicness]
- KristianLentino 2mo agoBenchmarks looks very promising! I’ll try to test this new tool in the next few days thanks for sharing!
- rstagi 2mo agoThank you mate! Please share your feedback :)
- iustinai 2mo agoman this could save me so much money lol
- jack1689 2mo agoWould love to hear your feedback if you can try it. We initially rolled out BM25 for tool search as it worked best for us internally. Recently rolled out also embeddings and an hybrid option that is being tested in production as we speak
- atenareply 2mo agoThis looks so nice!
- atenareply 2mo agoI see you built the core in Rust with bindings to TS/Python. y?
- jack1689 2mo agoYes! I should have mentioned in the original post. It was actually built in Typescript at first, but then the performance were not good enough for production use cases. With Rust the footprint was way lower, and we managed tear the latency down from 200ms to 20ms for a single search
- simonbrightman 2mo ago[flagged]
- implexa_founder 2mo ago[flagged]
- maxdo 2mo agoI vibe coded such a thing in 15 mins. I think building it , will be better. Custom solution can have any memory you dream of integrations, it can recommend skills with some nesting or not the call can combine all instructions or not if you want or structure it in custom objects. Also if you go custom it can be part of your release process. Usually i'm pro libraries, but in this case hard to imagine going with such tool. Connecting it properly to self learning loops might be a challenge too.
- jack1689 2mo agothank you for your feedback! I see your point, and we keep asking this thing ourselves. If this was just some sort of static retrieval, I'd agree with you. But the truth is that we're tackling something more fundamental: improving and evolving it over time, through adaptive scoring and self-improvement. Also being able of vibe coding it doesn't mean you should: delegating this to a library means delegating the maintenance of this piece of code (which is not trivial, in our opinion). Anyway, we'll talk about how we tackle self learning loops with it, so stay tuned! :) What kind of agent are you building btw?