hcscat Multi CLIRegister project folders and explicitly choose Codex, Antigravity (agy), and Claude Code sessions for each project in VS Code. Work in native CLI terminals in the editor area. hcscat Multi CLI runs on Windows and does not depend on Orca or herdr. Version: 0.8.1 · Local Windows x64 · VS Code 1.140+ Source repository: hcscat/hcscat-multi-cli. Report bugs and feature requests through GitHub Issues. This README contains the public product overview, current implementation status, validation results, and roadmap. The UI supports Korean and English, following the VS Code display language.
Features
One project TreeView contains selected sessions from different providers. Session rows and terminal tabs use the ChatGPT/OpenAI Blossom for Codex, Google's gradient G for Antigravity, and the official Claude Spark for Claude Code. Codex switches between black and white marks with the theme; Google and Claude retain their official colors. The agy marker identifies the provider, not the model used in an individual session. All assets are packaged for offline use; see third-party notices for sources and ownership. The view has two levels: registered project path, then selected sessions. Paths are not repeated beside session titles. These paths and titles are synthetic examples:
The view displays only registered projects and selected sessions. Opening, refreshing, or redisplaying it, and changing the VS Code workspace, never queries native provider catalogs. Register any existing local project folder, including folders outside the open workspace. Add existing sessions searches one provider at a time. The default search covers the registered project and its descendants; exact-folder search is also available. An expanded search includes records without known paths, which require explicit association with the project's launch folder. Choose multiple records to register without automatically resuming them. Registration metadata is stored in the current VS Code profile's local extension state, independently of its workspace, and is not registered for Settings Sync. No transcript or credentials are stored. Unregister removes an entry from this extension only; native conversations, folders, and open terminals remain intact. Rows show Terminal open · this window only for an owned Resume terminal matching the provider, store and session identity. External state unverified is not a closed/idle status. Newly created session IDs, other apps/windows and earlier activations are not inferred from titles or folders; Claude entries can therefore remain unverified. Presence does not verify AI activity or follow conversation switching inside the CLI. The terminal-shaped row action is Resume, not the status indicator. See privacy, changelog and Marketplace preparation and identity migration. A concise listing draft is available for review. Publisher Installation and usageRequirements: Windows x64, VS Code 1.140 or later, and the native CLI plus authentication/configuration for each provider you want to use. Execution requires a trusted local workspace. Codex discovery requires CLI 0.153.4 or later, but compatibility with every later release is not guaranteed.
The + action opens the native CLI's new-session screen. The extension does not send a prompt or select a model. Follow the CLI's login, folder-trust, and other startup steps. A session ID may not be saved until the first interaction; use Add existing sessions after it is saved. Refreshing the registered view does not discover new native sessions. Language and subscription usageExtension messages, commands, and settings follow the effective VS Code display language. Korean locales use Korean; English and other locales use English. Use Configure Display Language, install the appropriate language pack, and restart the window. The extension does not independently choose the operating system language. User titles, paths, and native CLI output remain unchanged. The left status bar shows used percentages, for example Hover, or click the status bar and choose a provider, for every reported window, used/remaining percentages, relative and absolute reset times, plan, credits, reported earned-reset count and receipt time. A Pro 5h window remains in details if the server reports it. Context usage and estimated token costs are separate. Missing/unconnected data is
Connecting Claude/agy changes only statusLine in the native CLI settings. It preserves the prior custom/Orca command's input and output and saves a small local restoration record. Open the CLI or let its statusline refresh to receive data. Disconnect usage restores the prior statusLine only if the installed value is unchanged; external edits are never overwritten. These connections do not install Hooks or change existing lifecycle Hooks. Disconnect before uninstalling the extension. Reconnect after an upgrade changes the installation path. Hiding the status bar does not disconnect a native statusline. The extension creates no additional authentication, copies no credentials, and sends no model prompt. Profile-local caches contain only quota, timestamps, and optional plan/credit metadata. Codex polling runs at 120-second intervals, manual refresh is limited to once per 30 seconds, and failures back off to 16 minutes. Unfocused windows skip new polls; an in-flight request has a ten-second timeout. Turning off the status bar prevents new polling. Claude/agy helpers run only when the native CLI requests a statusline; no persistent service is added. Editor terminals and automatic layoutResume, new CLI sessions, and the Codex session picker open in the editor area rather than the bottom panel. The extension arranges terminals it created in the current window:
Rearrangement moves existing processes. Repeated Resume of the same saved session reuses its terminal; the notification offers a separate new terminal if needed. + always opens a fresh CLI. Closing a managed terminal rearranges the remaining terminals when global layout is safe. The limit is nine. Document tabs are preserved, although editor groups may merge or move. Other extensions' terminals and terminals restored after a window reload are not automatically managed. After the last managed terminal closes, the current document layout remains in place. When another editor terminal is present, a new CLI opens as a tab in the current editor group while the existing layout and processes are preserved. Closing a managed terminal also leaves that layout intact. After the unrelated terminal moves to the panel or closes, a later launch can resume automatic layout for terminals whose ownership is known. Retained terminals are not adopted after ownership resets; colliding new names receive a suffix. See the coexistence fix and validation. If another editor terminal is present, new automatic layouts are blocked to avoid moving it indirectly. Move that terminal to the bottom panel or close it before opening another managed terminal. A future alternative without automatic layout is under consideration. Discovery and Resume limitationsCodex: Listing and Resume use the same native executable and effective agy: Resume validates a CLI-origin UUID in the default Antigravity's summary schema is private and can change. Version differences, locks, or missing columns may cause partial discovery failures. Metadata queries do not modify DB records, but SQLite read-only connections can create or update Claude: Resume resolves the native executable/configuration folder, verifies the registered store and current saved-session metadata through the official SDK, checks native execution records and runs Codex registration search reads metadata pages and compares directory boundaries. Each operation loads up to 50 new matching records or 20 pages; Find more continues from the remaining cursor. The total scan limit is 10,000 records, including malformed or duplicate Codex entries. Claude and agy catalogs are also capped at 10,000 records. Provider query failures and malformed-record counts remain separate from the persistent registration list. Source, query-server status, and terminal creation are not proof of successful history restoration. Inspect the native CLI screen for the restored conversation or errors. Resume reopens saved state; it does not attach to another terminal process. Remote-SSH, WSL, containers, macOS, virtual workspaces, session deletion/archival, automatic repair/migration, and a custom chat UI are outside current support. Settings and diagnosticsExecutable and data-root settings use user/machine scope. Workspace and folder settings cannot replace them. Usage visibility is a window setting.
An invalid explicit setting is not silently replaced with a different executable or store. Diagnostics report the registered project count and explain that view display does not query catalogs or inspect global external running state without recording full conversations, credentials, raw provider errors, or personal paths in the extension's Output Channel. App Server and native CLIs may still write their own logs and state. When a default store does not yet exist, a new native CLI may initialize it. The extension does not create the store itself and rejects nonexistent explicitly configured stores. Pending launches are cancelled when their configuration becomes stale. DevelopmentUse Node.js 22.13 or later and npm. The Windows CI workflow uses Node.js 22.
The source snapshot can be built independently. Generated outputs, installation profiles, provider data, and credentials are excluded. CI runs synthetic tests and builds a VSIX artifact; it does not invoke real AI accounts or automatically publish a GitHub Release or Marketplace extension.
Current status and validationVersion 0.8.1 (2026-10-27): use the approved pixel-cat and three-CLI composition as the extension-listing icon. The manifest points to Version 0.8.0 (2026-10-27): add verified Claude saved-conversation Resume, editor-terminal reuse and presence tracking, shorter usage-hover lines and an original 256px extension icon. Typecheck and 115 tests passed. A new authorized test conversation received one synthetic response; real Claude Code 2.1.311 then restored its known history in an editor terminal without a new prompt, reused the original PID and closed test-owned processes. Native folder/browser prompts were handled only by the opt-in test harness; the product leaves them interactive. See Claude Resume, hover and icon validation. Publication remains pending owner testing. Version 0.7.5 (2026-10-27): generalize installation guidance instead of describing a maintainer's particular installed profile. Runtime behavior is identical to 0.7.4. Keep the same publisher/name when updating; a prior local-development publisher is a separate identity requiring a reviewed migration. Binary validation remains separate from publication. Version 0.7.4 (2026-10-27): show used percentages for both 5h/7d periods in the status bar, a weekly-only summary for known Codex Pro variants, independent Agy model groups and the capitalized label Version 0.7.3 (2026-10-27): publisher Version 0.7.2 (2026-10-27): session rows track explicit Resume-terminal presence in this activation and leave external/new-session state unverified. Open/close events update the tree without catalog scans, watchers or polling. Multiple explicit terminals remain tracked and a surviving original can be reused after another closes. Publisher registration is being prepared; Typecheck and 102/102 tests passed. Real VS Code 1.143.1 development and isolated installed-VSIX checks verified command/view events, open/reuse/close updates and no automatic catalog discovery using virtual terminals and synthetic metadata; no native provider or model ran in these presence checks. The local 0.7.2 archive is 592,017 bytes, SHA-256 Version 0.7.1 (2026-10-27): an unrelated editor terminal no longer blocks new CLI startup. Global layout is skipped and the new terminal opens in the explicitly resolved current group. Close reflow preserves unrelated editors; safe automatic layout resumes on a subsequent launch. New terminal names avoid retained-name collisions. Duplicate-identity, late-conflict, Trust, cancellation and nine-terminal guards remain. The original 0.7.0 rejection was reproduced for all three providers; the detailed report records the new checks and limitations. Native Claude startup is now explicitly authorized and tested in a new test workspace; saved Claude-session Resume remains unimplemented. Typecheck and 98/98 tests passed. Development and isolated installed-VSIX coexistence checks passed with Claude Code 2.1.311, without model input. A separate real Host revalidated one-through-nine layouts, original processes/documents and the capacity limit. The local 0.7.1 VSIX is 588,091 bytes, SHA-256 Performance measurement update (2026-10-24): product runtime code and version 0.7.0 remain unchanged. The new The measured current workload did not reproduce a large recurring delay. Large catalogs, registered-list processing, and the lack of visible progress while discovery is pending remain separate improvement candidates. These observations do not establish full UI latency or make caching universally unnecessary. No automatic product optimization, installation, or release accompanies this measurement work. Generated profiles and VS Code logs may contain local paths and remain private; sanitized result JSON is kept separately. Validation on 2026-10-24: 98 native/Host metadata samples with zero errors, 150 empty registered-tree refresh checks, and 168 timed synthetic samples. Typecheck and 3/3 benchmark functional tests passed. That public snapshot had 92 files with zero privacy findings; 13 English Markdown files and 68 relative links passed checks. Export preserved independently maintained Markdown. The archived 0.7.0 checksum and all 21 runtime JS/MJS files matched that build. These measurements do not replace later runtime or installation checks. Version 0.7.0 (2026-10-19): Korean/English runtime and manifest localization follow the VS Code display language. The left status bar reads native Codex account limits and optionally receives Claude/agy statusline quota without new authentication or model prompts. Native statusline connect/disconnect preserves existing custom output and refuses to overwrite external changes. The obsolete hidden session TreeView and its events were removed; transient registration search remains. Shared PowerShell quoting replaces duplicate implementations. Other/custom CLI support is deferred. Typecheck, unused-local/parameter checks, and 93/93 synthetic/regression tests passed, including actual Windows bridge commands for agy and Claude Bash using synthetic JSON. A real native Codex quota read and agy startup reported quota without model input; the previous agy statusLine was restored after the isolated test. English and Korean Extension Host checks verified left alignment and the localized project prompt. The final installed VSIX verified registration without automatic discovery, one-through-nine layouts with original PIDs/document preservation, capacity enforcement, native agy quota receipt, and statusLine restoration. Initial layout runs exposed a focus race; bounded retries on the same owned terminal resolved the final installed test. Existing-session history restoration was not newly repeated. Claude subscription limits remain unverified with a real account; its native CLI was not executed. At the 2026-10-19 validation, the public snapshot had 84 files and zero privacy findings; this is a historical inventory, not the count after later documentation and benchmark additions. The final local 0.7.0 VSIX had 38 entries, zero package privacy findings, and 21 runtime JS/MJS files matching that build. LICENSE/NOTICE and the checksum were verified: 586,544 bytes, SHA-256 Version 0.6.1 (2026-10-11): cache-only agy records require a nonempty native conversation file. Stale recent-session pointers left after native deletion no longer recreate removed conversations in registration search. Provider cache files are not modified. This corrects a behavior found during the authorized local cleanup after the first 0.6.0 verification package; the earlier archive remains intact. Version 0.6.0 (2026-10-11): project registration and explicitly selected mixed-provider sessions replace the three provider views. Registration survives extension activation and is independent of the open workspace. View display and registered-list refresh perform no native discovery. Codex Resume reads current metadata; agy retains its CLI-origin/default-store checks. Unregistering never deletes native data. Configuration changes, registration removal, and Trust loss during pending launches prevent execution. The development Extension Host and the final 0.6.1 VSIX installed in a separate test profile verified registered Codex and agy history markers, duplicate terminal/PID reuse, simultaneous two-column display, registration removal, and one-through-nine editor layout behavior. Document tabs and original processes were preserved; a tenth request was blocked. A new authorized synthetic Codex response and persistent ID were verified. agy startup reported exhausted AI credits, so fresh agy response generation was not repeated; an existing authorized synthetic agy conversation restored its known marker without a new prompt. Claude discovery/execution was not run for this validation. Typecheck and 82/82 tests passed. All 69 public source files passed the privacy scan; ten English Markdown documents and 55 relative links/anchors passed validation. The final local 0.6.1 VSIX has 30 entries, zero privacy findings, and 15 runtime JS/MJS files matching the build. License/notice bytes and checksum were verified. The preserved local artifact is 562,229 bytes, SHA-256 Some Codex 0.159.2 test attempts stayed on native startup screens before a subsequent attempt with the same installed package and settings passed. No shared daemon was terminated or reset, and no daemon override was injected. These checks do not establish universal compatibility across CLI versions or sessions. Concurrent registration edits from multiple VS Code windows remain unverified. Distribution audit (2026-10-06): all 64 public files and both reachable source commits passed the repeated privacy review. The only identical asset pairs inside this repository are the light/dark Google and Claude marks, retained as separate theme entry points. The CI package for commit First public source publication (2026-10-05): the initial source commit Version 0.5.3 (2026-10-05): the selected display name is hcscat Multi CLI. The extension listing, Activity Bar, 21 command titles, settings heading, Output Channel, App Server display title, development launch label, and current attribution documents use the new name. Package/publisher identifiers, commands, configuration keys, views, and the App Server identity remain stable. These identifiers and support declarations were compared with the preceding package manifest. No session-handling behavior changed. Typecheck, all 70 tests, and packaging passed. The final VSIX contains 28 entries and passes the privacy scan including generated runtime files. Its display name, license/notice content, README, 13 runtime files, and checksum were verified. The new local artifact is At the initial display-name review, the public snapshot contained 63 files and passed its privacy and documentation checks. The subsequent source publication added Latest licensing update (2026-10-04): the owner selected Apache-2.0 and original-author attribution to hcscat. LICENSE and NOTICE are included in the source snapshot and VSIX allowlist, and packaging no longer skips the license-file check. Typecheck and all 70 tests passed. A separate same-version verification VSIX passed checks of its 28 entries, license/notice bytes, manifest author/license, VSIX license reference, and SHA-256 sidecar; the package privacy scan found no issues. The source snapshot has 62 files with no privacy findings, and nine English Markdown files with 49 valid relative links/anchors. The official license text is unchanged. All eight historical VSIX archives retain their original hashes. No new runtime behavior, installation, live-provider test, or external publication was part of this update. The extension name and version were unchanged at that stage; version 0.5.3 adopts the selected name above. Version 0.5.2 replaces the custom provider glyphs with the marks described above and removes the old Unicode glyphs from view headings. It preserves the v0.5.1 session and terminal behavior. The existing v0.5.1 fixes include PowerShell smart-quote escaping, host-environment cleanup, per-record error isolation, and lazy reloads for hidden views. That review also removed redundant page normalization/store hashing, tied App Server client metadata to the manifest version, clarified SQLite sidecar behavior, and upgraded the packaging tool to The table below records the v0.5.1 validation runs from 2026-10-03 and 2026-10-04. These history-restoration and live-provider results were not repeated for the icon-only update. For v0.5.2 (2026-10-04), typecheck and all 70 automated tests passed. The six packaged icon variants were visually inspected at 16px and 40px on light and dark backgrounds in a Chromium-based browser. This was an asset-rendering preview, not a new live VS Code screenshot or a history-restoration test. Claude's former custom eight-spoke glyph was replaced with the official irregular Spark; its path and color match the press-kit asset. The Google SVG wrappers contain the unchanged official PNG, so they should not be described as all-vector artwork. The v0.5.2 build and packaging checks passed: all 26 VSIX entries passed the privacy scan, and all 13 runtime JS/MJS files plus seven SVG assets matched the current build/source byte-for-byte. The public snapshot has 59 files and passed its privacy scan; nine English Markdown files and 42 relative links/anchors passed validation. SVG parsing and passive-content checks passed, as did the original Google PNG hash and Claude path/color comparisons. No default-profile installation was performed for this update. Historical v0.5.2 local artifact: The subsequent release-directory update preserved all eight local VSIX binaries (0.1.0 through 0.5.2) byte-for-byte and added SHA-256 sidecars. Packaging, installed-test lookup, and CI artifact paths now use
The public snapshot had 61 files at the end of the additional validation run and passed its privacy scan. Public source and extracted packages are scanned separately. SDK namespace/UUID constants have reviewed exceptions limited by bundle path and hash; real session IDs are not exempted. Earlier validation remains historical evidence:
Previously verified local artifacts, before this English documentation consolidation:
Building with updated documentation or repository metadata can change package size and hash even when runtime code is unchanged. Record the actual output of each release build. The owner authorized the first public source push on 2026-10-05. Marketplace publication remains pending. Remote windows, minimum-runtime compatibility across versions, and visual theme/readability reviews need additional coverage. Roadmap and open decisionsThe implemented goal is local discovery for three providers, explicit Resume for supported saved sessions, and a new native CLI in a user-selected folder. Authentication and provider interaction remain native. The following 1-6 identifiers preserve the shared follow-up numbering and distinguish implemented work from remaining verification needs.
The earlier conclusion that urgent runtime/catalog caching was unnecessary applied to the historical workload only. Use the current performance review to assess startup, repeated discovery, scale-dependent costs, and progress feedback before selecting an optimization; no cache change is implemented by this measurement work. MCP descendant leaks and agy version-output warnings were not reproduced in the earlier checks; add targeted changes if concrete evidence appears. Historical follow-up evidence is in FOLLOW_UP.md. Additional/custom CLI providers are explicitly deferred. Continue polishing the three native integrations. Other feature candidates require a separate scope decision:
Release work follows RELEASE.md. Roadmap entries do not authorize publication or establish delivery dates. License and third-party noticeshcscat Multi CLI was originally developed by hcscat. The project's own source code is licensed under the Apache License, Version 2.0. Commercial use, modification, redistribution, and resale are permitted under its terms. The original source is hcscat/hcscat-multi-cli. The confirmed Marketplace publisher is These documents serve different purposes:
Redistribution and complianceThis summary does not replace the license. When redistributing, follow Apache-2.0 section 4, including:
The patent grant in section 3 covers only contributor-licensable claims necessarily infringed by their contributions alone or combined with the submitted work. Filing patent litigation alleging that this work or an incorporated contribution infringes a patent terminates the patent licenses granted under Apache-2.0 for that work. The grant does not cover every patent a contributor owns. Section 6 does not grant general trademark rights. Redistribution involves maintaining these files and notices; Apache-2.0 does not generally require permission requests or publication of modified source code. The license's warranty disclaimer and liability limitations also apply. Commercial use and attribution expectationsWe strongly ask downstream distributors to clearly identify hcscat Multi CLI as the original upstream project and distinguish their own contributions from the original authors' work. We consider deliberately concealing the project's origin or presenting the original work as entirely self-developed unacceptable. Please make this attribution easy to find in your documentation or product information. These requests express the authors' expectations and do not add conditions to or modify the Apache License, Version 2.0. Suggested attribution wording (replace the bracketed text with accurate information):
Including the original repository URL, https://github.com/hcscat/hcscat-multi-cli, is encouraged. This attribution identifies the upstream code; it does not imply that a downstream product is entirely open source or endorsed by the original author. Third-party terms remain separate. Keep the bundled Claude Agent SDK's upstream README and notices, and review its distribution terms before publication. Provider marks retain their owners' rights and are not relicensed under Apache-2.0. A privacy-policy reference concerns data handling and is not a project software license. See the official Apache-2.0 text and Apache licensing FAQ. |