Subscriptions
Sign in to ChatGPT, Copilot, Cursor, Devin, Gemini, Grok, Kimi and more from Empryo with no add-on. One /login picker, credentials in your keychain.
Copy & share
On this page14 sections
If you already pay for a plan like ChatGPT Plus, you can use it in Empryo instead of buying API credit. Run /login, pick your account, and sign in. You do not need to install anything else.
Empryo stores the sign-in in your system keychain and renews it when it expires.
Accounts you can sign in toLink to this section
Most accounts sign in through your browser or with a device code (a short code you type on a web page). A few ask you to paste a key instead.
These accounts all appear under one provider, called Subscriptions:
| Account | How you sign in | Model ids |
|---|---|---|
| ChatGPT Codex | browser | subscriptions/gpt-* |
| ChatGPT Codex (device code) | device code | subscriptions/gpt-* |
| Grok (SuperGrok / X Premium) | browser | subscriptions/grok-* |
| Grok (device code) | device code | subscriptions/grok-* |
| Cursor | browser | subscriptions/cursor/* |
| Devin (Cognition) | browser | subscriptions/devin/* |
| Gemini CLI (Google Cloud Code Assist) | browser | subscriptions/google-gemini-cli/* |
| Antigravity (Google) | browser | subscriptions/google-antigravity/* |
| Kimi Code (Moonshot) | device code | subscriptions/kimi-code/* |
| Muse Code (Meta) | device code | subscriptions/muse-code/* |
| Fire Pass (Fireworks) | paste a key | subscriptions/* |
These accounts use the same /login list but keep their own provider, because each has its own models and billing:
| Account | How you sign in | Model ids |
|---|---|---|
| GitHub Copilot | device code | copilot/* |
| GitHub Copilot (Enterprise) | device code on your company's GitHub | copilot/* |
| OpenRouter | browser, which creates a key for you | openrouter/* |
| Ollama Cloud | paste a key | ollama-cloud/* |
| LLM Gateway, LLM Gateway DevPass | browser, which creates a key for you | llmgateway/* |
| Kilo Gateway | device code | kilo/* |
| Z.AI Coding Plan | browser, then paste the final page's address back | zai-coding-plan/* |
| Alibaba Coding Plan | paste a key | alibaba-coding-plan/* |
| Alibaba Token Plan | paste a key | alibaba-token-plan/* |
| Xiaomi MiMo | paste a key | xiaomi/* |
| Meta Model API | paste a key | meta/* |
Z.AI is the only sign-in that cannot finish on its own. The browser ends on a web page instead of returning to Empryo. Copy that page's address and paste it into Empryo when asked.
Some accounts offer the same base models. For example, Gemini CLI and Antigravity both serve gemini-* models. To keep them apart, their model ids include the account name (google-gemini-cli/…, google-antigravity/…). Cursor and Devin work the same way. This way you always know which account pays for a turn.
Signing inLink to this section
Run /login in the terminal UI or the desktop app. The list shows every account you can sign in to, marks the ones you are already signed in to, and starts the sign-in you pick.
Sign in
ChatGPT Codex
ChatGPT Codex (device code)
Cursor
Devin (Cognition)
GitHub Copilot device code
GitHub Copilot (Enterprise) ghe.example.com
Grok (SuperGrok / X Premium)
Grok (device code)
Gemini CLI
Antigravity
Kimi Code device code
Muse Code device code
Fire Pass paste key
OpenRouter
Ollama Cloud paste key
LLM Gateway signed in
Kilo Gateway device code
Z.AI Coding Plan
Alibaba Coding Plan paste key
Alibaba Token Plan paste key
Xiaomi MiMo paste key
Meta Muse paste keyEach row shows how the sign-in works and which account you are on. A Copilot Enterprise row also shows the GitHub host, so you can tell a company account from a personal one.
To skip the list, add the account name:
/login codex # ChatGPT, browser
/login codex-device # ChatGPT, device code
/login grok # Grok, browser
/login grok-device # Grok, device code
/login cursor # Cursor, browser
/login devin # Devin, browser
/login google-gemini-cli # Gemini CLI (Google Cloud Code Assist)
/login google-antigravity # Antigravity (Google)
/login kimi-code # Kimi Code, device code
/login muse-code # Muse Code (Meta), device code
/login copilot # GitHub Copilot
/login copilot-enterprise # GitHub Copilot on a GHE host
/login openrouter # OpenRouter, browser
/login firepass # Fire Pass, masked key entry, no browser
/login ollama-cloud # Ollama Cloud, masked key entry
/login kilo # Kilo Gateway, device code
/login zai-coding-plan # Z.AI GLM coding plan, browser then paste the redirect
/login alibaba-coding-plan # Qwen coding plan, masked key entry
/login alibaba-token-plan # Qwen token plan, masked key entry
/login xiaomi # Xiaomi MiMo, masked key entry
/login meta # Meta Model API, masked key entryBrand names work too: /login chatgpt goes to ChatGPT Codex, /login xai-oauth to Grok, /login zai and /login glm to the Z.AI coding plan, and /login qwen to the Alibaba coding plan.
For accounts marked "masked key entry", you paste the key into a hidden field (the keys panel in the terminal UI, a password field in the desktop app). You never type it on the command line. Alibaba and Xiaomi sell the same plan in several regions. Empryo tests your key and finds the right region for you.
You can also sign in without a UI:
empryo --headless --login codex
empryo --headless --login codex --no-browser--no-browser prints the sign-in address instead of opening a browser. This helps when you are connected to a machine over SSH. For the paste-a-key accounts, put the key after the name: empryo --headless --login firepass <key>.
If you pick an account you are already signed in to, Empryo asks before it continues. Signing in again replaces the stored sign-in.
When the browser cannot reach EmpryoLink to this section
Browser sign-ins send you back to a small local web server that Empryo starts on your machine.
- ChatGPT must use port 1455, because OpenAI only accepts that address. If something else is using port 1455, Empryo tells you before it opens the browser.
In that case, or when your browser is on another computer, use the device code instead:
/login codex-deviceEmpryo shows a code. Open auth.openai.com/codex/device, type the code, and you are done. No local port is used.
Remote machines and serversLink to this section
Browser sign-ins need a browser on the same machine as Empryo. Over SSH, in a container, or on a server with no desktop, your browser is somewhere else. You have three options, easiest first:
- Use a device code. ChatGPT (
codex-device), Grok (grok-device), Copilot, Copilot Enterprise, Kimi Code, Muse Code, and Kilo work from any browser on any machine. - Forward the port. Run
ssh -L 1455:localhost:1455 hostfor ChatGPT (54549 for OpenRouter). Then run/loginon the remote machine and open the printed address on your own computer. - Paste a key. Fire Pass, Ollama Cloud, and the coding plans accept a key directly.
Add --no-browser on machines that have no default browser.
Empryo stores sign-ins in your system's secret store: the keychain on macOS, the Windows credential protection on Windows, and the secret service on Linux desktops. Most Linux servers have no secret service. There, Empryo uses a file under the config folder that only your user can read. /keys shows where each key is stored.
Where the models show upLink to this section
Every signed-in account appears under the Subscriptions provider in the model picker, grouped by account. Model ids look like subscriptions/gpt-5.6-sol, subscriptions/grok-4.2, or subscriptions/cursor/composer. To switch plans, you just pick a different model.
Empryo asks each vendor which models your account can use. If the vendor does not answer, it falls back to models.dev data, and then to a built-in list.
When you sign out of an account, its models leave the picker.
Things to knowLink to this section
- The ChatGPT subscription only supports streamed replies. Anything that needs a non-streamed reply fails with a clear error.
Muse Code (Meta)Link to this section
/login muse-code shows a code. Open auth.meta.com/oauth/device, approve it with your Meta account, and Empryo gets a Muse Code key from Meta. Turns then bill to your Muse Code plan (Everyday, High, Power or Maximum Usage) instead of per token.
- Models. The picker lists the models your plan includes, from Meta's own Muse Code catalog, as
subscriptions/muse-code/<model>. That covers Muse Wonder, Muse Spark and, on Power and Maximum Usage, Muse Wonder Full. The-contributormodels are the Contributor mode versions: they give you more usage, and Meta may train on that content. - Usage. The 5-hour and weekly windows, with their reset times, show in
/usageand on the desktop usage page. Empryo asks Meta for them at most every 5 minutes, the same way Meta's own app does. When nothing has run for a while, the 5-hour window reads 0% and the weekly figure holds until its reset. - Terms. Meta's terms say the Muse Code key is for Meta's own coding app. Like every account on this page, using it in Empryo is at your own risk. For use Meta fully allows, save a Model API key with
/login meta. - Business and Enterprise (MMA) accounts cannot use the device sign-in. Use
/login metawith a Model API key. Those keys bill per token. - Effort follows the levels Meta lists for each model, usually
minimaltoxhigh, withmaxon Muse Wonder and Muse Spark 1.3. Meta rejects "no reasoning" (none) on these models, so Empryo sendsminimalinstead. With effort set tooffor auto, Empryo sends no level and Meta picks its own. - Muse Wonder is not available in South Korea.
Signing outLink to this section
Run /login, pick the account, and choose Sign out. This deletes the stored sign-in from your machine. It does not change your account with the vendor. To sign back in, follow the same steps as the first time.
Subscriptions, proxy, or an API keyLink to this section
| Subscriptions | Proxy | API key | |
|---|---|---|---|
| Install | nothing | empryo addon install proxy | nothing |
| Covers | ChatGPT, Copilot, Grok, Cursor, Devin, Gemini, and more | Claude, ChatGPT, Gemini, Grok | every provider |
| Where the credential lives | your keychain | the proxy's own files | your keychain |
| Accounts per provider | several, with automatic switching | several | one key, or several for custom providers |
| You pay with | your plan | your plan | credit, per token |
| Usage display | plan limits | plan limits | spend per token |
You can use more than one. They are separate providers with separate sign-ins, and the model id tells you which one runs the turn.
More than one accountLink to this section
Run /login again and pick Add another account. Both accounts stay signed in, and the list marks the one that will pay for the next turn.
One email address can have more than one plan, for example a Team seat and a personal Max plan. Empryo keeps them as two separate accounts.
When a plan runs out, Empryo switches to the next account. The used-up account waits until its limit resets. The terminal shows which account took over, next to the plan meter.
- Only a used-up plan causes a switch. A short "too many requests" error is waited out on the same account.
- Limits are tracked per model family. Using up the weekly limit for one model family does not stop the account from serving other models.
Empryo also switches before sending a request if it already knows the current plan is used up. That way a long turn does not fail halfway through.
You can pick an account by hand at any time from /login. The same list lets you switch, add, and sign out of accounts.
A model on a chosen accountLink to this section
With two or more accounts on one plan, the model picker also lists each account's models under its own heading, for example Claude Pro/Max · work@example.com. A model picked there always uses that account, whichever one is active, so one tab can run on your work plan while workers run on your personal one. The model id carries the account after a #:
subscriptions/claude-opus-5-5#work@example.comUse that id anywhere a model goes: a tab, a /router role, or "dispatch to subscriptions/claude-opus-5-5#home@example.com". A model on a chosen account never switches accounts: if that plan runs out, the request fails instead of moving to another account. Models without # keep following the active account as before.
How much of your plan is leftLink to this section
Empryo asks each vendor for your usage, so the numbers match what the vendor's own app shows. That includes the 5-hour limit, the weekly limit, and per-model weekly limits where the plan has them, each with its reset time.
| Account | What the meter shows | Unit |
|---|---|---|
| ChatGPT Codex | 5-hour and weekly limits | percent |
| Gemini Code Assist | per-model daily request limits | percent |
| Cursor | Cursor models and other models for the billing month | percent |
| GitHub Copilot | premium requests, chat, and completions against your seat's allowance | requests |
| OpenRouter | spend against the key's credit limit | US dollars |
| Muse Code | 5-hour and weekly limits, checked with Meta at most every 5 minutes and updated by each reply | percent |
Keep two things in mind:
- Copilot counts premium requests, not tokens. If your seat allows extra paid usage, it keeps working past the allowance and GitHub bills you for it. Empryo shows how many extra requests you used and estimates the cost from GitHub's published price per request. GitHub does not report that dollar amount, so Empryo labels it as an estimate. If the price changes, set
EMPRYO_COPILOT_PREMIUM_USDto the new rate. - OpenRouter reports your total spend and, if the key has one, its credit limit. For a key with no limit, Empryo shows the spend without a progress bar.
When you use a subscription model, the status bar shows your plan meter in both the terminal and the desktop app. /usage lists every limit for every account. The desktop app's usage page shows one card per plan.
The per-token costs Empryo shows for subscription models are estimates based on token counts and models.dev prices. They are not what you are billed. Your plan meter is the number that matters.
TroubleshootingLink to this section
Port 1455 is in use
Only ChatGPT needs that exact port. Close whatever is using it, or run /login codex-device instead.
The browser opened but nothing came back
Empryo listens on both IPv4 and IPv6 for the return address. If the page still hangs, close it and use a device-code sign-in instead.
Signed in, but no models
Open /login and check the account. A sign-in that has passed its renewal window can still look signed in until the next renewal fails. Sign in again.
Usage credits are required for long context requests
This comes from a model using the 1M-token context option on a subscription. Empryo does not request that option on subscription models, so pick a model with a native 1M-token window instead.
Workspace is not authorized in this region
This happens with a company ChatGPT workspace tied to a region. Sign in again to fix it.
RelatedLink to this section
- Proxy: an optional add-on that runs subscriptions through a local relay
- GitHub Copilot: setup and usage limits for Copilot
- Providers overview: every way to connect a model
- Cost tracking: how per-token spending is shown