Skip to content

Proposal: BytesBrains Cruise as a curated provider #24

Open

Description

@nandal

What this is

We run Cruise, an OpenAI-compatible gateway: one key across many hosts (Workers AI, DeepSeek, Mistral, Anthropic, OpenAI…), per-project budget caps that stop a runaway loop, and a ledger of what each request cost. We'd like to add it to PROVIDERS as a curated entry, and are asking here first, as the README invites, before sending a PR. Disclosure: we operate Cruise.

Why it may suit OpenHack users: a scan is a long agent loop. A hard daily cap means a stuck hunter stops at a figure the user chose, not at the end of their card, and the ledger answers "what did that scan cost" when the CLI has no pricing for a BYOK model (it reports $0.0000).

Tested before asking

OpenHack 0.2.4, openhack --scan, no code changes, pointed at Cruise through the existing openai provider overrides (OPENAI_BASE_URL / OPENAI_MODEL):

  • A full scan of a small Flask app with three planted bugs, on workers-ai/@cf/zai-org/glm-5.3 (the same family as your current default, Default new sessions to GLM 5.3 Flash #11): recon, hunter swarm and validator swarm all completed, and command injection and SQL injection were confirmed. 54 tool calls, parallel calls included. About $1.02 for the scan, 16m 48s.
  • prompt_cache_key is accepted, so supports_prompt_cache=True.
  • Refusals arrive as OpenAI-shaped errors that OpenHack already displays: a model lacking a capability the request needs gets 400 unsupported_capability, and an exhausted cap gets 429 budget_exhausted, after which OpenHack offered --resume.

The same runs turned up #21, #22 and #23, which affect any OpenAI-compatible provider, not only this one.

The change

One entry in openhack/providers.py, plus whatever your tests do for the other curated providers:

"cruise": ProviderSpec(
    "cruise", "BytesBrains Cruise", "https://cruise.bytesbrains.net/v1",
    "CRUISE_API_KEY", "workers-ai/@cf/zai-org/glm-5.3", True,
    hint="One key across open models, with budget caps",
),

No hosted-service code and no new CLI surface (per AGENTS.md). CRUISE_BASE_URL / CRUISE_MODEL overrides come for free from resolve(). The model list stays dynamic: GET /v1/models returns only what the presented key can be served, with capabilities and prices.

We're also looking at a Models.dev listing, which would put Cruise in the "Other…" picker either way.

Would you accept a PR along these lines? Happy to change the shape, the default model or the wording.


AI-assisted: drafted with Claude Code; the test runs are described above and logs are available on request.

Activity

  1. nandal commented on Oct 12, 2026

    @nandal
    Author

    Thanks for the detailed proposal and the test runs. I've opened #27 to add Cruise as a curated provider, following the shape you suggested: the cruise entry with CRUISE_API_KEY, workers-ai/@cf/zai-org/glm-5.3 as the default model, and prompt caching on. It's also listed in the primary picker next to the other gateways.

    #27

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions