One gateway. Six products behind it.
Portkey routes and logs your LLM calls. EvalGuard does the gateway too — across 90+ providers — and adds an LLM firewall, red team (300+ plugins), evals (200+ scorers), and compliance on the same traffic. Import your history first.
Same gateway, more surface
What you keep — and what you gain
- ✓ Gateway routing across LLM providers
- ✓ Full request / response logging
- ✓ Token usage — prompt / completion / total
- ✓ Cost tracking per model, per call
- ✓ Response caching (semantic + exact)
- ✓ BYOK virtual keys + per-key rate limiting
- + Real-time LLM firewall (input + output)
- + 300+ red-team plugins with threat-feed sync
- + 200+ eval scorers (LLM-as-judge, pairwise, rubric)
- + Prompt IDE + optimizer across 90+ providers
- + Drift detection + auto-reeval on regression
- + 50 compliance frameworks + tamper-evident audit log
Backfill your history
Bring your Portkey logs along
Export your analytics logs from Portkey (the admin /analytics/logs data-plane API, or a dashboard download), then convert them with the EvalGuard CLI. No record is dropped — anything the importer can't parse is surfaced as an error — and re-running the same import never double-counts, because spans use a stable content hash.
Prints an import summary (spans imported / duplicates skipped / parse errors) and writes the neutral spans to spans.json. This is a trace / observability import — it moves your gateway request history, not your Portkey configs or routing rules.
| What imports | Where it lands |
|---|---|
| Gateway request logs | One EvalGuard span each, grouped by trace id |
| Model + provider | span.model / span.provider |
| Request / response body | span.input / span.output |
| Token usage (prompt / completion / total) | span.promptTokens / completionTokens / totalTokens |
| Cost | span.costUsd |
| Latency | span.durationMs |
| Cache status + HTTP status + config / virtual-key ids | span.attributes (portkey.* namespace) |
Non-2xx responses are recorded with status: error so your failure history survives the move. Everything else the importer recognizes is preserved verbatim under span.attributes.
One platform, one bill
Route once. Secure, eval, optimize — everywhere.
The gateway is the hook. The platform is why you stay.
Start free