Skip to content
Portkey → EvalGuard

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.

SOC 2 evidence engineISO 42001 mappedEU AI ActGDPR

Same gateway, more surface

What you keep — and what you gain

Keep
  • 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
Gain
  • + 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.

# Convert your Portkey export to neutral-shape spans:
npx @evalguard/cli import:traces --from portkey portkey-export.json --output spans.json

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 importsWhere it lands
Gateway request logsOne EvalGuard span each, grouped by trace id
Model + providerspan.model / span.provider
Request / response bodyspan.input / span.output
Token usage (prompt / completion / total)span.promptTokens / completionTokens / totalTokens
Costspan.costUsd
Latencyspan.durationMs
Cache status + HTTP status + config / virtual-key idsspan.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