anomalyco / anomalyco/models.dev

Catalog audit: attachment flag contradicts modalities.input in 289 flagged entries (279 unique files)

Open
#5,792 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
6.9k
Forks
1.7k
Avg merge
3h 21m
Merged PRs (30d)
873

Description

While investigating why vision-capable models get image-blocked in
OpenCode (via the models.dev catalog), we scanned the whole catalog for
entries where attachment contradicts modalities.input — the invariant
the sync runners themselves apply ("attachment is derived from non-text
input modalities", see ovhcloud/chutes notes in sync.md).

Result: 289 flagged entries across 7,878 TOML files — 279 unique
underlying files (10 flagged paths are symlink mirrors of an
already-counted file). Largest clusters: helicone 49, poe 43, vercel 25,
alibaba-cn 20, alibaba 19, amazon-bedrock 10, siliconflow-cn 9, azure 9,
zenmux 8.

Two of them (moonshotai/kimi-k2.5, opencode/grok-code) are fixed in a
companion PR referencing this issue — that fix also clears the
moonshotai-cn symlink mirror of kimi-k2.5, leaving 286 flagged rows
(277 unique).

The downstream cost is real and already reported on the consumer side:
OpenCode users hit this data error as "vision model cannot see images"
symptoms (anomalyco/opencode#23427, #22673, #40894, #36020). Single-model
modality reports in this repo (#5712, #479) were accepted and fixed —
this issue is the systematic version of those.

Three semantic questions we'd like maintainer guidance on before
batch-fixing the rest:

  1. Audio-only models (whisper/voxtral/ASR: input ["audio"] or
    ["text","audio"]): should attachment follow the modality-derivation
    convention (true), or the "file attachments" semantics (false)? 33
    entries (input == ["audio"] or ["text","audio"] among the contradictory
    rows; 28 provider + 5 lab).
  2. Gateway providers (amazon-bedrock, azure, io-net, …): does the
    transport genuinely reject images (flag intentionally false), or are
    these the same omissions as the lab entries? Needs per-provider doc
    checks.
  3. Generated entries (vercel, via packages/core/script/generate-*.ts):
    hand edits get overwritten by the generator — fix the generator, the
    upstream source, or the entries?

Happy to work through these provider-by-provider in small PRs, per the
"prefer small, provider-specific PRs" guidance — just need the semantics
settled first.

Reproduction

pip3 install tomli
python3 - <<'EOF'
import glob, os, sys
try:
    import tomli as toml
except ImportError:
    sys.exit("pip3 install tomli first")

files = sorted(set(glob.glob('models/*/*.toml') + glob.glob('providers/*/models/**/*.toml', recursive=True)))
rows, broken, total = [], 0, len(files)
for f in files:
    p = os.path.realpath(f)
    if not os.path.exists(p):
        broken += 1
        continue
    try:
        d = toml.load(open(p, 'rb'))
    except Exception as e:
        rows.append((f, 'PARSE-ERR', str(e)))
        continue
    att = d.get('attachment')
    if att is None:
        continue
    mod = d.get('modalities', {}).get('input')
    if mod is None:
        continue
    if att != any(m != 'text' for m in mod):
        rows.append((f, att, mod))

from collections import Counter
prov = Counter(r[0].split('/')[1] if r[0].startswith('providers/') else '(lab)' for r in rows)
print(f"**Scope:** {total} TOML files scanned ({broken} unresolvable symlinks excluded), **{len(rows)} contradictions found.**\n")
print("| Provider | Count |\n|---|---|")
for k, v in prov.most_common():
    print(f"| {k} | {v} |")
print("\n<details>\n<summary>Full list (289 expected)</summary>\n")
print("| Entry | attachment | modalities.input |\n|---|---|---|")
for f, att, mod in rows:
    if att == 'PARSE-ERR':
        print(f"| {f} | parse error | {mod} |")
    else:
        print(f"| {f} | {att} | {mod} |")
print("\n</details>")
EOF

Notes:

  • 32 unresolvable symlink paths are skipped.
  • Symlink mirrors are counted as separate rows (hence 289 rows vs 279
    unique underlying files).

Flagged entries

Provider Count
helicone 49
poe 43
vercel 25
alibaba-cn 20
alibaba 19
(lab) 17
amazon-bedrock 10
azure 9
siliconflow-cn 9
azure-cognitive-services 8
zenmux 8
frogbot 6
llama 5
aki-io 4
io-net 4
vivgrid 4
google-vertex 3
mistral 3
opencode-go 3
opencode 3
scaleway 3
alibaba-coding-plan-cn 2
alibaba-coding-plan 2
evroc 2
greenpt 2
groq 2
llmgateway-providers 2
lucidquery 2
meganova 2
nearai 2
nvidia 2
siliconflow 2
togetherai 2
xpersona 2
abacus 1
gitlab 1
kimi-for-coding 1
moonshotai-cn 1
moonshotai 1
openai 1
stepfun-ai 1
stepfun 1
Full list (289 rows)
Entry attachment modalities.input
models/alibaba/qwen-omni-turbo.toml False ['text', 'image', 'audio', 'video']
models/alibaba/qwen-vl-max.toml False ['text', 'image']
models/alibaba/qwen-vl-plus.toml False ['text', 'image']
models/alibaba/qwen2-5-vl-72b-instruct.toml False ['text', 'image']
models/alibaba/qwen3-vl-plus.toml False ['text', 'image']
models/alibaba/qwen3.5-plus.toml False ['text', 'image', 'video']
models/deepseek/deepseek-chat.toml True ['text']
models/deepseek/deepseek-reasoner.toml True ['text']
models/google/gemini-3.5-live-translate-preview.toml False ['audio']
models/google/gemini-3.5-transcribe-live.toml False ['audio']
models/meta/llama-3.3-70b-instruct.toml True ['text']
models/mistral/mistral-small-2506.toml False ['text', 'image']
models/openai/gpt-4.toml True ['text']
models/openai/gpt-5-codex.toml False ['text', 'image']
models/openai/gpt-realtime-whisper.toml False ['audio']
models/openai/whisper-large-v3-turbo.toml False ['audio']
models/openai/whisper-large-v3.toml False ['audio']
providers/abacus/models/kimi-k2.5.toml False ['text', 'image', 'video']
providers/aki-io/models/kimi-k2.7-code-1100b.toml False ['text', 'image']
providers/aki-io/models/mistral4-119b.toml False ['text', 'image']
providers/aki-io/models/qwen3.6-35b.toml False ['text', 'image']
providers/aki-io/models/qwen3.8-27b.toml False ['text', 'image']
providers/alibaba-cn/models/kimi-k2.5.toml False ['text', 'image', 'video']
providers/alibaba-cn/models/kimi/kimi-k2.5.toml False ['text', 'image', 'video']
providers/alibaba-cn/models/qvq-max.toml False ['text', 'image']
providers/alibaba-cn/models/qwen-omni-turbo-realtime.toml False ['text', 'image', 'audio']
providers/alibaba-cn/models/qwen-omni-turbo.toml False ['text', 'image', 'audio', 'video']
providers/alibaba-cn/models/qwen-vl-max.toml False ['text', 'image']
providers/alibaba-cn/models/qwen-vl-ocr.toml False ['text', 'image']
providers/alibaba-cn/models/qwen-vl-plus.toml False ['text', 'image']
providers/alibaba-cn/models/qwen2-5-omni-7b.toml False ['text', 'image', 'audio', 'video']
providers/alibaba-cn/models/qwen2-5-vl-72b-instruct.toml False ['text', 'image']
providers/alibaba-cn/models/qwen2-5-vl-7b-instruct.toml False ['text', 'image']
providers/alibaba-cn/models/qwen3-asr-flash.toml False ['audio']
providers/alibaba-cn/models/qwen3-omni-flash-realtime.toml False ['text', 'image', 'audio']
providers/alibaba-cn/models/qwen3-omni-flash.toml False ['text', 'image', 'audio', 'video']
providers/alibaba-cn/models/qwen3-vl-235b-a22b.toml False ['text', 'image']
providers/alibaba-cn/models/qwen3-vl-30b-a3b.toml False ['text', 'image']
providers/alibaba-cn/models/qwen3-vl-plus.toml False ['text', 'image']
providers/alibaba-cn/models/qwen3.5-397b-a17b.toml False ['text', 'image', 'video']
providers/alibaba-cn/models/qwen3.5-plus.toml False ['text', 'image', 'video']
providers/alibaba-cn/models/qwen3.6-plus.toml False ['text', 'image', 'video']
providers/alibaba-coding-plan-cn/models/qwen3.5-plus.toml False ['text', 'image']
providers/alibaba-coding-plan-cn/models/qwen3.6-plus.toml False ['text', 'image', 'video']
providers/alibaba-coding-plan/models/qwen3.5-plus.toml False ['text', 'image', 'video']
providers/alibaba-coding-plan/models/qwen3.6-plus.toml False ['text', 'image', 'video']
providers/alibaba/models/qvq-max.toml False ['text', 'image']
providers/alibaba/models/qwen-omni-turbo-realtime.toml False ['text', 'image', 'audio']
providers/alibaba/models/qwen-omni-turbo.toml False ['text', 'image', 'audio', 'video']
providers/alibaba/models/qwen-vl-max.toml False ['text', 'image']
providers/alibaba/models/qwen-vl-ocr.toml False ['text', 'image']
providers/alibaba/models/qwen-vl-plus.toml False ['text', 'image']
providers/alibaba/models/qwen2-5-omni-7b.toml False ['text', 'image', 'audio', 'video']
providers/alibaba/models/qwen2-5-vl-72b-instruct.toml False ['text', 'image']
providers/alibaba/models/qwen2-5-vl-7b-instruct.toml False ['text', 'image']
providers/alibaba/models/qwen3-asr-flash.toml False ['audio']
providers/alibaba/models/qwen3-livetranslate-flash-realtime.toml False ['text', 'image', 'audio', 'video']
providers/alibaba/models/qwen3-omni-flash-realtime.toml False ['text', 'image', 'audio', 'video']
providers/alibaba/models/qwen3-omni-flash.toml False ['text', 'image', 'audio', 'video']
providers/alibaba/models/qwen3-vl-235b-a22b.toml False ['text', 'image']
providers/alibaba/models/qwen3-vl-30b-a3b.toml False ['text', 'image']
providers/alibaba/models/qwen3-vl-plus.toml False ['text', 'image']
providers/alibaba/models/qwen3.5-plus.toml False ['text', 'image', 'video']
providers/alibaba/models/qwen3.6-plus.toml False ['text', 'image', 'video']
providers/alibaba/models/qwen3.7-plus.toml False ['text', 'image', 'video']
providers/amazon-bedrock/models/amazon.nova-2-lite-v1:0.toml False ['text', 'image', 'video']
providers/amazon-bedrock/models/google.gemma-3-12b-it.toml False ['text', 'image']
providers/amazon-bedrock/models/google.gemma-3-4b-it.toml False ['text', 'image']
providers/amazon-bedrock/models/mistral.magistral-small-2509.toml False ['text', 'image']
providers/amazon-bedrock/models/mistral.ministral-3-3b-instruct.toml False ['text', 'image']
providers/amazon-bedrock/models/mistral.mistral-large-3-675b-instruct.toml False ['text', 'image']
providers/amazon-bedrock/models/mistral.pixtral-large-2502-v1:0.toml False ['text', 'image']
providers/amazon-bedrock/models/mistral.voxtral-mini-3b-2507.toml False ['audio', 'text']
providers/amazon-bedrock/models/moonshotai.kimi-k2.5.toml False ['text', 'image']
providers/amazon-bedrock/models/nvidia.nemotron-nano-12b-v2.toml False ['text', 'image']
providers/azure-cognitive-services/models/codex-mini.toml True ['text']
providers/azure-cognitive-services/models/gpt-5-codex.toml False ['text', 'image']
providers/azure-cognitive-services/models/gpt-5.1-codex-mini.toml False ['text', 'image']
providers/azure-cognitive-services/models/gpt-5.1-codex.toml False ['text', 'image', 'audio']
providers/azure-cognitive-services/models/gpt-5.2-codex.toml False ['text', 'image']
providers/azure-cognitive-services/models/gpt-5.3-codex.toml False ['text', 'image']
providers/azure-cognitive-services/models/kimi-k2.6.toml False ['text', 'image']
providers/azure-cognitive-services/models/o1.toml False ['text', 'image']
providers/azure/models/codex-mini.toml True ['text']
providers/azure/models/gpt-5-codex.toml False ['text', 'image']
providers/azure/models/gpt-5.1-codex-mini.toml False ['text', 'image']
providers/azure/models/gpt-5.1-codex.toml False ['text', 'image', 'audio']
providers/azure/models/gpt-5.2-codex.toml False ['text', 'image']
providers/azure/models/gpt-5.3-codex.toml False ['text', 'image']
providers/azure/models/kimi-k2.5.toml False ['text', 'image']
providers/azure/models/kimi-k2.6.toml False ['text', 'image']
providers/azure/models/o1.toml False ['text', 'image']
providers/evroc/models/KBLab/kb-whisper-large.toml False ['audio']
providers/evroc/models/mistralai/Voxtral-Small-24B-2507.toml False ['audio', 'text']
providers/frogbot/models/deepseek-v4-pro.toml True ['text']
providers/frogbot/models/kimi-k2-6.toml False ['text', 'image']
providers/frogbot/models/kimi-k2.5.toml False ['text', 'image']
providers/frogbot/models/minimax-m2-5.toml True ['text']
providers/frogbot/models/minimax-m2-7.toml True ['text']
providers/frogbot/models/zai-glm-5-1.toml True ['text']
providers/gitlab/models/duo-chat-gpt-5-codex.toml False ['text', 'image']
providers/google-vertex/models/deepseek-ai/deepseek-v3.1-maas.toml False ['text', 'pdf']
providers/google-vertex/models/deepseek-ai/deepseek-v3.2-maas.toml False ['text', 'pdf']
providers/google-vertex/models/zai-org/glm-4.7-maas.toml False ['text', 'pdf']
providers/greenpt/models/green-s-pro.toml False ['audio']
providers/greenpt/models/green-s.toml False ['audio']
providers/groq/models/whisper-large-v3-turbo.toml False ['audio']
providers/groq/models/whisper-large-v3.toml False ['audio']
providers/helicone/models/chatgpt-4o-latest.toml False ['text', 'image']
providers/helicone/models/claude-3-haiku-20240307.toml False ['text', 'image']
providers/helicone/models/claude-3.5-haiku.toml False ['text', 'image']
providers/helicone/models/claude-3.5-sonnet-v2.toml False ['text', 'image']
providers/helicone/models/claude-3.7-sonnet.toml False ['text', 'image']
providers/helicone/models/claude-4.5-haiku.toml False ['text', 'image']
providers/helicone/models/claude-4.5-opus.toml False ['text', 'image']
providers/helicone/models/claude-4.5-sonnet.toml False ['text', 'image']
providers/helicone/models/claude-haiku-4-5-20251001.toml False ['text', 'image']
providers/helicone/models/claude-opus-4-1-20250805.toml False ['text', 'image']
providers/helicone/models/claude-opus-4-1.toml False ['text', 'image']
providers/helicone/models/claude-opus-4.toml False ['text', 'image']
providers/helicone/models/claude-sonnet-4-5-20250929.toml False ['text', 'image']
providers/helicone/models/claude-sonnet-4.toml False ['text', 'image']
providers/helicone/models/gemini-2.5-flash-lite.toml False ['text', 'image']
providers/helicone/models/gemini-2.5-flash.toml False ['text', 'image']
providers/helicone/models/gemini-2.5-pro.toml False ['text', 'image']
providers/helicone/models/gemini-3-pro-preview.toml False ['text', 'image', 'audio', 'video']
providers/helicone/models/gemma-3-12b-it.toml False ['text', 'image']
providers/helicone/models/gpt-4.1-mini-2025-04-14.toml False ['text', 'image']
providers/helicone/models/gpt-4.1-mini.toml False ['text', 'image']
providers/helicone/models/gpt-4.1-nano.toml False ['text', 'image']
providers/helicone/models/gpt-4.1.toml False ['text', 'image']
providers/helicone/models/gpt-4o-mini.toml False ['text', 'image']
providers/helicone/models/gpt-4o.toml False ['text', 'image']
providers/helicone/models/gpt-5-chat-latest.toml False ['text', 'image']
providers/helicone/models/gpt-5-mini.toml False ['text', 'image']
providers/helicone/models/gpt-5-nano.toml False ['text', 'image']
providers/helicone/models/gpt-5.1-chat-latest.toml False ['text', 'image']
providers/helicone/models/gpt-5.1-codex-mini.toml False ['text', 'image']
providers/helicone/models/gpt-5.1-codex.toml False ['text', 'image']
providers/helicone/models/gpt-5.1.toml False ['text', 'image']
providers/helicone/models/gpt-5.toml False ['text', 'image']
providers/helicone/models/grok-4-1-fast-non-reasoning.toml False ['text', 'image']
providers/helicone/models/grok-4-1-fast-reasoning.toml False ['text', 'image']
providers/helicone/models/grok-4-fast-non-reasoning.toml False ['text', 'image', 'audio']
providers/helicone/models/grok-4-fast-reasoning.toml False ['text', 'image']
providers/helicone/models/llama-4-maverick.toml False ['text', 'image']
providers/helicone/models/llama-4-scout.toml False ['text', 'image']
providers/helicone/models/llama-guard-4.toml False ['text', 'image']
providers/helicone/models/mistral-nemo.toml False ['text', 'image']
providers/helicone/models/o3-pro.toml False ['text', 'image']
providers/helicone/models/o3.toml False ['text', 'image']
providers/helicone/models/o4-mini.toml False ['text', 'image']
providers/helicone/models/qwen3-235b-a22b-thinking.toml False ['text', 'image', 'video']
providers/helicone/models/qwen3-30b-a3b.toml False ['text', 'image']
providers/helicone/models/qwen3-coder.toml False ['text', 'image', 'audio', 'video']
providers/helicone/models/qwen3-next-80b-a3b-instruct.toml False ['text', 'image', 'video']
providers/helicone/models/qwen3-vl-235b-a22b-instruct.toml False ['text', 'image', 'video']
providers/io-net/models/Qwen/Qwen2.5-VL-32B-Instruct.toml False ['text', 'image']
providers/io-net/models/meta-llama/Llama-3.2-90B-Vision-Instruct.toml False ['text', 'image']
providers/io-net/models/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8.toml False ['text', 'image']
providers/io-net/models/mistralai/Mistral-Large-Instruct-2411.toml False ['text', 'image']
providers/kimi-for-coding/models/k3-256k.toml False ['text', 'image']
providers/llama/models/cerebras-llama-4-maverick-17b-128e-instruct.toml True ['text']
providers/llama/models/cerebras-llama-4-scout-17b-16e-instruct.toml True ['text']
providers/llama/models/groq-llama-4-maverick-17b-128e-instruct.toml True ['text']
providers/llama/models/llama-3.3-70b-instruct.toml True ['text']
providers/llama/models/llama-3.3-8b-instruct.toml True ['text']
providers/llmgateway-providers/models/openai/gpt-4o-mini-transcribe.toml False ['text', 'audio']
providers/llmgateway-providers/models/openai/gpt-4o-transcribe.toml False ['text', 'audio']
providers/lucidquery/models/lucidnova-rf1-100b.toml True ['text']
providers/lucidquery/models/lucidquery-nexus-coder.toml True ['text']
providers/meganova/models/Qwen/Qwen3.5-Plus.toml False ['text', 'image', 'video']
providers/meganova/models/moonshotai/Kimi-K2.5.toml False ['text', 'image']
providers/mistral/models/labs-devstral-small-2512.toml False ['text', 'image']
providers/mistral/models/mistral-small-2506.toml False ['text', 'image']
providers/mistral/models/voxtral-mini-latest.toml False ['audio']
providers/moonshotai-cn/models/kimi-k2.5.toml False ['text', 'image', 'video']
providers/moonshotai/models/kimi-k2.5.toml False ['text', 'image', 'video']
providers/nearai/models/black-forest-labs/FLUX.2-klein-4B.toml False ['text', 'image']
providers/nearai/models/openai/whisper-large-v3.toml False ['audio']
providers/nvidia/models/black-forest-labs/flux_2-klein-4b.toml False ['image', 'text']
providers/nvidia/models/openai/whisper-large-v3.toml False ['audio']
providers/openai/models/gpt-4.toml True ['text']
providers/opencode-go/models/mimo-v2-pro.toml True ['text']
providers/opencode-go/models/mimo-v2.5-pro.toml True ['text']
providers/opencode-go/models/minimax-m3.toml False ['text', 'image', 'video']
providers/opencode/models/grok-code.toml True ['text']
providers/opencode/models/mimo-v2-pro-free.toml True ['text']
providers/opencode/models/minimax-m3-free.toml False ['text', 'image', 'video']
providers/poe/models/cerebras/gpt-oss-120b-cs.toml True ['text']
providers/poe/models/cerebras/llama-3.1-8b-cs.toml True ['text']
providers/poe/models/cerebras/llama-3.3-70b-cs.toml True ['text']
providers/poe/models/cerebras/qwen3-235b-2507-cs.toml True ['text']
providers/poe/models/cerebras/qwen3-32b-cs.toml True ['text']
providers/poe/models/elevenlabs/elevenlabs-music.toml True ['text']
providers/poe/models/elevenlabs/elevenlabs-v2.5-turbo.toml True ['text']
providers/poe/models/elevenlabs/elevenlabs-v3.toml True ['text']
providers/poe/models/empiriolabs/deepseek-v4-flash-el.toml True ['text']
providers/poe/models/empiriolabs/deepseek-v4-pro-el.toml True ['text']
providers/poe/models/google/imagen-3-fast.toml True ['text']
providers/poe/models/google/imagen-3.toml True ['text']
providers/poe/models/google/imagen-4-fast.toml True ['text']
providers/poe/models/google/imagen-4-ultra.toml True ['text']
providers/poe/models/google/imagen-4.toml True ['text']
providers/poe/models/google/lyria.toml True ['text']
providers/poe/models/google/veo-2.toml True ['text']
providers/poe/models/google/veo-3-fast.toml True ['text']
providers/poe/models/google/veo-3.1.toml True ['text']
providers/poe/models/google/veo-3.toml True ['text']
providers/poe/models/ideogramai/ideogram-v2a-turbo.toml True ['text']
providers/poe/models/ideogramai/ideogram-v2a.toml True ['text']
providers/poe/models/novita/deepseek-v3.2.toml True ['text']
providers/poe/models/novita/glm-4.6.toml True ['text']
providers/poe/models/novita/glm-4.7-flash.toml True ['text']
providers/poe/models/novita/glm-4.7-n.toml True ['text']
providers/poe/models/novita/glm-4.7.toml True ['text']
providers/poe/models/novita/glm-5.toml True ['text']
providers/poe/models/novita/kimi-k2-thinking.toml True ['text']
providers/poe/models/novita/minimax-m2.1.toml True ['text']
providers/poe/models/openai/dall-e-3.toml True ['text']
providers/poe/models/openai/gpt-4o-mini-search.toml True ['text']
providers/poe/models/openai/gpt-4o-search.toml True ['text']
providers/poe/models/openai/gpt-5.1-codex-mini.toml True ['text']
providers/poe/models/openai/gpt-5.3-codex-spark.toml True ['text']
providers/poe/models/openai/o3-deep-research.toml True ['text']
providers/poe/models/openai/o4-mini-deep-research.toml True ['text']
providers/poe/models/poetools/claude-code.toml True ['text']
providers/poe/models/topazlabs-co/topazlabs.toml True ['text']
providers/poe/models/trytako/tako.toml True ['text']
providers/poe/models/xai/grok-3-mini.toml True ['text']
providers/poe/models/xai/grok-3.toml True ['text']
providers/poe/models/xai/grok-code-fast-1.toml True ['text']
providers/scaleway/models/gpt-oss-120b.toml True ['text']
providers/scaleway/models/llama-3.3-70b-instruct.toml True ['text']
providers/scaleway/models/whisper-large-v3.toml False ['audio']
providers/siliconflow-cn/models/Pro/moonshotai/Kimi-K2.5.toml False ['text', 'image']
providers/siliconflow-cn/models/Pro/moonshotai/Kimi-K2.6.toml False ['text', 'image']
providers/siliconflow-cn/models/Qwen/Qwen3.5-122B-A10B.toml False ['text', 'image', 'video']
providers/siliconflow-cn/models/Qwen/Qwen3.5-27B.toml False ['text', 'image', 'video']
providers/siliconflow-cn/models/Qwen/Qwen3.5-35B-A3B.toml False ['text', 'image', 'video']
providers/siliconflow-cn/models/Qwen/Qwen3.5-397B-A17B.toml False ['text', 'image', 'video']
providers/siliconflow-cn/models/Qwen/Qwen3.5-4B.toml False ['text', 'image', 'video']
providers/siliconflow-cn/models/Qwen/Qwen3.5-9B.toml False ['text', 'image', 'video']
providers/siliconflow-cn/models/Qwen/Qwen3.6-35B-A3B.toml False ['text', 'image', 'video']
providers/siliconflow/models/moonshotai/Kimi-K2.5.toml False ['text', 'image']
providers/siliconflow/models/moonshotai/Kimi-K2.6.toml False ['text', 'image']
providers/stepfun-ai/models/stepaudio-2.5-asr.toml False ['audio']
providers/stepfun/models/stepaudio-2.5-asr.toml False ['audio']
providers/togetherai/models/Qwen/Qwen3.5-397B-A17B.toml False ['text', 'image']
providers/togetherai/models/moonshotai/Kimi-K2.5.toml False ['text', 'image']
providers/vercel/models/alibaba/qwen-3.6-max-preview.toml True ['text']
providers/vercel/models/bytedance/seed-1.6.toml False ['text', 'image']
providers/vercel/models/bytedance/seed-1.8.toml False ['text', 'image']
providers/vercel/models/fish-audio/transcribe-1-free.toml False ['audio']
providers/vercel/models/fish-audio/transcribe-1.toml False ['audio']
providers/vercel/models/google/gemini-3.5-transcribe.toml False ['audio']
providers/vercel/models/interfaze/interfaze-beta.toml False ['text', 'image', 'pdf']
providers/vercel/models/kwaipilot/kat-coder-air-v2.5.toml False ['text', 'image']
providers/vercel/models/kwaipilot/kat-coder-pro-v2.5.toml False ['text', 'image']
providers/vercel/models/meta/llama-3.3-70b.toml True ['text']
providers/vercel/models/meta/muse-spark-1.1.toml False ['text', 'image', 'pdf']
providers/vercel/models/mistral/devstral-small-2.toml False ['text', 'image']
providers/vercel/models/mistral/mistral-medium-3.5.toml False ['text', 'image']
providers/vercel/models/mistral/mistral-nemo.toml False ['text', 'image']
providers/vercel/models/openai/gpt-4o-mini-transcribe.toml False ['audio']
providers/vercel/models/openai/gpt-4o-transcribe.toml False ['audio']
providers/vercel/models/openai/gpt-realtime-1.5.toml False ['text', 'audio']
providers/vercel/models/openai/gpt-realtime-2.1.toml False ['text', 'audio']
providers/vercel/models/openai/gpt-realtime-2.toml False ['text', 'audio']
providers/vercel/models/openai/gpt-realtime-mini.toml False ['text', 'audio']
providers/vercel/models/openai/whisper-1.toml False ['audio']
providers/vercel/models/perplexity/sonar-reasoning-pro.toml False ['text', 'image']
providers/vercel/models/spacexai/grok-stt.toml False ['audio']
providers/vercel/models/spacexai/grok-voice-think-fast-1.0.toml False ['text', 'audio']
providers/vercel/models/spacexai/grok-voice-think-fast-2.0.toml False ['text', 'audio']
providers/vivgrid/models/gpt-5.1-codex-max.toml False ['text', 'image']
providers/vivgrid/models/gpt-5.1-codex.toml False ['text', 'image']
providers/vivgrid/models/gpt-5.2-codex.toml False ['text', 'image']
providers/vivgrid/models/gpt-5.3-codex.toml False ['text', 'image']
providers/xpersona/models/xpersona-frieren-coder.toml False ['text', 'image']
providers/xpersona/models/xpersona-gpt-5.5.toml False ['text', 'image']
providers/zenmux/models/inclusionai/ring-2.6-1t.toml True ['text']
providers/zenmux/models/minimax/minimax-m2.7-highspeed.toml True ['text']
providers/zenmux/models/minimax/minimax-m2.7.toml True ['text']
providers/zenmux/models/openai/gpt-5.3-chat.toml True ['text']
providers/zenmux/models/openai/gpt-5.3-codex.toml True ['text']
providers/zenmux/models/openai/gpt-5.4-mini.toml True ['text']
providers/zenmux/models/volcengine/doubao-seed-2.0-code.toml True ['text']
providers/zenmux/models/z-ai/glm-5-turbo.toml True ['text']

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading sync.md for the attachment invariant and inspect the relevant packages/core/script/generate-*.ts generators before editing generated entries. Run the provided Python audit to reproduce the contradictions, then check provider documentation and determine how audio-only, gateway, and generated entries should be handled. Done means the semantics are settled and the remaining unintended contradictions are corrected without generator overwrites.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, typescript
Domain
data, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.