{"adoption": {"forks": 107, "observed_at": "2026-08-28T04:03:26.619641+00:00", "stars": 1064}, "canonical_url": "https://ross.abutalabs.com/products/codex-shim", "card": {"archived": false, "artifact_type": "service", "description": "Local Responses-API shim that exposes Factory BYOK models (and optional ChatGPT GPT-5.5 passthrough) to Codex Desktop.", "domain": ["large-language-models", "developer-tools", "apis", "backend"], "enriched": true, "function": ["http-server", "middleware", "llm-inference", "sdk"], "health_score": 80, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["sybil-solutions/codex-shim"], "name": "sybil-solutions/codex-shim", "platform": ["python", "windows", "cross-platform", "cli"], "pushed_at": "2026-08-25T22:59:52+00:00", "repo": "sybil-solutions/codex-shim", "stars": 1064, "tags": ["api-shim", "responses-api", "codex", "byok", "model-routing", "proxy", "aiohttp", "chatgpt-passthrough", "cursor-passthrough", "local-server", "macos", "linux"], "topics": [], "urls": [], "use_cases": ["use my own API keys with Codex Desktop", "add custom models to the Codex model picker", "route Codex requests to Anthropic or OpenRouter models", "use my ChatGPT subscription's Codex model via API", "route coding tasks to the cheapest capable model automatically", "proxy and rewrite prompts before they hit an LLM upstream"], "what_it_is": "A local Python/aiohttp server that exposes an OpenAI Responses-compatible endpoint on loopback, letting Codex Desktop use any BYOK model (OpenAI, Anthropic, OpenRouter, local proxies) plus optional ChatGPT and Cursor subscription passthrough. It translates streaming responses, tool calls, and reasoning blocks between Codex's expected format and each upstream API without rebuilding Codex.", "when_to_avoid": ["you don't use Codex Desktop or Cursor", "you need a production-grade, officially supported API gateway", "you rely on Codex versions whose internal formats the shim hasn't been tested against", "you want a hosted service rather than a local loopback server"], "when_to_choose": ["you use Codex Desktop and want BYOK or subscription models it doesn't officially expose", "you want local model routing without rebuilding or patching Codex", "you need tool-call and streaming translation between Responses API and other LLM APIs", "you want a local proxy layer in front of LLM requests for prompt policy or deduplication"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/codex-shim", "repo": "sybil-solutions/codex-shim", "role": "main", "score": 58}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.619641+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:56:06.628609+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26a051cc9449e7ebd387c8c97fb9d4f82bde7433e4a117733b9e94226f71974b", "fetched_at": "2026-08-28T04:03:26.619641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sybil-solutions/codex-shim"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 7, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 103, "days_push": 8, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 58, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}