{
  "schema": "https://miscsubjects.com/schemas/jarticle.json",
  "status": "published",
  "body": "Six platform model lists fetched 2026-10-08. Four require authentication (Groq 401, Cerebras 403, Together 401, Mistral 401). Two return keyless (Hugging Face 200 with 268 entries, NVIDIA NIM 200 with 80 IDs). OpenRouter has 15 `:free` variants. CommandCode: free tier exists, OpenAI-compatible API, cline -P commandcode works.\n\n## Platform results\n\n| Platform | Model list status | Free models verified | API shape | cline support |\n|---|---|---|---|---|\n| OpenRouter | 200 | 15 `:free` variants (see table below) | POST https://openrouter.ai/api/v1/chat/completions | Yes: `cline -P openrouter` |\n| Groq | 401 Invalid API Key | None — inventory blocked | POST https://api.groq.com/openai/v1/chat/completions | Yes: `cline -P groq` |\n| Cerebras | 403 Not authenticated | None — inventory blocked | POST https://api.cerebras.ai/v1/chat/completions | Yes: `cline -P cerebras` |\n| Together | 401 Missing API key | None — inventory blocked | POST https://api.together.xyz/v1/chat/completions | Yes: `cline -P together` |\n| Hugging Face | 200, 268 entries (filter=inference) | No free hosted coders — Hub tag list only | POST https://router.huggingface.co/v1/chat/completions | Yes: `cline -P huggingface` |\n| Mistral | 401 Invalid API Key | None — inventory blocked | POST https://api.mistral.ai/v1/chat/completions | Yes: `cline -P mistral` |\n| NVIDIA NIM | 200, 80 IDs | Free trial credits per FAQ; ongoing free not established | POST https://integrate.api.nvidia.com/v1/chat/completions | Yes: `cline -P nvidia` |\n\n## OpenRouter free models (15)\n\nAll fetched 2026-10-08 from /api/v1/models, flagged `starred: true` in openrouter-free-models-2026-10-08.json:\n\n- `dots-studio/dots-3-note-preview:free` — brain/default\n- `cohere/north-mini-code:free` — coder/default\n- `qwen/qwen-2.5-coder-32b-instruct:free`\n- `qwen/qwen-2.5-72b-instruct:free`\n- `meta-llama/llama-3.2-3b-instruct:free`\n- `meta-llama/llama-3.2-1b-instruct:free`\n- `google/gemma-2-9b-it:free`\n- `google/gemma-2-2b-it:free`\n- `microsoft/phi-3-mini-128k-instruct:free`\n- `microsoft/phi-3-medium-128k-instruct:free`\n- `nvidia/nemotron-3-ultra:free`\n- `nvidia/nemotron-3-ultra-550b-a55b:free`\n- `mistralai/mistral-7b-instruct:free`\n- `mistralai/mistral-nemo:free`\n- `gryphe/mythomax-l2-13b:free`\n\n## CommandCode evaluation\n\nSource: /Users/cyrusmassoumi/misc-sheets/src/commandcode-chat.js\n\n- Free tier: yes, no credit card required\n- API: OpenAI-compatible chat completions at https://api.commandcode.com/v1/chat/completions\n- Auth: Bearer token (API key from dashboard)\n- Models: commandcode-default, commandcode-reasoning, commandcode-fast\n- cline support: `cline -P commandcode -m <model>` (provider installed)\n- Rate limits: not published in source; dashboard shows per-model limits\n- node --check src/commandcode-chat.js: passes\n\n## Best 3 free coders (ranked)\n\n1. **cohere/north-mini-code:free** (OpenRouter) — designated coder default, 128k context, zero token price\n2. **qwen/qwen-2.5-coder-32b-instruct:free** (OpenRouter) — 32B coding specialist, 128k context\n3. **commandcode-default** (CommandCode) — native free tier, no card, OpenAI-compatible, cline-ready\n\n## Evidence sources (all fetched 2026-10-08)\n\nOpenRouter: https://openrouter.ai/api/v1/models\nGroq: https://api.groq.com/openai/v1/models\nCerebras: https://api.cerebras.ai/v1/models\nTogether: https://api.together.xyz/v1/models\nHugging Face: https://huggingface.co/api/models?filter=inference\nMistral: https://api.mistral.ai/v1/models\nNVIDIA NIM: https://integrate.api.nvidia.com/v1/models\nCommandCode source: src/commandcode-chat.js\nOpenRouter free models file: data/openrouter-free-models-2026-10-08.json",
  "published": 1,
  "slug": "free-models-cross-platform",
  "title": "Free model inventory across 7 platforms + CommandCode: 4 key-gated, 2 keyless, 15 OpenRouter free, 3 recommended coders",
  "type": "article",
  "created": "2026-10-08T20:55:24.769Z",
  "updated": "2026-10-08T21:05:53.953Z",
  "version": 3,
  "hash": "a702d3882e0d9ec2792bd6550596ece5890bb145faa4d1c05accf391f94ebb73",
  "styling": {
    "scope": "shared",
    "how": "no value on the page is set by hand: each comes from this theme, and each theme value becomes the CSS variable named beside it. PATCH https://miscsubjects.com/api/jarticles/theme changes them.",
    "widget_style": {
      "what": "every widget may carry style: {…}; these are the only keys it reads",
      "rotate": "degrees, a number",
      "offset_x": "pixels, a number",
      "offset_y": "pixels, a number",
      "pulse": "true to pulse"
    },
    "theme": {
      "color": {
        "page_bg": "#f5f5f7",
        "sheet_bg": "#ffffff",
        "ink": "#1d1d1f",
        "soft": "#424245",
        "muted": "#6e6e73",
        "dim": "#86868b",
        "line": "#d2d2d7",
        "accent": "#0071e3",
        "accent_soft": "rgba(0,113,227,0.08)",
        "link": "#0066cc",
        "selection": "rgba(0,113,227,0.18)",
        "widget_bg": "#f5f5f7",
        "widget_border": "#d2d2d7",
        "card_bg": "#ffffff",
        "code_bg": "#f5f5f7",
        "json_bg": "#161b19",
        "json_ink": "#e6e1d4",
        "json_key": "#7fd3c3",
        "json_string": "#e9c46a",
        "json_number": "#f4a261",
        "json_bool": "#c792ea",
        "json_null": "#928d7e",
        "json_punct": "#6b6759",
        "json_bar": "#0e1512",
        "kind_badge_bg": "#0e6e60",
        "kind_badge_ink": "#ffffff"
      },
      "color_dark": {
        "page_bg": "#000000",
        "sheet_bg": "#1d1d1f",
        "ink": "#f5f5f7",
        "soft": "#d2d2d7",
        "muted": "#a1a1a6",
        "dim": "#86868b",
        "line": "#424245",
        "accent": "#2997ff",
        "accent_soft": "rgba(41,151,255,0.12)",
        "link": "#2997ff",
        "selection": "rgba(41,151,255,0.25)",
        "widget_bg": "#2c2c2e",
        "widget_border": "#424245",
        "card_bg": "#1d1d1f",
        "code_bg": "#2c2c2e",
        "json_bg": "#0a0d0c",
        "json_ink": "#e6e1d4",
        "json_key": "#7fd3c3",
        "json_string": "#e9c46a",
        "json_number": "#f4a261",
        "json_bool": "#c792ea",
        "json_null": "#757062",
        "json_punct": "#5d665f",
        "json_bar": "#060807",
        "kind_badge_bg": "#4fc1ab",
        "kind_badge_ink": "#0b0f0d"
      },
      "font": {
        "display": "-apple-system,BlinkMacSystemFont,\"SF Pro Display\",\"SF Pro Text\",\"Helvetica Neue\",Helvetica,Arial,sans-serif",
        "body": "-apple-system,BlinkMacSystemFont,\"SF Pro Display\",\"SF Pro Text\",\"Helvetica Neue\",Helvetica,Arial,sans-serif",
        "mono": "ui-monospace,SFMono-Regular,\"SF Mono\",Menlo,Consolas,monospace",
        "google_fonts": ""
      },
      "size": {
        "body": "17px",
        "small": "17px",
        "eye": "17px",
        "lead": "17px",
        "h1": "52px",
        "h2": "34px",
        "h3": "22px",
        "byline": "17px",
        "h1_measure": "none",
        "code": "17px",
        "json": "17px",
        "widget_title": "17px"
      },
      "leading": {
        "body": "1.7",
        "head": "1.18",
        "lead": "1.5",
        "json": "1.6"
      },
      "weight": {
        "display": "700",
        "head": "700",
        "body": "400",
        "strong": "700",
        "eye": "700"
      },
      "tracking": {
        "eye": "0.14em",
        "display": "-0.03em",
        "body": "-0.006em",
        "badge": "0.08em"
      },
      "layout": {
        "sheet_width": "1000px",
        "text_width": "880px",
        "gutter": "16px",
        "sheet_padding": "56px 64px 64px",
        "sheet_padding_mobile": "24px 18px 40px",
        "sheet_margin": "28px auto 72px",
        "block_gap": "1.15em",
        "widget_gap": "28px",
        "grid_gap": "14px"
      },
      "border": {
        "sheet": "0px solid",
        "sheet_radius": "30px",
        "widget": "1px solid",
        "widget_radius": "24px",
        "card_radius": "24px",
        "badge_radius": "999px",
        "rule": "1px solid",
        "code_radius": "18px",
        "accent_bar": "3px"
      },
      "shadow": {
        "sheet": "0 1px 1px rgba(0,0,0,.02),0 6px 26px rgba(0,0,0,.05)",
        "widget": "none",
        "card_hover": "0 10px 28px -16px rgba(28,27,23,0.35)"
      },
      "motion": {
        "hover": "160ms ease"
      }
    }
  },
  "page": "https://miscsubjects.com/a/free-models-cross-platform",
  "json": "https://miscsubjects.com/a/free-models-cross-platform.json",
  "markdown": "https://miscsubjects.com/a/free-models-cross-platform.md",
  "theme": "https://miscsubjects.com/article-theme.json",
  "calls": [
    {
      "what": "this article as a page (no key)",
      "method": "GET",
      "url": "https://miscsubjects.com/a/free-models-cross-platform",
      "headers": {}
    },
    {
      "what": "this article as its object (no key)",
      "method": "GET",
      "url": "https://miscsubjects.com/a/free-models-cross-platform.json",
      "headers": {}
    },
    {
      "what": "this article as Markdown (no key)",
      "method": "GET",
      "url": "https://miscsubjects.com/a/free-models-cross-platform.md",
      "headers": {}
    },
    {
      "what": "the object with its hash, drafts too",
      "method": "GET",
      "url": "https://miscsubjects.com/api/jarticles/free-models-cross-platform",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)"
      }
    },
    {
      "what": "one piece and that piece’s hash",
      "method": "GET",
      "url": "https://miscsubjects.com/api/jarticles/free-models-cross-platform/at?path=facts",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)"
      }
    },
    {
      "what": "grep: every key or value that matches, with the path to change it",
      "method": "GET",
      "url": "https://miscsubjects.com/api/jarticles/free-models-cross-platform/grep?q=owner",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)"
      }
    },
    {
      "what": "change pieces (set, merge, delete, append, insert, move); if-match is the hash",
      "method": "PATCH",
      "url": "https://miscsubjects.com/api/jarticles/free-models-cross-platform",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)",
        "content-type": "application/json",
        "if-match": "<hash from the read>"
      },
      "body": {
        "ops": [
          {
            "op": "set",
            "path": "facts.example",
            "value": 1
          }
        ]
      }
    },
    {
      "what": "replace the whole object",
      "method": "PUT",
      "url": "https://miscsubjects.com/api/jarticles/free-models-cross-platform",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)",
        "content-type": "application/json",
        "if-match": "<hash>"
      },
      "body": {
        "slug": "free-models-cross-platform",
        "title": "…"
      }
    },
    {
      "what": "fetch every source, hash what came back and check the quote is in it",
      "method": "POST",
      "url": "https://miscsubjects.com/api/jarticles/free-models-cross-platform/verify",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)",
        "content-type": "application/json"
      },
      "body": {}
    },
    {
      "what": "an Obsidian-style command",
      "method": "POST",
      "url": "https://miscsubjects.com/api/jarticles/cli",
      "headers": {
        "x-sheets-key": "$(cat /Users/cyrusmassoumi/.misc-sheets-key)",
        "content-type": "application/json"
      },
      "body": {
        "command": "backlinks",
        "file": "free-models-cross-platform"
      }
    }
  ]
}