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.1

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.1
File Size Uploaded Provenance Actions
ekte-0.33.1.tar.gz 2.0 MB With provenance Details for ekte-0.33.1.tar.gz

Built distribution (wheel)

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

Total release size: 3.4 MB

Release files / ekte-0.33.1.tar.gz

Download URL ekte-0.33.1.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
1038f0e21b9e8c1f91a0d99c7926cd3bd1ab53b127f524c3b8b39f2bb0eb8e4b
BLAKE2b-256 checksum
How to use checksums
517f7c3256832a2701a12a5d2595206eaea9eba3bf2b385bee006ea2dfa788c7
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 2, 2026.

Transparency log

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

Download URL ekte-0.33.1-py3-none-any.whl
Size 1.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
82912e093e312de32f43cc823a55e4cf82af02c6f85e199106bad2802904d2e5
BLAKE2b-256 checksum
How to use checksums
6395ad5c940cd3aabbdb2dafe307185bc8ad947da9a2eb5f54c71c13dcc0ba4a
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 2, 2026.

Transparency log

Security for ekte 0.33.1

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.1.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 2, 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