Skip to content
Yoink

Yoink for AI coding

Every AI coding login and provider, in one place.

Yoink is an open source (MIT) CLI for macOS, Linux and Windows, plus a macOS menu bar app. It switches Claude Code accounts, swaps ChatGPT (Codex), Kimi Code, Gemini and GitHub Copilot logins inside their own tools, and connects API-key providers like OpenAI, OpenRouter, Kimi, DeepSeek, z.ai, Ollama or any compatible endpoint to 13 coding harnesses.

curl -fsSL https://yoink.codes/install.sh | bash
~ yoink

Switched to codex-personal (sara@haddad.example · plus). Restart Codex to pick up the new login.

Tools and providers yoink works with

  • Claude Code
  • opencode
  • Qwen Code
  • Zed
  • Claude Desktop
  • Kimi Code
  • Moonshot AI
  • OpenRouter
  • DeepSeek
  • Z.ai
  • Ollama

Switch

Hit the cap? Be on another account.

Save each Claude, Codex, Kimi, Gemini or Copilot login once. A switch re-snapshots the active login first, so a refreshed token is never lost.

yoink
  • codex-worksara.haddad@lumenlabs.example · team
  • codex-personalsara@haddad.example · plus(active)
  1. Re-capture ~/.codex/auth.json (or the Codex keyring entry) into codex-work
  2. Restore ~/.codex/auth.json (or the Codex keyring entry) from codex-personal
  3. Switched to codex-personal (sara@haddad.example · plus)
  4. Restart Codex to pick up the new login.

ChatGPT (Codex) switched to codex-personal. Restart Codex to pick up the new login. ChatGPT (Codex): codex-personal (sara@haddad.example · plus), active. Enter switches. ChatGPT (Codex) not running.

One key. Thirteen harnesses.

Add an API key once, pick its models, and tick the coding tools it should reach. yoink writes each tool's own config file.

  1. ProviderA preset like OpenRouter or DeepSeek, or a custom base URL.
  2. API keyTyped into a hidden input and stored once.
  3. ModelsSearch the live model list and select as many as you like.
  4. HarnessesTick the installed tools to connect and pick their default model.
yoink › Add a provider
OpenRouter · •••••••••••• · 3 models
Connected pi~/.pi/agent/models.json
Connected opencode~/.config/opencode/opencode.json
Connected Qwen Code~/.qwen/settings.json
Done. Restart running harnesses to pick up the change.
Edit models

Connected pi, opencode, Qwen Code. Restart running harnesses to pick up the change.

  • Enteredit models

Same profiles. Terminal or menu bar.

The yoink CLI runs on macOS, Linux and Windows. The macOS menu bar app switches Claude accounts and adds providers from the same profiles.

~ yoink

Switched to codex-personal (sara@haddad.example · plus). Restart Codex to pick up the new login.

Project status

Built in the open under the MIT license: yoink-cli was downloaded 34 times from npm last month, the repo has 4 stars on GitHub, and the latest CLI release is v0.6.6.

Star on GitHub

Safety

Touches seven keys. Leaves yours alone.

Connecting a provider to Claude Code writes seven env keys. Switching back strips exactly those seven, and every other key stays put.

Files yoink touches

  • ~/.config/yoink/profiles.json0600

    Saved Claude logins and providers

  • ~/.config/yoink/subscriptions.json0600

    Codex, Kimi, Gemini and Copilot snapshots

  • Keychain: Claude Code-credentialssecurity CLI

    Live Claude Code login on macOS

  • ~/.claude/.credentials.jsonowner-only

    Live Claude Code login on Linux (0600) and Windows (user ACLs)

  • ~/.claude.jsonatomic

    The oauthAccount identity block

  • ~/.claude/settings.json7 keys

    The managed env block for a provider

  • ./.claude/settings.local.json7 keys

    The same env block for one project only

  • ./.gitignoreasks

    Offers to ignore settings.local.json first

  • Harness configsatomic

    Provider entries for pi, omp, opencode, codex and the other harnesses

  • <harness config>.yoink.bakonce

    Backup before the first change

  • ~/.codex/auth.jsonon switch

    Live Codex login, rewritten only when you switch Codex

  • ~/.kimi-code/credentials/on switch

    Live Kimi login, rewritten only when you switch Kimi

  • ~/.gemini/oauth_creds.jsonon switch

    Live Gemini login, rewritten only when you switch Gemini

  • ~/.gemini/google_accounts.jsonon switch

    Active Google account for Gemini, rewritten only when you switch Gemini

  • ~/.copilot/config.jsonon switch

    Live Copilot login, rewritten only when you switch Copilot

  • Keychain: Codex Authon switch

    Live Codex login on macOS when Codex uses the keyring

  • ~/.config/yoink/cache/models-dev.jsoncache

    Cached models.dev catalog, refreshed daily

Every file and permission, in the security docs
~/.claude/settings.json
{
"permissions": { "allow": ["Bash(git status)"] },
"includeCoAuthoredBy": false,
"env": {
"DISABLE_TELEMETRY": "1",
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_AUTH_TOKEN": "sk-or-v1-****",
"ANTHROPIC_MODEL": "moonshotai/kimi-k2",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "moonshotai/kimi-k2",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "moonshotai/kimi-k2",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "moonshotai/kimi-k2",
"CLAUDE_CODE_SUBAGENT_MODEL": "moonshotai/kimi-k2"
}
}

7 managed keys added. 3 of your keys unchanged.

Install in one line.

On macOS and Linux, the install script downloads the binary for your OS, verifies its SHA-256 checksum when the release ships one and installs it to /usr/local/bin or ~/.local/bin.

curl -fsSL https://yoink.codes/install.sh | bash

Downloads the binary for your OS and architecture from the latest GitHub release, verifies its SHA-256 checksum when the release ships one and installs it to /usr/local/bin or ~/.local/bin.

Requirements: Apple Silicon and Intel. The menu bar app needs macOS 12 or later.

Then check that it is on your PATH:

yoink version

Stop logging in and out.

Save each login and API key once. Switch logins with Enter in the yoink menu, and connect keys from the same list.

curl -fsSL https://yoink.codes/install.sh | bash