Developer workflows

Cat Jam Free: Check OpenCode Availability Before Reusing an Old ID

The Cat Jam name appears in OpenCode’s model usage records, but cat-jam-free was absent from the current model list we checked. Here is a reproducible way to resolve that mismatch.

SJolt Editorial5 min read
Diagram showing an old model identifier being checked against a current list before selecting a documented route.
Original editorial diagram of model selection. It is not a model logo, benchmark, or generated-media sample.

If you found an old Cat Jam Free configuration, check the current provider listing before using it. On October 17, 2026, the public OpenCode model-list endpoint returned beam-free but no cat-jam-free entry. The current Console models and Go documentation also omitted Cat Jam Free. That is a dated availability observation, not proof that every old alias has stopped working in every account.

The relevant search intent is a coding-model service, not a cat GIF download. A web-indexed OpenCode usage page places cat-jam under Reflection and refers to Beam in its title, but our direct fetch of that URL returned 404. Treat that record as historical context, not a supported migration alias. SJolt’s current catalog contains neither Cat Jam Free nor Beam.

Separate a model reference from a callable route

Search results can preserve a former model name after the provider changes its documentation. During this review, search snippets still showed Cat Jam Free in OpenCode’s tables, while opening those pages and querying the public list produced a different result. Use the directly retrieved source for the current decision and keep the date with the finding.

Evidence checkedOctober 17 findingWhat it establishes
Public model-list response85 entries; beam-free present, cat-jam-free absentThe identifiers returned by that public listing
Console models and Go pagesCat Jam Free omitted from the retrieved pagesThe current documented selection differs from older snippets
OpenCode cat-jam usage pageWeb-indexed record under Reflection; direct URL fetch returned 404Historical model context, not a current inference contract
SJolt catalogNeither Cat Jam Free nor Beam is registeredNo corresponding SJolt model route in this review

Do not infer the exact retirement date, a guaranteed replacement relationship or current account access from these observations. This guide did not send an inference request. If a saved configuration still works, record the provider, route and returned model metadata before concluding that it is equivalent to another named offering.

Check the list without submitting a prompt

This read-only example downloads the public listing and checks exact identifiers. It does not need your inference key and does not submit a coding task. Save the response if you need to explain later why a configuration decision was made; repeat the check when you actually configure the client.

bash
curl --fail --silent --show-error \
  https://opencode.ai/inference/v1/models \
  -o opencode-models.json

python3 - <<'PY'
import json
from pathlib import Path
payload = json.loads(Path("opencode-models.json").read_text())
ids = {row["id"] for row in payload["data"]}
for name in ("cat-jam-free", "beam-free"):
    print(f"{name}: {'listed' if name in ids else 'not listed'}")
PY

For the saved response examined here, the output is cat-jam-free: not listed and beam-free: listed. Presence in a public catalog still does not prove that your region, workspace or selected subscription can use a model. Confirm the same provider in the client’s model selector before making an optional test request.

When a request fails, preserve the status and the nonsecret error message. An unrecognized identifier calls for checking the route and model name; an authentication error calls for checking credentials; a usage-limit error calls for checking the account allowance. Repeatedly changing all three at once makes the failure harder to diagnose.

Check the terms of the selected offering

OpenCode’s current documentation describes Beam Free as a limited-time offering with regional exclusions. It says its provider does not train on submitted data and retains it for 30 days for safety purposes. Those are terms for the currently named offering; do not transfer old Cat Jam snippets or another provider’s terms to it.

Before enabling any free preview for a team, write down the selected model ID, provider, access plan, data policy and review date. Keep the model configurable so a service change does not require editing prompts throughout the application. Use a harmless synthetic task for the first comparison, especially when the preview’s identity or lifecycle is still changing.

A zero token price does not make every action in an agent workflow free. A coding agent may call other tools, and an application it writes may later submit paid media requests. Give those operations their own budget and authorization boundary. Evaluate the whole completed task, including time spent fixing the patch, rather than choosing from the price label alone.

Test a model migration before enabling inference

A focused coding task is a configuration checker that reads a saved provider listing and compares it with your selected model ID. Give the agent two synthetic catalogs: one that contains an old identifier and one that omits it. The checker should report the missing selection without substituting a different model or making an inference request.

Evaluation brief
Build a configuration checker from supplied model-list fixtures.
Match the selected model ID exactly within the chosen provider.
Report a missing ID without silently selecting another model.
Keep the previous configuration until a replacement is approved.
Reject malformed listing data with a useful diagnostic.
Do not submit prompts or call any inference endpoint.
Return the patch and the fixture results.

Include a third fixture whose identifier differs only by a provider prefix. That exposes accidental matching across services: a similar display name is not enough to establish the same request contract. Also test an empty list and malformed JSON. An error loading the catalog should be distinguishable from a successfully loaded catalog that lacks the selected model.

After choosing a replacement, compare its documented endpoint, input fields, supported tools and usage terms with the previous configuration. Keep the change small enough to revert without rewriting application prompts. Evaluate whether the coding assistant preserves that boundary and reports unresolved compatibility questions. This is a proposed evaluation, not a Cat Jam or Beam benchmark performed for this article.

Connect the reviewed code to media generation separately

Once the interface is reviewed, a separate server-side integration can use a supported SJolt image route. Nano Banana 2.1 supports text-to-image and reference-guided editing. Retain data.task_id after creation and query the task; status 0 means running, 1 means success and 2 means failure. Read successful files from data.output_urls and inspect the result before accepting it.

The coding model writes or reviews application code; the image route creates a media asset. Keep their credentials, request shapes and costs separate. No native OpenCode-to-SJolt connector, Cat Jam integration or free SJolt image generation is implied. The public listing check above was executed; no inference or paid generation was run.

Sources & further reading

Take the next idea into production.

Explore the models, test a workflow in the playground, and use the same request in your application.

Keep exploring

← All stories