{"id":47737884,"url":"https://github.com/orchidfiles/ungate","last_synced_at":"2026-04-07T03:01:08.817Z","repository":{"id":348216868,"uuid":"1196903623","full_name":"orchidfiles/ungate","owner":"orchidfiles","description":"Use your Claude subscription in Cursor without an API key.","archived":false,"fork":false,"pushed_at":"2026-04-04T18:47:49.000Z","size":417,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-05T01:10:00.596Z","etag":null,"topics":["anthropic","claude","claude-code","cursor","cursor-extension","cursor-ide","minimax","openai"],"latest_commit_sha":null,"homepage":"https://open-vsx.org/extension/orchidfiles/ungate","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orchidfiles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-31T06:36:08.000Z","updated_at":"2026-04-04T18:38:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"30f1c327-5726-420e-8429-38f18c11772c","html_url":"https://github.com/orchidfiles/ungate","commit_stats":null,"previous_names":["orchidfiles/ungate"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/orchidfiles/ungate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orchidfiles%2Fungate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orchidfiles%2Fungate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orchidfiles%2Fungate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orchidfiles%2Fungate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orchidfiles","download_url":"https://codeload.github.com/orchidfiles/ungate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orchidfiles%2Fungate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31456664,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","claude","claude-code","cursor","cursor-extension","cursor-ide","minimax","openai"],"created_at":"2026-04-02T23:02:26.246Z","updated_at":"2026-04-06T02:01:09.077Z","avatar_url":"https://github.com/orchidfiles.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/orchidfiles/ungate/main/apps/extension/resources/icon.png\" alt=\"Ungate\" width=\"80\" /\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eUngate\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  A Cursor-first extension for using Claude, ChatGPT, and MiniMax subscriptions in Cursor through a local proxy that translates OpenAI-style requests into provider-native APIs.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://open-vsx.org/extension/orchidfiles/ungate\"\u003e\u003cimg src=\"https://img.shields.io/open-vsx/dt/orchidfiles/ungate\" alt=\"Open VSX Downloads\" /\u003e\u003c/a\u003e\n  \u003ca href=\"./LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"License: MIT\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/orchidfiles/ungate\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/orchidfiles/ungate\" alt=\"Last commit\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Why\n\nCursor can connect to OpenAI-compatible APIs, but each provider still has its own auth flow, model mapping, and streaming behavior. Claude and ChatGPT subscriptions use OAuth instead of direct API keys. MiniMax uses its own provider credentials. Ungate hides those differences behind one local proxy and one Cursor-compatible endpoint.\n\nUngate is not a general-purpose AI gateway. It is a Cursor-first extension focused on one job: getting Claude, GPT, and MiniMax working in Cursor with less setup and less operational overhead than a standalone multi-provider router.\n\n## How it works\n\nCursor allows a custom OpenAI Base URL. Ungate listens on that URL and translates requests to the target provider API, including streaming, tool calls, and vision where supported.\n\nCursor 3.0 introduced a bug: built-in model names can bypass `OpenAI Base URL` and go straight to the real provider API. In practice this means requests for standard Claude model names may skip Ungate entirely even when a proxy URL is configured. Ungate treats this as a bug because Cursor ignores the user's proxy setting for those models.\n\nWorkaround: use custom model IDs from the Ungate `Models` section instead of Cursor's built-in Claude model names.\n\nThe extension starts the proxy as a child process and shows its settings in a Webview panel. From there you configure the provider, copy the public proxy URL, and copy the proxy API key that Cursor uses to authenticate to your local proxy.\n\nUngate is about a shorter Cursor-specific setup path: install one extension, let it manage the local API lifecycle, configure providers in one place, and avoid running a separate gateway stack just to use Claude, GPT, or MiniMax in Cursor.\n\n## Features\n\n- [x] OpenAI-to-provider request translation\n- [x] Streaming responses\n- [x] Tool calls mapping\n- [x] Image support\n- [x] OAuth authentication via Claude or ChatGPT account\n- [x] MiniMax API key authentication\n- [x] MiniMax `\u003cthink\u003e...\u003c/think\u003e` reasoning separation\n- [x] Request analytics\n- [x] Analytics split by provider: Claude, OpenAI, and MiniMax\n- [x] Built-in web UI panel\n\n## Installation\n\nInstall from the marketplace:\n\n```sh\ncursor --install-extension orchidfiles.ungate\n```\n\nOr search `@id:orchidfiles.ungate` in the Extensions panel.\n\n[Open VSX](https://open-vsx.org/extension/orchidfiles/ungate)\n\n## Setup\n\n1. Install the extension. Ungate starts the local API automatically.\n2. Click the `Ungate :\u003cport\u003e` item in the status bar to open the Ungate panel.\n3. Choose the provider you want to use.\n4. For Claude, sign in with your Claude account through OAuth.\n5. For ChatGPT, sign in with your ChatGPT account through OAuth.\n6. For MiniMax, enter your MiniMax API key and choose a Base URL: `Global`, `China`, or `Custom`.\n7. In the Tunnel section, click `Start tunnel`, then copy the public URL shown in the panel.\n8. Paste it into Cursor Settings → Models → OpenAI Base URL.\n9. Copy the proxy API key from the same panel and paste it into Cursor Settings → Models → OpenAI API Key.\n10. In the Ungate `Models` section, copy the model IDs you want and add them as custom models in Cursor.\n11. If you use MiniMax, add `MiniMax-M2.7` as a custom model in Cursor.\n12. Select one of your custom models in Cursor and start chatting.\n\n## Development\n\n```sh\ngit clone https://github.com/orchidfiles/ungate.git\ncd ungate\npnpm install\n```\n\nBuild dev-kit (needed once, before other builds):\n\n```sh\npnpm --filter @ungate/dev-kit build\n```\n\nBuild the API:\n\n```sh\npnpm --filter @ungate/api build\n```\n\nBuild the extension:\n\n```sh\npnpm --filter ungate build\n```\n\n## License\n\nMIT\n\n## Support\n\nBug reports and feature requests: [GitHub issues](https://github.com/orchidfiles/ungate/issues)  \nEverything else: [orchid@orchidfiles.com](mailto:orchid@orchidfiles.com)\n\n---\n\nMade by the author of [orchidfiles.com](https://orchidfiles.com) — essays from inside startups.  \nIf you found `ungate` useful, you'll probably enjoy the essays.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forchidfiles%2Fungate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forchidfiles%2Fungate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forchidfiles%2Fungate/lists"}