{"adoption": {"forks": 224, "observed_at": "2026-08-28T04:07:55.869151+00:00", "stars": 3308}, "canonical_url": "https://ross.abutalabs.com/products/vibeproxy", "card": {"archived": false, "artifact_type": "application", "description": "Native macOS menu bar app to use your Claude Code & ChatGPT subscriptions with AI coding tools - no API keys needed", "domain": ["developer-tools", "large-language-models"], "enriched": true, "function": ["proxy", "auth", "api-gateway", "llm-inference", "developer-tools"], "health_score": 100, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["automazeio/vibeproxy"], "name": "automazeio/vibeproxy", "platform": ["cli"], "pushed_at": "2026-08-26T00:12:31+00:00", "repo": "automazeio/vibeproxy", "stars": 3308, "tags": ["menu-bar-app", "oauth", "claude-code", "chatgpt", "codex", "api-proxy", "subscription-reuse", "swiftui", "multi-account", "ai-agents", "command-line", "macos", "desktop"], "topics": ["claude-code", "claudecode", "cli-proxy", "codex", "gpt-5-codex", "factory-droids"], "urls": [], "use_cases": ["use my Claude Code subscription with AI coding tools without paying for API keys", "proxy ChatGPT/Codex subscription into an OpenAI-compatible API endpoint", "route multiple AI provider accounts with round-robin load balancing", "avoid account risk by routing Claude requests through Vercel AI Gateway", "manage OAuth tokens for AI CLIs from a macOS menu bar", "use Factory Droids or Amp CLI with my existing AI subscriptions"], "what_it_is": "VibeProxy is a native macOS menu bar app that proxies AI coding tools' API requests through your existing Claude Code, ChatGPT, Gemini, Kimi, Qwen, and other subscriptions, so you don't need separate API keys. It handles OAuth authentication, token management, multi-account round-robin routing, and optional Vercel AI Gateway integration.", "when_to_avoid": ["you're on Linux or Windows - it's a native macOS app", "you need a general-purpose production API gateway rather than a personal subscription proxy", "you want fully supported, ToS-guaranteed API access - subscription reuse may violate provider terms"], "when_to_choose": ["you're on macOS and already pay for Claude Code, ChatGPT, or similar subscriptions", "you want to use subscription-backed models with third-party AI coding CLIs without API keys", "you need multi-account rotation across AI providers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/vibeproxy", "repo": "automazeio/vibeproxy", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "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:07:55.869151+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:55.869151+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:42:37.329793+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89d18a8a371c4b28dcbaff4196962acc19eb39576fb848987aa9ca0b0e0ef7c7", "fetched_at": "2026-08-28T04:07:55.869151+00:00", "kind": "readme", "missing": false, "url": "https://github.com/automazeio/vibeproxy"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 23, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 334, "days_push": 8, "days_rel": 7, "gap_med": 0, "n_releases_24m": 296}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}