{"_id":"@amethyst-labs/quickx","_rev":"4-87d4daf7c1f829865154de785f0efa1a","name":"@amethyst-labs/quickx","dist-tags":{"latest":"2.1.0"},"versions":{"1.0.0":{"name":"@amethyst-labs/quickx","version":"1.0.0","keywords":["codex","cli","ink","react","openai"],"license":"GPL-3.0-only","_id":"@amethyst-labs/quickx@1.0.0","maintainers":[{"name":"starryskyworld","email":"liu_qinyu@outlook.com"},{"name":"syd3ac","email":"Sylphy@0xd3ac.dev"}],"homepage":"https://github.com/AmethystDev-Labs/quickx","bugs":{"url":"https://github.com/AmethystDev-Labs/quickx/issues"},"bin":{"quickx":"dist/index.js"},"dist":{"shasum":"9925db0f26fa8a56ffcd2892cec7624eb4a87eea","tarball":"https://registry.npmjs.org/@amethyst-labs/quickx/-/quickx-1.0.0.tgz","fileCount":4,"integrity":"sha512-+mI0dvyQhkAFnTIl2iRD+ZcfzRf7M1coZbT7zgFTsJTLvWQbBoijBs9xjjIdwZyCablAnNGlhnebEZq/sEkmJA==","signatures":[{"sig":"MEUCIG6hnGsLBNbaCg0lvKU4I6q6mbRmuy8hD8wVH9vSt2pcAiEA2v2g7t6WH3X+tCgZMCWHT0p43Cd1yzOc9v4c8CEiZ4A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89227},"type":"module","engines":{"node":">=20"},"gitHead":"c56bd546336c85be4e210c891aa71d8ab89b4bc5","scripts":{"dev":"tsx src/index.tsx","build":"tsup","check":"tsc --noEmit"},"_npmUser":{"name":"syd3ac","email":"Sylphy@0xd3ac.dev"},"repository":{"url":"git+https://github.com/AmethystDev-Labs/quickx.git","type":"git"},"_npmVersion":"11.9.0","description":"Codex profile switcher with a Commander CLI and Ink TUI","directories":{},"_nodeVersion":"25.6.1","dependencies":{"ink":"^4.4.1","react":"^18.3.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"tsx":"^4.19.4","tsup":"^8.3.5","typescript":"^5.8.3","@types/node":"^24.0.0","@types/react":"^18.3.3"},"_npmOperationalInternal":{"tmp":"tmp/quickx_1.0.0_1775132806381_0.7354003807707297","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@amethyst-labs/quickx","version":"1.0.1","keywords":["codex","cli","ink","react","openai"],"license":"GPL-3.0-only","_id":"@amethyst-labs/quickx@1.0.1","maintainers":[{"name":"starryskyworld","email":"liu_qinyu@outlook.com"},{"name":"syd3ac","email":"Sylphy@0xd3ac.dev"}],"homepage":"https://github.com/AmethystDev-Labs/quickx","bugs":{"url":"https://github.com/AmethystDev-Labs/quickx/issues"},"bin":{"quickx":"dist/index.js"},"dist":{"shasum":"d4d31de75277f3eb366ae843dcee06a532b92694","tarball":"https://registry.npmjs.org/@amethyst-labs/quickx/-/quickx-1.0.1.tgz","fileCount":4,"integrity":"sha512-GxZx805fRUXBNXGjcfYT/Hw7ucpcaGsQvhsRrp3SDNFczSPmMtnkQDfgTKV47K+xHV+uzGx6b4UpA+0Kptk2vA==","signatures":[{"sig":"MEYCIQDI1mFGZjqORYbAQH36A/YPFIFhp2CHP3XeTp2HevkaYQIhAOciolFzoCew8KBpqic5viw9x3v84UtviJicOzGwEVEQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amethyst-labs%2fquickx@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108990},"type":"module","engines":{"node":">=20"},"gitHead":"f4fda6b18f66491bf61dcc81751033f9c114667e","scripts":{"dev":"tsx src/index.tsx","build":"tsup","check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c21621a-9954-40e7-bab6-e13084b12f78"}},"repository":{"url":"git+https://github.com/AmethystDev-Labs/quickx.git","type":"git"},"_npmVersion":"11.11.0","description":"Codex profile switcher with a Commander CLI and Ink TUI","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ink":"^4.4.1","react":"^18.3.1","commander":"^14.0.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"tsx":"^4.19.4","tsup":"^8.3.5","typescript":"^5.8.3","@types/node":"^24.0.0","@types/react":"^18.3.3"},"_npmOperationalInternal":{"tmp":"tmp/quickx_1.0.1_1775270180329_0.23637581978861988","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@amethyst-labs/quickx","version":"2.0.2","keywords":["codex","cli","ink","react","openai"],"license":"GPL-3.0-only","_id":"@amethyst-labs/quickx@2.0.2","maintainers":[{"name":"starryskyworld","email":"liu_qinyu@outlook.com"},{"name":"syd3ac","email":"Sylphy@0xd3ac.dev"}],"homepage":"https://github.com/Ve-ria/quickx","bugs":{"url":"https://github.com/Ve-ria/quickx/issues"},"bin":{"quickx":"dist/index.js"},"dist":{"shasum":"44eb16eedd6720883cc0dfca8ac9b47b744c433e","tarball":"https://registry.npmjs.org/@amethyst-labs/quickx/-/quickx-2.0.2.tgz","fileCount":4,"integrity":"sha512-PV7+n2HmbzGX4hc2reQQQczmOPRw5eHsIt/Pl0yItE0jvNWGhPSAY2cmXm/Tot7QYMf//+Cs1TS+MwTkN3lEPw==","signatures":[{"sig":"MEUCIQCTqTTGNBHkLXvRDaB01LuP2gtU0r0OjuhRbtlnpB4acQIgHRZDm4q2M6EwDuY17rb2qDIqf7nNxzataUddP6mG46o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amethyst-labs%2fquickx@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":125154},"type":"module","engines":{"node":">=20"},"gitHead":"e2d6eb9b17ecddbdd114b473779755ae13bdbc6e","scripts":{"dev":"tsx src/index.tsx","build":"tsup","check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e1208b2-fa92-4a3c-b13a-135f608304d4"}},"repository":{"url":"git+https://github.com/Ve-ria/quickx.git","type":"git"},"_npmVersion":"11.11.0","description":"Codex profile switcher with a Commander CLI and Ink TUI","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ink":"^6","react":"^19","commander":"^14.0.3"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"tsx":"^4.19.4","tsup":"^8.3.5","typescript":"^5.8.3","@types/node":"^24","@types/react":"^19"},"_npmOperationalInternal":{"tmp":"tmp/quickx_2.0.2_1775311693042_0.8268775374910069","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@amethyst-labs/quickx","version":"2.1.0","description":"Codex profile switcher with a Commander CLI and Ink TUI","keywords":["codex","cli","ink","react","openai"],"homepage":"https://github.com/Ve-ria/quickx","license":"GPL-3.0-only","repository":{"type":"git","url":"git+https://github.com/Ve-ria/quickx.git"},"type":"module","packageManager":"yarn@4.13.0","bin":{"quickx":"dist/index.mjs"},"scripts":{"build":"tsdown","check":"tsc --noEmit","dev":"tsx src/index.tsx","test":"vitest run","test:watch":"vitest","lint":"eslint src/","lint:fix":"eslint src/ --fix"},"dependencies":{"commander":"^14.0.3","ink":"^6","js-yaml":"^4.1.1","react":"^19"},"devDependencies":{"@eslint/js":"^10.0.1","@types/js-yaml":"^4.0.9","@types/node":"^24","@types/react":"^19","eslint":"^10.2.0","tsdown":"^0.21.7","tsx":"^4.19.4","typescript":"^5.8.3","typescript-eslint":"^8.58.0","vitest":"^4.1.2"},"engines":{"node":">=20"},"gitHead":"e13db37a6395ea4cb9c2b23315234cdc38aefdc4","_id":"@amethyst-labs/quickx@2.1.0","bugs":{"url":"https://github.com/Ve-ria/quickx/issues"},"_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-bGX63g56pesPgGph/Vz+KlAIKTa9bBTjGBa67PvvPSdz7do9qNCY6gyCP8bojn/KrDbKq4/3mRIq0PgRhRW6ZA==","shasum":"782910cc6b4fd54c0e36f43b2df145f2cac7315c","tarball":"https://registry.npmjs.org/@amethyst-labs/quickx/-/quickx-2.1.0.tgz","fileCount":4,"unpackedSize":132397,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amethyst-labs%2fquickx@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICBKA4A/ew8mAHx3wNGfAJMYIDWufdsyv4GIHPyRZmE5AiEA884iDuUbmbZMoBuYAhaWEsy66qqe+lVfTcDqfhsOhkQ="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e1208b2-fa92-4a3c-b13a-135f608304d4"}},"directories":{},"maintainers":[{"name":"starryskyworld","email":"liu_qinyu@outlook.com"},{"name":"syd3ac","email":"Sylphy@0xd3ac.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/quickx_2.1.0_1775564068330_0.2661893874404402"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-02T12:26:46.276Z","modified":"2026-04-07T12:14:28.800Z","1.0.0":"2026-04-02T12:26:46.511Z","1.0.1":"2026-04-04T02:36:20.494Z","2.0.2":"2026-04-04T14:08:13.191Z","2.1.0":"2026-04-07T12:14:28.465Z"},"bugs":{"url":"https://github.com/Ve-ria/quickx/issues"},"license":"GPL-3.0-only","homepage":"https://github.com/Ve-ria/quickx","keywords":["codex","cli","ink","react","openai"],"repository":{"type":"git","url":"git+https://github.com/Ve-ria/quickx.git"},"description":"Codex profile switcher with a Commander CLI and Ink TUI","maintainers":[{"name":"starryskyworld","email":"liu_qinyu@outlook.com"},{"name":"syd3ac","email":"Sylphy@0xd3ac.dev"}],"readme":"# quickx\n\n`quickx` is a Codex profile manager. It lets you store multiple provider configurations and switch between them instantly — no manual editing of `~/.codex/config.toml` required.\n\n## Getting Started\n\n```bash\nnpm install -g @amethyst-labs/quickx\n```\n\nThe fastest way to get going is via a provider template:\n\n```bash\n# Browse built-in and community templates\nquickx templates list\n\n# Preview what a template needs\nquickx templates preview openai\n\n# Create a profile from a template (prompts for API key, model, etc.)\nquickx profiles add my-openai --from-template openai\n\n# Activate it\nquickx use my-openai\n```\n\nOr log in with your ChatGPT / Codex account:\n\n```bash\nquickx profiles login            # opens browser\nquickx profiles login --device   # device-code flow (no browser)\n```\n\n## CLI\n\nRun with no arguments to open the [interactive TUI](#tui).\n\n### Profile management\n\n`profiles` is the primary command. `config` is a supported alias.\n\n```bash\nquickx profiles list\nquickx profiles add <name> [options]\nquickx profiles edit <name> [options]\nquickx profiles remove <name>\nquickx profiles login [name] [--device]\n```\n\n**`add` options**\n\n| Flag | Description |\n|---|---|\n| `--from-template <id>` | Bootstrap fields from a provider template |\n| `--base-url <url>` | Provider API base URL |\n| `--api-key <key>` | API key |\n| `--model <model>` | Default model |\n| `--wire-api <api>` | `responses` (default) or `chat` |\n| `--auth-method <method>` | `api_key` (default) or `chatgpt` |\n| `--reasoning-effort <level>` | Codex reasoning effort |\n| `--model-verbosity <level>` | Codex model verbosity |\n\n**`edit`** accepts the same flags; only the flags you supply are changed.\n\n### Activation & status\n\n```bash\nquickx use <name>    # write profile to ~/.codex/config.toml\nquickx status        # show active profile and all saved profiles\n```\n\n### Templates\n\n```bash\nquickx templates list              # list all available templates\nquickx templates preview <id>      # show fields and dynamic placeholders\n```\n\nTemplates are fetched from [AmethystDev-Labs/QuickCLI](https://github.com/AmethystDev-Labs/QuickCLI) and merged with built-in presets. Remote templates are cached for 1 hour in `~/.cache/quickx/template-cache/`.\n\n## TUI\n\nRunning `quickx` with no arguments launches a full-screen terminal UI built with [Ink](https://github.com/vadimdemedes/ink) (React for the terminal).\n\n**Tabs** — switch with `1` / `2` / `3`\n\n| Tab | Contents |\n|---|---|\n| `Status` | Active profile, file paths, all saved profiles at a glance |\n| `Profiles` | Scrollable profile list with a detail panel |\n| `Templates` | Scrollable template list with a live preview panel |\n\n**Profiles tab keys**\n\n| Key | Action |\n|---|---|\n| `↑` / `↓` | Move selection |\n| `Enter` or `Ctrl+U` | Activate selected profile |\n| `Ctrl+A` | Open Add Profile form |\n| `Ctrl+E` | Open Edit Profile form |\n| `Ctrl+D` | Confirm-delete selected profile |\n| `Ctrl+L` | Open Codex Login form |\n| `Ctrl+R` | Refresh |\n\n**Templates tab keys**\n\n| Key | Action |\n|---|---|\n| `↑` / `↓` | Move selection |\n| `Enter` | Open Create Profile form for selected template |\n| `Ctrl+R` | Refresh |\n\n**Global keys:** `Ctrl+Q` or `Esc` to quit.\n\nAll forms use `↑` / `↓` to move between fields, printable characters to type, `Backspace` to delete, and `Ctrl+S` to submit. `Esc` cancels and returns to browse mode.\n\n## Profile fields\n\n| Field | Description |\n|---|---|\n| `name` | Internal profile key |\n| `displayName` | Human-readable label |\n| `baseUrl` | Provider API base URL |\n| `apiKey` | API key (api_key auth mode) |\n| `model` | Default model |\n| `wireApi` | `responses` or `chat` |\n| `authMethod` | `api_key` or `chatgpt` |\n| `reasoningEffort` | Codex reasoning level |\n| `modelVerbosity` | Optional Codex verbosity override |\n\n## Storage\n\n| Path | Purpose |\n|---|---|\n| `~/.config/quickx/config.json` | quickx profile store (macOS/Linux) |\n| `%APPDATA%\\quickx\\config.json` | quickx profile store (Windows) |\n| `~/.cache/quickx/template-cache/` | Remote template cache (1 h TTL) |\n| `~/.codex/config.toml` | Written on every `quickx use` |\n| `~/.codex/auth.json` | Updated for ChatGPT auth mode |\n\n## Release\n\nPublishing is tag-driven. Push a `v*` tag and GitHub Actions publishes to npm.\n","readmeFilename":"README.md"}