Skip to content

Releases: magic3007/omp-model-gateway

v0.4.1

Choose a tag to compare

@magic3007 magic3007 released this 14 Oct 17:55

Changed

  • assets/banner.png re-set with the new name: the wordmark reads omp-model-gateway in Montserrat Bold, the closest match to the original letterforms. The key-and-hexagon artwork, the gap and the gradient underline keep the original proportions — the design is scaled once, so the side margins stay as wide as they were.

v0.4.0

Choose a tag to compare

@magic3007 magic3007 released this 14 Oct 17:55

Now on npm.

Changed

  • Renamed the package, the plugin id and the repository to omp-model-gateway: the npm name omp-gateway belongs to an unrelated project. Install with omp plugin install omp-model-gateway. An install that came from the git URL keeps working, but must move id once: omp plugin uninstall omp-gateway, then install the new one.
  • npm is now the documented install channel; github:magic3007/omp-model-gateway stays supported.
  • Keywords litellm and one-api added, for npm search.

Added

  • .github/workflows/publish.yml: pushing a v* tag runs the typecheck and the tests, then publishes to npm with --provenance.

v0.3.0

Choose a tag to compare

@magic3007 magic3007 released this 14 Oct 16:19

Any gateway, under any name, with the key kept wherever you keep secrets.

Added

  • apiKey is a key reference, resolved by omp exactly like every other config value (resolveConfigValue): an environment variable name (LITELLM_API_KEY), a !command whose stdout is the key (!gpg -q -d ~/.omp/keys/gateway.gpg), or a literal key. The file can name where the secret comes from instead of holding it, so it is safe to track in a dotfiles repository.
  • The login entry accepts a reference as well as a key, resolves it before the model-list probe, and reports how the key was stored.
  • bun run typecheck and bun test (URL, name, model-id and config-parsing helpers), both run by CI on push and pull request.
  • SECURITY.md: what each reference form protects, and how to report a vulnerability privately.

Changed

  • Renamed the repository, package and plugin to omp-gateway (was omp-gateway-login). Uninstall the old id once: omp plugin uninstall omp-gateway-login, then install github:magic3007/omp-gateway.
  • A pasted literal key that an environment variable already holds is stored as that variable's name, and the login output says which one. A literal nothing holds is stored as typed and the login output says so — a secret never reaches the file silently.
  • Docs and prompt examples use vendor-neutral gateway names; the config file (~/.omp/agent/gateways-login.json) and its format are unchanged.
  • Base URLs with a query string or fragment are rejected at login: the derived endpoints would have dropped them silently.

Fixed

  • One malformed row no longer costs every gateway. The file was validated as a whole, so a single bad row made the loader report no gateways at all — and the next login then wrote that empty list back over the file. Rows are now parsed one by one, bad ones are logged and skipped, and the login entry refuses to write while any row is unusable.
  • openai-completions gateways now get the /v1 that wire requires, and anthropic-messages gateways no longer get a doubled /v1 when the stored URL ends in /v1: base URLs are canonicalized to the gateway root and the suffix is added per use.
  • A login name already taken by another provider (a built-in, or a models.yml block) is rejected instead of shadowing it.
  • A second row repeating a gateway name is skipped instead of registering the provider twice.
  • The config file is chmod'ed to 0600 on every write, not only when created.
  • Model discovery failures are logged with the gateway name and endpoint before being rethrown; omp otherwise swallows them and the models just go missing.
  • Typing the name of a variable nothing exports now fails with that diagnosis, instead of the gateway's bare 401 for a key it never had.
  • Non-chat ids with no prefix (tts-1, whisper-1) are filtered out of catalogs.

v0.2.0 — named gateways, many per install

Choose a tag to compare

@magic3007 magic3007 released this 14 Oct 14:16

Any base URL + API key gateway, and as many as you like.

Install

omp plugin install git:https://github.com/magic3007/omp-gateway-login
omp login          # → Custom gateway (name + base URL + API key)
                   #   ① name  ② base URL  ③ API key  ④ extra model ids (optional)

Then allow each name in ~/.omp/agent/config.yml:

enabledModels:
  - mafia/*
  - kafara/*
  - volcengine/*

Highlights

  • The login entry now takes a name; that name is the model prefix (mafia/claude-opus-5-5, volcengine/ark-code-latest).
  • Unlimited gateways per installation, stored in ~/.omp/agent/gateways-login.json (0600) and registered at every start.
  • Extra model ids cover plan-only aliases a gateway never lists — the Ark coding plan's ark-code-latest, doubao-seed-2.0-pro, glm-5.3.
  • Catalog handling learned from real gateways: reported token_limits/modalities are used instead of blanket 200k/64k and text+image; Shutdown/Deprecated tombstones and non-text task_type entries are dropped.
  • Renamed the project to omp-gateway-login — CLIProxyAPI is one gateway among many.

Verified against three live gateways (CLIProxyAPI, a vendor router, the Volcengine Ark coding plan): logins, discovery and end-to-end calls.

See CHANGELOG.md for details.

v0.1.0 — first release

Choose a tag to compare

@magic3007 magic3007 released this 14 Oct 13:47

A /login entry for any CLIProxyAPI gateway.

Install

omp plugin install git:https://github.com/magic3007/omp-cliproxy-login
omp login          # pick "CLIProxyAPI Gateway (API key)" → gateway URL → API key

Then allow the discovered catalog in ~/.omp/agent/config.yml:

enabledModels:
  - cliproxy/*

Highlights

  • Gateway URL + API key are typed at login and validated with one /v1/models call — nothing is stored on a bad pair.
  • The gateway URL is remembered in ~/.omp/agent/cliproxy-login.json; a new URL re-registers the provider without a restart.
  • Live catalog discovery through cliproxy/<model-id> selectors, with image/video/speech entries filtered out.
  • Costs nothing to run: the extension is dependency-free TypeScript loaded by omp itself.

See CHANGELOG.md for details.