anomalyco / anomalyco/models.dev
Add a sync module for neuralwatt (public, metadata-rich /v1/models)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 6.9k
- Forks
- 1.7k
- Avg merge
- 3h 21m
- Merged PRs (30d)
- 873
Description
Context
The neuralwatt provider entry is hand-authored, and it drifted: #7482 had to add 8 missing models (glm-5.3-flash family, deepseek-v4.1-flash family, deepseek-v4-flash-speed, two qwen flex tiers), deprecate 8 retired ones (GLM-5.2 family, deepseek-v4-pro), and fix two stale output caps — all detectable from Neuralwatt's own catalog endpoint.
The endpoint is unusually sync-friendly
GET https://api.neuralwatt.com/v1/models is public (no auth) and returns per-model metadata covering nearly everything the catalog tracks:
metadata.pricing:input_per_million,output_per_million,cached_input_per_million(USD/MTok),service_tier(standard/flex),flex_discount_multiplier(0.65)metadata.capabilities:tools,json_mode(→structured_output),vision,reasoning,reasoning_effort,streaming,system_rolemetadata.reasoning:mandatory,default_enabled,supported_efforts,default_effort,accepted_efforts,effort_aliases— maps directly toreasoning_optionseffort valuesmetadata.limits:max_context_length,max_output_tokens,max_imagesmetadata.deprecated+deprecated_message(lifecycle signal)metadata.huggingface_id,display_name,description
Suggested shape
Follow the public-endpoint precedent of chutes.ts / ovhcloud.ts (no secrets needed):
- Pricing, limits, capabilities, and lifecycle (
deprecatedflag) are endpoint-authoritative. base_modelresolution viahuggingface_id/family againstmodels/; unresolved IDs skip with a missing-model issue rather than creating inline entries.reasoning_optionseffort values fromreasoning.supported_efforts.budget_tokensneeds a policy call: portal docs saythinking_token_budgetis accepted provider-wide, but deepseek-v4-flash rejects it with a 400 — so derive per-model or preserve authored values.- Absence from the endpoint (or
deprecated: true) →status = "deprecated"for previously-cataloged models. - ID normalization: the API mixes separators (
deepseek-v4_flash-speedvsdeepseek-v4.1-flash); catalog convention is hyphens. -flexIDs are the same underlying model at the flex tier and should resolve to the base model's lab metadata.
Registering in packages/core/src/sync/index.ts would give neuralwatt the hourly automation PR like other synced providers, and this class of drift (new flash/flex variants appearing weeks before anyone hand-PRs them) would stop happening.
Happy to take this on if maintainers want it.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the sync implementations in chutes.ts and ovhcloud.ts, then inspect packages/core/src/sync/index.ts and the existing entries under models/. Trace how endpoint metadata, base-model resolution, normalization, and deprecated models are represented. Done means neuralwatt is registered for recurring syncs and the endpoint's catalog changes produce correct model metadata and lifecycle updates.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- data, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100