byok · multi-tenant · self-host

Every model.
Your keys.
One dashboard.

A bring-your-own-key gateway distilled from openclaw & hermes. Sign in with OpenAI or OpenRouter — or paste any key — then call any model.

OpenAI · byokAnthropic · byokGoogle · byokOpenRouter · byokGroq · byokxAI · byokDeepSeek · byokMistral · byokMoonshot · byokOpenAI · byokAnthropic · byokGoogle · byokOpenRouter · byokGroq · byokxAI · byokDeepSeek · byokMistral · byokMoonshot · byok
what you get
01

Sign in, don't paste

OAuth with OpenAI (ChatGPT / Codex) or OpenRouter — no key to copy. Or paste one if you prefer.

02

One call, any provider

resolveModel('provider/model') → a ready client. Nine providers, one interface, host-gated keys.

03

Catalog that updates itself

Context windows, pricing and capabilities pulled live from models.dev, cached with an offline fallback.

04

Per-user, encrypted

Every tenant brings their own credentials. Stored AES-256-GCM at rest, keyed to your own auth.

05

Ships as a library

@rahmanef/models — zero-dependency ESM core, a CLI, and an injectable CredentialStore for any backend.

06

Distilled, not guessed

The catalog, host-gating and OAuth flows are lifted from how openclaw & hermes actually do it.

how it works

Three steps to any model.

01 / sign in

Make an account

Email + password. Your keys are scoped to you and no one else.

02 / connect

Add a provider

Sign in with OpenAI or OpenRouter over OAuth, or paste an API key.

03 / use

Call any model

Pick from the live catalog and chat — the right key is routed for you.

also a library

Drop it into any project.

The dashboard is just one consumer. The core is a zero-dependency package with a pluggable credential store — env, file, or your own database.

$ npm i @rahmanef/models

import { resolveModel, chat } from '@rahmanef/models'

const m = await resolveModel('anthropic/claude-opus-4-8', {
  tenantId, store, // per-user · encrypted · host-gated
})
const res = await chat(m, { messages })