Proof your AI spend went down — and your quality didn't.
Joule sits between your application and your model provider. It sends each request to the cheapest model that can actually handle it, checks the cheap answer held up, and meters what every call cost you — in dollars, in energy, and in carbon.
One line changes in your code — your base_url. Free while we're in design-partner phase.
Plainly: it buys the same work
from a cheaper shelf, then checks.
You change one line
Point your existing OpenAI-compatible client at Joule instead of your provider. Nothing else in your application changes — same requests, same responses, same SDK.
Joule picks the cheaper model
Most requests don't need your most expensive model. Joule reads each one and sends the simple ones somewhere cheaper — and caches the repeats, which costs nothing at all.
Then it proves it held up
A sample of the cheap answers is re-checked in the background, and the result becomes a statistical bound on how often a cheap answer was not good enough. Savings are never shown without it.
// your existing code — one line changes const client = new OpenAI({ baseURL: "https://your-joule-instance/v1", // ← this one apiKey: "jk_live_…", });
Most tools in this category open with a savings percentage. We're not going to, because an honest one doesn't exist in the abstract — it depends entirely on which two models you're comparing, and the gap between model tiers has narrowed.
What we'll show you instead is what your workspace saved, measured against the pair you actually configured, net of what verification cost to run — and never without the quality figure beside it. If we won't quote a number we can't stand behind on a landing page, you can reason about what we do with the numbers on your invoice.
Four commitments, each
with the limit that qualifies it.
Anyone can claim the first half. The second half is the part that's hard to fake, so it's the part we lead with.
Honesty is the product
Cost is measured from real token counts at a dated, sourced rate. Energy is modelled. Carbon is energy times grid intensity. Every figure says which of those it is, wherever it appears — and a model we have no rate for reports as unpriced rather than as zero or as somebody else's price.
Savings you can defend
Routing to a cheaper model is a commodity — several tools do it, some free. Proving the cheap answer was good enough is not. A sample of routed traffic is verified off the serving path, and the result is a distribution-free risk bound that decides whether the cheap route stays open.
Your data can stay where it is
Joule is a single service you can run yourself, in your own country, on your own infrastructure. Prompts and responses are not stored by default. Every workspace uses its own provider key, and isolation is enforced in the application and again by the database.
The carbon actually gets counted
Every call carries an energy and CO₂ figure, weighted toward the tokens generated because that is where inference energy goes. It is costed against the grid of the region your provider runs inference in — not your own country, because the electricity is burned in their datacentre, not your office.
Are you running managed
model routing on Azure?
If you aren’t, skip to the next section. If you are, you picked up an obligation along with it — and it’s worth being clear about whose it is.
Managed routing is good, and it is getting better. Microsoft’s model router is a trained model that chooses a model per request behind a single deployment, with routing modes, a configurable model subset and deployment policy attached. We are not competing with it, and a proxy is not a substitute for it. If it serves your workload, use it.
What it cannot do is tell you whether it was the right choice for your traffic. Microsoft’s documentation is direct about that: it states evaluation remains important, and asks you to compare model router against your current baseline before you send it production traffic. The evaluation toolkit its docs point to is more specific still — a separate, more capable judge model reads both answers; every comparison is run twice with the responses swapped, so the judge cannot simply favour whichever one it saw first; where the two orderings disagree the result is recorded as a tie rather than a winner; and its own sample-size guidance treats fewer than thirty prompts as directional only, wanting a hundred or more from your own workload before it calls a comparison reliable.
That is a real piece of work, and it does not stay done. Microsoft asks you to repeat it when the traffic mix, the routing mode, the model subset, the supported models, your application or the pricing changes — and the current router version is updated in place as new models are added, so the pool underneath you can change without the version identifier moving. Evaluation is a standing obligation, discharged by hand, against a prompt set somebody has to keep representative.
Joule takes that same discipline — a baseline, a judge that never sees the answers in a fixed order, a sample large enough to mean something — and runs it continuously against live traffic rather than periodically against a curated set, with the sample size and the significance level reported beside the result. That is the whole of what we do differently. The routing underneath it is a commodity, and we say so on the rest of this page.
Our guarantee is marginal. It holds across the population of sampled requests. It is not a statement about any individual answer, it will never tell you a particular response was wrong, and it does not catch a mistake a router made on one request.
And “acceptable” means acceptable as labelled by an LLM judge panel, not by a human reviewer — scored against a reference answer, with the order randomised and samples dropped where the panel disagrees with itself. It is still a model judging a model, and no human-labelled ground truth exists in the system. Microsoft says the same of automated scores in its own guidance: they are estimates, and qualified reviewers should still inspect high-impact results. We agree — and we would rather you heard it from us than found it later.
Check it yourself Microsoft’s guidance on evaluating model router and the methodology of its evaluation toolkit are both Microsoft’s own, and neither mentions us. Joule is not affiliated with, integrated with, certified by or endorsed by Microsoft or Azure, and today Joule sits in front of OpenAI-compatible endpoints rather than an Azure model router deployment. Microsoft and Azure are their trade marks, named here in text only.
If that gap is one you recognise, it is exactly the conversation we want to have — become a design partner.
We're onboarding a small number of design partners.
Joule works today and is in active development. What it hasn't had yet is enough real, varied production traffic to sharpen the parts that only real traffic reveals. That's the trade on offer, and it's a genuine one in both directions.
What you get
- Free while we're in design-partner phase. Not free forever, and we won't invent a future price for you today.
- A direct line to the person building it. Not a support tier — one of two founders, personally.
- Your priorities shape the roadmap while there is still enough slack in it for that to mean something.
- Run it yourself if you'd rather. Self-hosted and in-country deployment are supported paths, not a future promise.
What we ask
- Real traffic through the proxy — even a modest, unglamorous slice of it.
- Honest feedback, particularly about the things that are wrong or missing.
- A conversation now and then. No committee, no procurement cycle, no SLA to negotiate.
- Patience with the edges. We'll tell you where they are before you find them.
Signing up is open — no invite code, no waitlist, no access gate. You can have a workspace running before you talk to anyone.
Talk to a person,
not a contact form.
If you're weighing this up, the fastest route is a direct message. Technical questions get a technical answer — including the ones about what Joule doesn't do yet.