Skip to content

feat(providers): add Runcrate as an OpenAI-compatible gateway - #1143

Open
heydryft wants to merge 1 commit into
EverMind-AI:mainfrom
heydryft:feat/runcrate-provider
Open

heydryft wants to merge 1 commit into
EverMind-AI:mainfrom
heydryft:feat/runcrate-provider

Conversation

@heydryft

Copy link
Copy Markdown

Summary

Adds Runcrate as a gateway provider. Runcrate serves open models (DeepSeek, GLM, Qwen, Kimi, gpt-oss and others) behind one OpenAI-compatible API at https://api.runcrate.ai/v1, under their makers' vendor/model ids.

The change follows the Opper addition (#869) file for file:

  • raven/providers/registry.py: a ProviderSpec at the end of the resale gateway block, reached through OpenAI's driver, told apart by runcrate.ai in the address, OPENAI_API_KEY as the driver's variable, no default model and no shortlist. Model ids carry their maker (deepseek-ai/DeepSeek-V4.1-Flash), so strip_model_prefix stays off. Runcrate's own GET /v1/models fills the picker once a key is entered.
  • raven/config/schema.py: a ProvidersConfig.runcrate section.
  • raven/cli/onboard_commands.py: a row in the onboarding wizard's key group.
  • ui-web/src/assets/providers/runcrate.svg and ProviderMark.tsx: a one-colour mark in currentColor (mono tone, inverted in the dark theme like Opper's and vLLM's), with a LICENSES/README.md entry.
  • Counts written elsewhere now say fifty-seven specs, twenty-three of them gateways (ui-web/CONTEXT.md, ProviderSide.tsx, Roles.tsx, the registry docstring and the gateway block comment).
  • Tests: the pinned provider set and count, the LiteLLM name tables, NO_SHORTLIST_VENDORS, and tests/data/wire_model_baseline.json regenerated with RAVEN_UPDATE_WIRE_BASELINE=1 (the only change is the new runcrate block).

Keys: https://www.runcrate.ai/dashboard/api-keys?utm_source=Raven&utm_medium=directory&utm_campaign=gpu_pricing

Type

  • Fix
  • Feature
  • Docs
  • CI / tooling
  • Refactor
  • Other

Verification

  • uv run --frozen --no-sync pytest -q tests/test_provider_wire_model.py tests/test_provider_catalog.py tests/test_litellm_provider_model_names.py tests/test_rpc_model.py: 967 passed, 7 skipped
  • uv run --frozen --no-sync pytest tests -k 'provider or onboard or schema or registry': 4656 passed, 109 skipped
  • uv run ruff check raven tests: all checks passed; ruff format --check on the touched Python files: already formatted
  • In ui-web (after npm ci): npx vitest run src/components/ProviderMark.test.tsx 15 passed; npm run gen:check matches the contract; npm run type-check clean; eslint on the touched files clean
  • Live check against https://api.runcrate.ai/v1 with a real key, through make_provider(Config) with agents.defaults.provider = "runcrate" and providers.runcrate.api_key set (api_base resolved from the spec to https://api.runcrate.ai/v1), a plain prompt and a one-tool prompt per model:
Model Provider class Raven chose Plain prompt Tool call
deepseek-ai/DeepSeek-V4.1-Flash OpenAIResponsesProvider pong, stop get_weather {'city': 'Paris'}
zai-org/GLM-5.3-Flash LiteLLMProvider pong, stop get_weather {'city': 'Paris'}
openai/gpt-oss-120b OpenAIResponsesProvider pong, stop get_weather {'city': 'Paris'}

Not run: the full make ci gate.

  • Relevant tests pass locally
  • Relevant lint / type checks pass locally
  • User-facing docs or screenshots are updated when needed (no user-facing doc lists providers one by one)

Risk

  • Security impact considered
  • Backward compatibility considered
  • Rollback path is clear for risky changes

Additive: one new provider section, nothing existing changes. Rollback is reverting the commit.

Related Issues

N/A

This PR was prepared with AI assistance: an AI coding agent wrote the change and ran the checks above.

Disclosure: I work on Runcrate.

@LivXue

LivXue commented Oct 29, 2026

Copy link
Copy Markdown
Member

Windows compatibility review — PR #1143 @ c1dd0ac6cc880b719ccb5c0c2bda3239c2a3b25b

Scope: the full base-to-head diff at this head (14 files, +48/−10): a ProviderSpec for Runcrate reached through OpenAI's driver, its config section and onboarding group entry, the provider icon and tone, and the catalog / wire-model-name baselines and counters. Reviewed for Windows behaviour and run on native Windows.

Result: no Windows-specific issue. The change is a registry and config entry plus an SVG icon and copy-count updates; it adds no path, separator, subprocess, signal, socket, permission, or encoding surface. The spec borrows the OpenAI driver like the other resale gateways (env_key="OPENAI_API_KEY", detect_by_base_keyword="runcrate.ai"), so environment and HTTP handling are the shared paths already in use, unchanged.

Verification on native Windows 11, detached worktree D:\tmp\rv-1143 at the reviewed head, offline venv (uv sync --frozen --offline --all-extras --no-extra segmenter --dev), scratch HOME/USERPROFILE, PYTHONUTF8=1, PYTHONPATH pinned:

  • uv run --no-sync pytest tests/test_litellm_provider_model_names.py tests/test_provider_catalog.py tests/test_rpc_model.py -q → 617 passed, 8 skipped. No failures, so no base comparison was needed.

Coverage gaps: the ui-web test this PR touches (ProviderMark.test.tsx) could not be run — the shared D:/projects/Raven/ui-web/node_modules is empty (0 entries, an environment issue present before this review) — so the icon-map entry, its mono tone, and the runcrate.svg asset were checked by reading only. The full suite was not rerun.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants