{"id":50639379,"url":"https://github.com/cverinc/clikae","last_synced_at":"2026-06-07T07:01:42.213Z","repository":{"id":360958452,"uuid":"1252447134","full_name":"CVERInc/clikae","owner":"CVERInc","description":"ｷﾘｶｴ — an on-ramp for AI coding CLIs: type clikae and land on your recent sessions across every Claude Code, Codex, Gemini \u0026 Antigravity account, each with a recap of where you left off, in a burn order whose fuel dots show which tank still has quota. Pure bash, MIT. (also switches gh/kubectl/aws…)","archived":false,"fork":false,"pushed_at":"2026-06-05T07:27:06.000Z","size":747,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T09:11:28.707Z","etag":null,"topics":["account-switcher","ai-cli","bash","claude-code","cli","codex","developer-tools","macos","resume","session-manager"],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/CVERInc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-05-28T14:27:14.000Z","updated_at":"2026-06-05T07:27:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CVERInc/clikae","commit_stats":null,"previous_names":["cverinc/clikae"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/CVERInc/clikae","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CVERInc%2Fclikae","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CVERInc%2Fclikae/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CVERInc%2Fclikae/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CVERInc%2Fclikae/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CVERInc","download_url":"https://codeload.github.com/CVERInc/clikae/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CVERInc%2Fclikae/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34011812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"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":["account-switcher","ai-cli","bash","claude-code","cli","codex","developer-tools","macos","resume","session-manager"],"created_at":"2026-06-07T07:01:38.689Z","updated_at":"2026-06-07T07:01:42.207Z","avatar_url":"https://github.com/CVERInc.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# clikae · ｷﾘｶｴ\n\n\u003e **Your starting point for working with AI coding CLIs.** Type `clikae` and land on everything you were just doing — your recent sessions across every account and every engine (Claude Code, Codex, Gemini, Antigravity), each with a one-line recap of where you left off. Pick one and pick up where you were.\n\u003e\n\u003e *\"Kirikae\" (切り替え, ki-ri-ka-e) is Japanese for \"switching\".*\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Status](https://img.shields.io/badge/status-v0.5.14-blue.svg)](CHANGELOG.md)\n\n\u003e ⚠️ **Unofficial.** `clikae` is a community tool. It is not affiliated with, endorsed by, or sponsored by any of the CLI vendors it integrates with. \"Claude\" is a trademark of Anthropic, PBC; other CLI names are trademarks of their respective owners.\n\n---\n\n## What \u0026 why\n\nYou're juggling AI coding sessions across more than one account — two Claude subscriptions because one Max plan ran dry, a Codex login, maybe Antigravity too — in different terminals, on different projects, half of them unfinished. *Which one was that in? Which account? What was I even doing?* So you `/clear`, reopen, and re-explain the project to a fresh session.\n\n`clikae` is the on-ramp that fixes it: type `clikae` and you land on your recent sessions across **every account and every engine**, newest first, each with a one-line **recap** of where you left off (read free from Claude's own session summary). Pick one, hit Enter, and you're back exactly where you were — right account, right session. _(It also cleanly switches any env-var CLI — gh, gcloud, kubectl, aws… — but AI coding CLIs are where it shines.)_\n\n`clikae` is a small, pure-bash tool. The name is 切り替え — *switching* — so\n**clikae is the verb**: `clikae \u003cengine\u003e \u003ctank\u003e` points an engine (a CLI like\nclaude, codex, gh) at one of your tanks (an account/config) and runs it. No verb\nto memorise; the program name *is* the verb.\n\nIt:\n\n1. Creates **isolated tank directories** for each engine (one folder per engine + tank).\n2. Generates **shell aliases** (`claude-work`, `gh-personal`, …) you can use in a new terminal.\n3. On macOS, generates **double-clickable `.app` launchers** that open a Terminal window with the right env vars set and a custom window title so you can tell them apart.\n4. **Carries a live session to another tank** when one runs dry — `clikae to \u003ctank\u003e` keeps the same conversation going on the other account's quota (and `clikae to \u003cother-engine\u003e` hands a written brief across vendors, summarized **on-device** by a local model when you have one — `apfel`, `ollama`, or `llm` — so your session never leaves your machine, costs nothing, and works offline).\n5. **Runs headless tasks across tanks** — `clikae burn \u003cengine\u003e \u003ctank\u003e --artifact \u003cpath\u003e -- \u003ccmd\u003e` runs a task on a tank, verifies it by the **artifact** it produces (never the exit code — `codex exec` exits 0 even when it hit its limit), and re-fires it on the next tank if one runs dry. The headless sibling of `clikae to`.\n6. Cleans up after itself when you're done with a tank.\n\nIt works for any CLI that selects its config via an environment variable (or a flag), ships with built-in adapters for **Claude Code, OpenAI Codex, GitHub CLI, gcloud, Docker, Helm, kubectl, AWS, Azure CLI, npm, Terraform, Pulumi, and Vercel** (plus real **per-account multi-tank for Antigravity / agy** — each tank carries its own Google login via the macOS Keychain), and adding a new one is ~10 lines of bash. No daemons, no global state, no network calls — every line is auditable.\n\n## Install\n\n**Homebrew** (macOS / Linux):\n\n```bash\nbrew install CVERInc/clikae/clikae\n```\n\nThe `CVERInc/clikae/` prefix is the **tap** — clikae ships from its own tap repo,\nnot (yet) in homebrew-core, so the prefix is expected and normal (a fully\nsupported install, not a sign it's \"unpublished\").\n\n**Or `curl | bash`** (no Homebrew needed — installs to `~/.local`):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/CVERInc/clikae/main/install.sh | bash\n```\n\nIt's pure bash, so read it first if you'd rather not pipe to a shell — every line\nis auditable. From-source and custom-`PREFIX` options:\n[docs/installation.md](docs/installation.md).\n\n\u003e **Platform.** clikae is a **macOS / Linux** tool — it's bash, and that's the\n\u003e point (\"every line is auditable\"). A **PowerShell module** lives in\n\u003e [`powershell/`](powershell/) but is **community-contributed and unsupported**:\n\u003e it isn't part of the maintained grammar and its CI is informational only.\n\u003e Windows users very welcome to drive it — PRs appreciated.\n\n## 30 seconds\n\n```bash\nclikae init claude work --alias   # create a tank (+ a `claude-work` alias)\nclikae claude work                # switch to it and run — the bare verb\n```\n\nHit a usage limit mid-task? Carry the same conversation to your other tank and\nkeep going on its quota:\n\n```bash\nclikae to personal                # carry the live session to tank `personal`\nclikae to codex                   # or across engines (a written brief)\n```\n\nType **`clikae`** any time to land on your **home board**: your recent sessions\nacross every account and engine (newest first, each with a one-line recap), above\nyour tanks in a single **burn order** you can rearrange with `[` / `]`. Every tank\nwears a traffic-light **fuel dot** — 🟢 ready · 🔴 dry (with the vendor's reset\ntime) · ○ no reading — so one glance tells you which account still has gas in it:\n\n```bash\nclikae                            # your home board (run `clikae doctor` for a health check)\n```\n\n## Documentation\n\n- **[Installation](docs/installation.md)** — Homebrew, from source, `curl | bash`, PATH setup.\n- **[Usage](docs/usage.md)** — full command reference, the `migrate` command, how it works, supported CLIs.\n- **[Grammar](docs/grammar.md)** — the language clikae speaks: why it's a verb, engine/tank/fuel, `clikae to`, agy.\n- **[Troubleshooting](docs/troubleshooting.md)** — aliases not loading, Gatekeeper on `.app`, AWS profiles, undoing rc edits.\n- **[Expectations](docs/EXPECTATIONS.md)** — \"is this a bug?\" — behaviours that look surprising but are deliberate (the fuel dot, codex resume/time, agy's global switch, …).\n- **[Claude on macOS](docs/claude-on-macos.md)** — why migrating asks you to log in again (Keychain), and why the startup screen can look different (it's not clikae).\n- **[Adding an adapter](docs/adding-an-adapter.md)** — teach clikae a new CLI.\n\n## Roadmap\n\n- **v0.1** — core CLI, claude adapter, macOS `.app` launchers, install script.\n- **v0.2** — 7 built-in adapters (claude, gh, gcloud, docker, helm, kubectl, aws), `bats-core` test suite + CI on Linux \u0026 macOS, `migrate` command for hand-rolled setups.\n- **v0.3** — Homebrew tap, `migrate --keep-login` (carries the macOS Keychain token across a move), split docs.\n- **v0.4** — Four more adapters (`az`, `npm`, `terraform`, `pulumi`; 11 total) and a `migrate` guard against moving an in-use config dir.\n- **v0.5** — the **fuel-tank grammar**: clikae becomes the verb (`clikae \u003cengine\u003e \u003ctank\u003e`), one `clikae to` carries a session onward (same engine resumes, another engine gets a written brief), Antigravity/agy folded into the same verbs, an engine/tank/fuel vocabulary throughout. See [docs/grammar.md](docs/grammar.md).\n- **v0.5.3** — the home board became a single, reorderable **burn order** (`[` / `]`); switch a tank by name alone (`clikae cver`); interface localisation (en-US / ja-JP / zh-TW, `clikae lang`); and a **BETA supervised launch** that carries you to the next tank automatically when you hit the limit (`clikae auto`, claude-only for now — feedback very welcome).\n- **v0.5.4** — the board's status dot became a **fuel gauge, not a \"you are here\"**: 🟢 ready · 🔴 dry (the vendor's verbatim reset time) · ○ no reading (engines clikae can't read from disk, e.g. codex — never a guessed green), plus a **BETA** yellow that relays Claude's own weekly-usage notice. See [docs/DESIGN-board-fuel-dots.md](docs/DESIGN-board-fuel-dots.md).\n- **v0.5.5** — **Antigravity / agy becomes real multi-account** (each tank carries its own Google login via the macOS Keychain); **codex sessions join the home board's Continue list** (true cross-engine resume); **`clikae burn`** runs a headless task on a tank and re-fires it on the next when one runs dry (verified by artifact, not exit code); and a **cross-shell in-use guard** so `rename`/`migrate`/`remove` won't move a tank a session in another terminal is still using.\n- **v0.5.6** — hardened that in-use guard to be truly best-effort: a restricted `ps` (CI runners, locked-down hosts) no longer aborts `rename`/`migrate`/`remove`.\n- **v0.5.7** — the board shows only **burnable fuel tanks** (tool-CLI tanks live in `clikae tanks`); **`clikae app --board`** makes a launcher for the menu, not one tank; **Ghostty launchers** use a trusted config file (no \"Allow Ghostty to execute…\" dialog) and are re-signed for Apple Silicon; and switching to a tank whose CLI isn't installed gives a **helpful install hint** instead of `exec: … not found`.\n- **v0.5.14** — final polish so the released tarball matches `main` (no behaviour change): dropped a phantom `$CLIKAE_HOME/adapters` TODO comment and marked the world-class-gaps handoff historical.\n- **v0.5.13** — **`burn` hardening** from two dogfoods: a stale artifact no longer reads as success (judged by timestamp change; `--fresh` for a clean slate), `--timeout` falls back to a `perl` alarm when coreutils is absent, and a one-line run summary. Plus accurate agy docs/strings (state follows `$HOME`, login is one global Keychain entry).\n- **v0.5.12** — **state schema versioning**: `$CLIKAE_HOME/` now carries a `version` marker + a forward-migration runner, so future on-disk format changes are safe (read-only-preserving, invisible in normal use). With this, clikae's quality punch-list is empty.\n- **v0.5.11** — reliability + honesty polish: `clikae watch` starts dependably; `clikae to codex` says \"fresh start\" instead of promising a resume it can't do; auto-reroute won't dead-end on agy; `clikae tanks` shows an agy tank's real account; and a new **[\"is this a bug?\" Expectations guide](docs/EXPECTATIONS.md)** for behaviours that look surprising but are deliberate. Plus doc corrections (the board's language key is `l`, not `h`).\n- **v0.5.10** — **`burn` won't spend the quota you're using.** Its auto-reroute now skips a tank an interactive session is live on (`--allow-active` to override) and skips tanks that share an already-dry account — closing the original \"燒爆\" footgun (a headless job rerouting onto your live conversation's tank). Plus a clearer agy burn-refusal + a `clikae tanks` footnote that agy is interactive-only.\n- **v0.5.9** — **a quiet \"✨ update available\" notice** on the board (codex-style: update now / skip / skip-this-version; auto-detects `brew` vs `curl`, throttled + opt-out via `CLIKAE_NO_UPDATE_CHECK`); **carry a session to another tank even when it's not dry** (a third Continue choice — a deliberate account switch that keeps the conversation); a **\"· seen HH:MM\" tag** on codex/agy reset times so a snapshot reset reads honestly (codex reports UTC headless); and `burn --timeout` now **discloses** it needs coreutils (plus the two world-class P1 fixes — see [docs/HANDOFF-world-class-gaps.md](docs/HANDOFF-world-class-gaps.md)).\n- **v0.5.8** — **a dry tank carries you onward instead of dead-ending.** Pressing Enter on a Continue row whose tank is out of fuel now offers to **relay the session onto the next *fuelled* tank** — and the carry-onward selector became a **ring**: it circles the whole burn order (a tank earlier in your order is still a reserve), prefers a fuelled **same-engine** tank (a real resume), and skips any tank whose **account** is already exhausted (a sibling on the same login shares the dead quota). Plus **codex tanks can now show a red dot** — its exec-only limit is persisted so the board can read it later. See [docs/DESIGN-board-fuel-dots.md](docs/DESIGN-board-fuel-dots.md).\n- **v1.0** *(planned)* — macOS menu bar app (`gui/ClikaeMenuBar`): tanks per engine, active one marked, click-to-launch, per-engine `to`. Build-verified AppKit skeleton; signed `.app` packaging next.\n\n## Contributing\n\nPRs are very welcome — especially new adapters. Please read [docs/adding-an-adapter.md](docs/adding-an-adapter.md) first. For non-trivial changes, open an issue to discuss the approach before sending a PR.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcverinc%2Fclikae","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcverinc%2Fclikae","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcverinc%2Fclikae/lists"}