One number from each provider. Now you see where it went.
The invoice says nothing about which service spent it, which model, or which customer it was for. Alye splits every dollar by service, model and customer.
Prices come from a versioned price list, with regional and marketplace prices for Azure, Vertex AI and Bedrock, and your own prices for fine-tunes.
Priced per model and region, from a versioned price list.
See the calls that fail quietly.
A rate limit at 2 a.m. A retry that hides a timeout. Every request becomes a trace you can open step by step, with the model calls, retries and errors inside it.
Two lines in each service.
Calls through the OpenAI, Anthropic and Google GenAI clients are recorded from then on. They go out in batches in the background, so your requests never wait.
Already on OpenTelemetry? Point your exporter at Alye instead.
# pip install alye import alye alye.init(service="support-reply") // npm install alye alye.init({ service: "support-reply" }); const openai = alye.wrap(new OpenAI());
Hear about it before your users do.
Spend limits, monthly forecasts, error rates, slow calls and services that stop reporting, checked every minute. Sent to email, Slack or Microsoft Teams.
- support-reply failed 7.4% of callsSlack · Last 15 minutes · over the 2% limitFiring
- kb-ingest has not reported for 12 minutesTeams · Heartbeat missingFiring
- This month is on track for $19,790Email · Budget $20,000Resolved
Know what each customer costs you.
Tag each request with your customer ID to see spend per customer, set monthly budgets and open any customer's traces. Optional: everything works per service without it.
| Customer | Spend | Budget |
|---|---|---|
| northwind | $2,410 | $3,000 |
| contoso | $1,190 | $2,000 |
| fabrikam | $640 | $1,500 |
Without reading your prompts.
Prompts and responses aren't sent unless you turn it on. When you do, emails, phone numbers, card numbers and keys are masked inside your service before anything leaves it.
Hi, I'm locked out. Reach me at [EMAIL] or [PHONE]. My card ending [CARD] was charged twice.
Masked inside your service by the SDK, before anything is sent. Off by default.