Skip to main content

ekte — LLM relay reality check

🇬🇧 English · 🇨🇳 中文 · 🇫🇷 Français · 🇪🇸 Español · 🇵🇹 Português · 🇮🇹 Italiano · 🇩🇪 Deutsch · 🇳🇴 Norsk

CI License: Apache-2.0 Python 3.11+

ekte is a local-first tool that audits whether an API relay (reseller / proxy) actually serves the model it claims to — or quietly substitutes a cheaper one, truncates your context window, fakes streaming, or inflates token billing. In short: do you get what you paid for? It speaks the OpenAI Chat Completions API, the Anthropic Messages API and the OpenAI Responses API (/v1/responses) — auto-detected, or forced with --api openai|anthropic|responses.

You point it at a relay endpoint and the model it claims to serve; ekte runs a battery of black-box probes, compares what it observes with a bundled knowledge base of 130 model profiles from 7 providers, and gives a clear, evidence-backed verdict — on the command line, in a local web UI, or as JSON for another tool or LLM.

ekte reports black-box evidence of divergence and risk, not cryptographic proof of fraud. See Responsible use.

Why

The relay-key market is full of "GPT-4o for 1/10th the price" offers. Many are honest. Some are not — and the dishonest ones are hard to catch by eye:

  • You ask for gpt-4o; you're quietly served gpt-4o-mini or an open model.
  • The relay advertises a 1M-token context but silently truncates to 32K.
  • "Streaming" is the full response buffered and re-chunked, with no latency win.
  • Reported usage tokens are inflated, so your balance burns faster than it should.
  • A model that should support tool calling / JSON mode quietly doesn't.

ekte turns "this feels off" into a reproducible report.

Install

Requires Python 3.11+ on Linux, macOS or Windows.

pip install 'ekte[web]'          # or: uv tool install 'ekte[web]'

The web extra adds the local web UI; leave it out for the command line only. From source, with uv or in Docker: Install.

Quick start

export EKTE_API_KEY=sk-your-relay-key

# audit a relay against the model it claims to serve
ekte check --base-url https://relay.example.com/v1 --api-key env:EKTE_API_KEY \
  --model gpt-4o --suite standard

# the strongest check: compare against a trusted baseline of the same model
export OPENAI_API_KEY=sk-your-openai-key
ekte compare \
  --target-base-url https://relay.example.com/v1 --target-api-key env:EKTE_API_KEY --target-model gpt-4o \
  --baseline-base-url https://api.openai.com/v1 --baseline-api-key env:OPENAI_API_KEY --baseline-model gpt-4o

# or point and click: the local web UI
ekte serve

More examples, config files and use from scripts or LLM agents: Quick start. The web UI: Web UI.

What it checks

ekte scores ten dimensions. The four core dimensions — model identity, context window, capability claims and billing & usage — most directly reveal a bait-and-switch. The names are the ones the web UI and reports use.

Dimension Id What it catches
Model identity model_identity Silent model downgrade or substitution
Context window context_window Silent context truncation and lost-in-the-middle
Capability claims capability Tool calling, JSON mode, max output or vision that isn't delivered
Protocol compliance protocol Request parameters and response attributes that are dropped or ignored
Billing & usage billing Inflated or missing token usage
Connectivity connectivity Endpoint reachability and the advertised model list
Streaming authenticity streaming Fake streaming (buffer-then-chunk)
Concurrency reliability reliability Failures and slowdowns under concurrent load
Transport security security Plain HTTP, secret echo, injected system prompts, tampering
Performance performance How consistent latency, time to first token and throughput are

How every check works and how the verdict is reached: Methodology.

Documentation

User guide
Install pip, uv, from source, optional extras
Quick start First audits, config files, use by scripts and LLM agents
Web UI Pages, background audits, analytics, languages
Suites and compare mode Suites, custom suite, trusted baseline, LLM judge
Performance The performance section, the probe and request timeouts
Monitoring Scheduled re-audits, webhook alerts, API key storage
Embedding, rerank, image and audio Audits of endpoints that are not chat
Knowledge base Model profiles and adding your own
Reports Report formats and contents
Privacy and local data What stays on your machine; responsible use
GitHub Action Gate a CI workflow on a relay audit
Docker Run the web UI in a container
Methodology Every check, its scoring scale and its caveats
Coming from zing What changes for an existing zing install
Reference (English)
Command line Every command and option, and the exit codes
Report and webhook schemas The JSON formats and their schema_version
Stability and compatibility What semver protects, deprecation, supported Python and systems
Changelog What changed in each release

Contributing: Contributing guide and Developer guide (English). Security issues: Security policy.

License

Apache-2.0

Metadata

Release files for ekte 0.33.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ekte 0.33.0
File Size Uploaded Provenance Actions
ekte-0.33.0.tar.gz 2.0 MB With provenance Details for ekte-0.33.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ekte 0.33.0
File Interpreter ABI Platform Actions
ekte-0.33.0-py3-none-any.whl Python 3 none any Details for ekte-0.33.0-py3-none-any.whl

Total release size: 3.4 MB

Release files / ekte-0.33.0.tar.gz

Download URL ekte-0.33.0.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
e95f8430289baa8001526de5a46ac90817bade64ea593ed240f737cda81d30a4
BLAKE2b-256 checksum
How to use checksums
8fd275bdcbdb26db75c5dfef865777f538a014fccafa4f059cdebf50c5a2f5d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / ekte-0.33.0-py3-none-any.whl

Download URL ekte-0.33.0-py3-none-any.whl
Size 1.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
c8b4153905e1bf66446b39b6a49c1d29beefba9a312537bdd4bb928389064514
BLAKE2b-256 checksum
How to use checksums
4240e15341eace71fb5615039b01d0c43bcd399e5780d3298ea2758d095f819d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Security for ekte 0.33.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ekte-0.33.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page