Local model

Enter your connection settings. Saving sends no requests.

Model verification

Test with your key. Share what you learn.

SELECTED MODEL

Loading catalog…

Provider docs ↗

Connection

Calculating estimated cost…

Use a key for the selected provider. A small inference call may use your credits.

Request goes directly to

Speed benchmark

Prompt and output limit

The standard benchmark uses this fixed counting prompt and 128 output tokens. Custom settings still verify availability but are excluded from the standard speed median. Speed is estimated from two non-streaming calls; actual time to first token is not measured.

Copy this API call

This matches the selected endpoint, model, prompt, and output limit. Examples run in Node.js, Python, or your terminal and use the API_KEY environment variable. Your entered key is never included.


        

SDK calls return an OpenAI-compatible completion; cURL returns the provider's native response. Making this request may use credits; displaying or copying it makes no request.

Earn a Model Verifier badge. A successful hosted-model call plus a published GitHub report earns your badge.

No call has been made.

How sharing works

After you submit your GitHub issue, we automatically check whether its reports are live on this site. “Refresh report status” checks again; it never calls models or spends API credits.

BYOK, WITHOUT THE UPKEEP

BYOK in
a few lines.
Keep it current.

Add BYOK with a model list and one simple call.
Keep your model choices fresh: update the catalog and ship a release. No model-list code to rewrite.

TypeScript · JavaScript · Python / MIT licensed

your-app.ts
import * as byokit from
  'byokit/catalog';

const key = process.env.DEEPSEEK_API_KEY;
if (!key) throw new Error('Set DEEPSEEK_API_KEY');
const [model] = byokit.getModels(byokit.DEFAULT, {
  providerIds: byokit.exact(byokit.ProviderId.DeepSeek),
  sort: byokit.ModelSort.PriceAscend,
  limit: 1, local: false,
});
if (!model?.connection) throw new Error('No model');
const result = await byokit.call(
  model, 'Hello', key,
);
console.log(result.choices[0].message.content);
Price and alphabetical sorting. Speed sorting is not implemented.
01 / BYOK IN A FEW LINESYour app supplies the key.
Simple setup model, prompt, API keyFresh catalog no hardcoded model listsYour app owns the credentials

01 / KEY HIGHLIGHTS

Built for BYOK.
Engineered for production.

Set it up once.
Let automated catalog updates and verified tooling handle the rest.

Read the full highlights ↗
01

Discovery + execution in two calls

One simple call to get an up-to-date list of BYOK models, and one simple call to run inference. No provider-specific SDK glue required.

02

Presets, composable matchers & rich filters

Curated presets paired with composable matchers (exact, any, contain, exclude, and, or, xor, not) for modalities, required speciality, model tiers, context, and tag exclusions. Existing array filters remain supported.

03

Regular releases & verification

Automated 12-hour sync and scheduled releases keep catalog choices current, backed by reproducible community inference verification and badges.

04

Credential privacy by default

Built-in calls keep keys in memory and send them directly to the selected endpoint. Custom storage and transport integrations remain under your app’s control.

05

Build-time generation & caching

Generate a smaller static model list for fixed queries. Dynamic queries use a bundled snapshot and deterministic in-memory caching.

06

Pre-flight task & budget fit

Validate token budgets, context limits, features, and modalities before sending tokens or incurring API costs.

07

Complete cross-language parity

Full parity across JavaScript/TypeScript and Python with shared schemas, enums, query outcomes, and budget checking.

02 / PLAYGROUND

Make it your own.

Edit a query. Press Run.
See exactly what byokit returns.

JavaScriptbyokit is already imported
CONSOLE OUTPUT
Your console output will appear here.
⌘ / Ctrl + Enter

Ready.

Runs locally in an isolated sandbox. No API key needed, no provider requests, and no saved code. Supports offline byokit APIs; imports and network access are unavailable. Try a real model call →

03 / TRY IT

A shortlist that fits
your application.

These results come from byokit itself.
Change the list, add a filter, inspect the return.

Loading catalog…
byokit.getModels();
Models matching the current byokit query
Provider / model Context USD / 1M tokens Evidence

DEFAULT shows reviewed recommendations. COMPLETE includes every upstream provider and output modality, including retired and uncertain offerings. Catalog presence does not verify availability or account access. Prices shown are USD per million tokens; media pricing may be unknown.

04 / HOW TO CALL THE API

Get your list.
Then call your model.

Select an offering, provide that provider’s key, and call it. The direct helper reads its endpoint and protocol; reusable clients need both fields explicitly.

Catalog queries run offline. No API key or provider request is needed.

Full instructions in README ↗

Use your existing OpenAI / Anthropic SDK ↗

import * as byokit from 'byokit';

const key = process.env.DEEPSEEK_API_KEY;
if (!key) throw new Error('Set DEEPSEEK_API_KEY');

const [model] = byokit.getModels(byokit.DEFAULT, {
  providerIds: [byokit.ProviderId.DeepSeek],
  local: false,
  limit: 1,
  filters: { callable: true },
});
if (!model?.connection) throw new Error('No matching callable model');

const response = await byokit.call(model, 'Hello!', key);
console.log(response.choices[0].message.content);
RETURN
An array of provider/model metadata.

Install now: npm install byokit · pip install byokit

INTEGRATION CONTRACT

Use the offering.
Keep its protocol.

Copy a runnable example, then preserve these fields when wiring it into your app.

One object or three client fields

Pass the entire model to byokit.call(model, prompt, key). With a BYOKit client, copy connection.baseUrl and connection.protocol, then send apiModelId as the request’s model string. The offering’s id is for selection and records.

Discovery is not a successful call

DEFAULT provides maintained recommendations. COMPLETE includes unsupported, deprecated, and media offerings. callSupport.textGeneration means adapter compatibility; account access, quota, lifecycle, and verification are separate.

Local setup sends no requests

Enter URL, protocol, and the exact served model ID, then choose Use this model. The returned Local entry is ready for call(). Finding models and verifying are explicit actions. Image/audio/video generation and streaming execution are not supported.

The key belongs to the provider

Use the selected providerId’s key, including for resellers. Built-in calls keep it in memory and require HTTPS for authenticated remote servers; loopback HTTP supports local development. Custom storage adapters can persist keys. Python clients block credential serialization.

Complete integration contract and naming reference in README ↗

05 / PRODUCTION OPTIMIZATION

Build-time precompilation.

Pre-evaluate fixed model queries at build time.
Ship only the offerings your application needs.

1

Declare your query

Save from the explorer/playground above via Save config.json, generate with byokit.getConfigJson(), or write byok.config.json:

{
  "providerIds": [
    "anthropic",
    "google",
    "openai",
    "deepseek"
  ],
  "local": false,
  "filters": {
    "includeTags": ["model:flash"]
  }
}
2

Compile once

Evaluate your query at build time:

# Node / TS:
npx byokit build byok.config.json \
  --out src/generated/models.js --compact

# Python:
byokit build byok.config.json \
  --out app/generated_models.py --compact
3

Import the generated list

Pair the generated model list with byokit/client:

// JavaScript / TypeScript:
import { getModels } from './generated/models.js';
import { call } from 'byokit/client';

const model = getModels().find(m =>
  m.providerId === 'google');
if (!model) throw new Error('No Google model');
const key = process.env.GOOGLE_API_KEY;
if (!key) throw new Error('Set GOOGLE_API_KEY');
const result = await call(model, 'Hello', key);

byokit.getModels() queries a bundled snapshot offline. Precompiling a fixed query removes the full catalog and query evaluation from your application’s runtime; generated file size depends on the selected offerings.

06 / TRY A REAL CALL

Your model.
Your settings. Does it work?

Browse the complete list and model tags.
Verify an inference call with your own key.

Test a model with your own key, then share a successful hosted-model report on GitHub. Earn a Model Verifier badge and help keep the catalog useful. Your key goes directly to the provider.

Verify a model · earn a badge ↗