feat(provider): add MiMo Free no-auth provider

Bootstrap → JWT → chat flow with auto-retry. Inject the MiMoCode
system marker required to pass the upstream 403 anti-abuse gate,
derive JWT expiry from the exp claim, and use a stable per-machine
fingerprint as the bootstrap client.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Fadjrir Herlambang
2026-06-13 10:14:21 +07:00
committed by decolua
co-authored by Cursor
parent 0aaa5ab3c2
commit b40e96d0ef
8 changed files with 429 additions and 0 deletions
@@ -17,4 +17,10 @@ export const FILTERS = {
models
.filter((m) => m.id?.endsWith("-free") || KNOWN_FREE_OPENCODE_MODELS.includes(m.id))
.map((m) => ({ id: m.id, name: m.id })),
// models.dev returns a large catalog; keep only mimo models
"mimo-free": (models) =>
(Array.isArray(models) ? models : [])
.filter((m) => m.id?.startsWith("mimo") || m.name?.toLowerCase().includes("mimo"))
.map((m) => ({ id: m.id, name: m.name || m.id })),
};
+1
View File
@@ -12,6 +12,7 @@ export const FREE_PROVIDERS = {
qoder: { id: "qoder", alias: "qd", name: "Qoder", icon: "water_drop", color: "#EC4899", deprecated: true, deprecationNotice: RISK_NOTICE, website: "https://qoder.com", notice: { signupUrl: "https://qoder.com" } },
// iflow: { id: "iflow", alias: "if", name: "iFlow AI", icon: "water_drop", color: "#6366F1", website: "https://iflow.cn", notice: { signupUrl: "https://iflow.cn" } },
opencode: { id: "opencode", alias: "oc", name: "OpenCode Free", icon: "terminal", color: "#E87040", textIcon: "OC", noAuth: true, passthroughModels: true, modelsFetcher: { url: "https://opencode.ai/zen/v1/models", type: "opencode-free" } },
"mimo-free": { id: "mimo-free", alias: "mmf", name: "MiMo Code Free", icon: "smart_toy", color: "#FF6900", textIcon: "MF", noAuth: true, passthroughModels: true, modelsFetcher: { url: "https://models.dev/api.json", type: "mimo-free" } },
};
// Free Tier Providers (has free access but may require account/API key)