{"_id":"@anyxtools/anyx","_rev":"4-b4c535a72caf1c2963cf320ffa36f1f7","name":"@anyxtools/anyx","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"@anyxtools/anyx","version":"0.0.1","keywords":["ai","agent","cli","llm","openai","anthropic","gemini","claude","gpt","ink","terminal","tui","coding-assistant"],"author":{"name":"Dawei","email":"dawei@fleak.ai"},"license":"MIT","_id":"@anyxtools/anyx@0.0.1","maintainers":[{"name":"rendawei","email":"rendaweide2008@126.com"}],"homepage":"https://github.com/rendawei-anyx/anyx#readme","bugs":{"url":"https://github.com/rendawei-anyx/anyx/issues"},"bin":{"anyx":"dist/cli.js"},"dist":{"shasum":"943d99eaff867d6771708904c7a6b0d9339d5749","tarball":"https://registry.npmjs.org/@anyxtools/anyx/-/anyx-0.0.1.tgz","fileCount":45,"integrity":"sha512-zUgPgddlvW7TnstGSSoQTwEind4MkbCDwjA5aqQSy2KWvtahSH8T3xorxTdaA3Al/RBh6udUPs3U1D4YxZhaqg==","signatures":[{"sig":"MEUCIQCaLxyXCyqGW3myfhgwA4miEDCywZDTu1aPN+/XyDduZQIgFWxUsZUsjEN+t4s6Wa81gqVbboTf5ChLC+2YClgLQ/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85730},"type":"module","engines":{"node":">=20"},"gitHead":"234f0490c2238bb59c72606dc35244bd843b6563","scripts":{"dev":"tsx src/cli.tsx","build":"tsc","prepare":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"rendawei","email":"rendaweide2008@126.com"},"repository":{"url":"git+https://github.com/rendawei-anyx/anyx.git","type":"git"},"_npmVersion":"10.9.7","description":"Model-agnostic agent CLI — talk to any LLM from your terminal","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.177","ink":"^7.0.2","zod":"^4.4.3","react":"^19.2.6","dotenv":"^17.4.2","commander":"^14.0.3","fast-glob":"^3.3.3","@ai-sdk/google":"^3.0.71","@ai-sdk/openai":"^3.0.63","@ai-sdk/anthropic":"^3.0.76"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^6.0.3","@types/node":"^25.6.2","@types/react":"^19.2.14"},"_npmOperationalInternal":{"tmp":"tmp/anyx_0.0.1_1778303014158_0.4986084433102296","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@anyxtools/anyx","version":"0.0.2","keywords":["ai","agent","cli","llm","openai","anthropic","gemini","claude","gpt","ink","terminal","tui","coding-assistant"],"author":{"name":"Dawei","email":"dawei@fleak.ai"},"license":"MIT","_id":"@anyxtools/anyx@0.0.2","maintainers":[{"name":"rendawei","email":"rendaweide2008@126.com"}],"homepage":"https://github.com/rendawei-anyx/anyx#readme","bugs":{"url":"https://github.com/rendawei-anyx/anyx/issues"},"bin":{"anyx":"dist/cli.js"},"dist":{"shasum":"15cf3ba7e6528ed8a473c2102a863f018e19ba12","tarball":"https://registry.npmjs.org/@anyxtools/anyx/-/anyx-0.0.2.tgz","fileCount":45,"integrity":"sha512-yQjt5yGyfo92atwx4sq4yFuz7+CsivWo3zhNvKFECCa/DzWetGhwFviu4oXho3OvpLd39AH+crEnhG75RCDjXg==","signatures":[{"sig":"MEYCIQCC9pAXjT01JdYMjAnJ9psd+HCCja4dYVA9u78oqdsGcAIhAKjLlO52KEfeZyU8nw6EFQUi76ayHCkc/nhZuEjRKuZ8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86194},"type":"module","engines":{"node":">=20"},"gitHead":"97fc338104e5e4ca6bdfa68344b988ea64dbafda","scripts":{"dev":"tsx src/cli.tsx","build":"tsc","prepare":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"rendawei","email":"rendaweide2008@126.com"},"repository":{"url":"git+https://github.com/rendawei-anyx/anyx.git","type":"git"},"_npmVersion":"10.9.7","description":"Model-agnostic agent CLI — talk to any LLM from your terminal","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.177","ink":"^7.0.2","zod":"^4.4.3","react":"^19.2.6","dotenv":"^17.4.2","commander":"^14.0.3","fast-glob":"^3.3.3","@ai-sdk/google":"^3.0.71","@ai-sdk/openai":"^3.0.63","@ai-sdk/deepseek":"^2.0.34","@ai-sdk/anthropic":"^3.0.76"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^6.0.3","@types/node":"^25.6.2","@types/react":"^19.2.14"},"_npmOperationalInternal":{"tmp":"tmp/anyx_0.0.2_1778313987022_0.9270982544016868","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@anyxtools/anyx","version":"0.0.3","keywords":["ai","agent","cli","llm","openai","anthropic","gemini","claude","gpt","ink","terminal","tui","coding-assistant"],"author":{"name":"Dawei","email":"dawei@fleak.ai"},"license":"MIT","_id":"@anyxtools/anyx@0.0.3","maintainers":[{"name":"rendawei","email":"rendaweide2008@126.com"}],"homepage":"https://github.com/rendawei-anyx/anyx#readme","bugs":{"url":"https://github.com/rendawei-anyx/anyx/issues"},"bin":{"anyx":"dist/cli.js"},"dist":{"shasum":"9802148b0d1ff97c582dd921630f04bf0bb5afe0","tarball":"https://registry.npmjs.org/@anyxtools/anyx/-/anyx-0.0.3.tgz","fileCount":45,"integrity":"sha512-BpU5rjtU4GU5dSzoPehNNToju5scJnyfcAxYtkimMDAvzf7YrblOWNaK8Pu1Jfic5pZZe2Ubh0gBn+SKHwGMTg==","signatures":[{"sig":"MEQCIECBEumPZ+H4+fgZ7rBWL0lTJaq37uw2JdAA2Cpfw6OBAiALzxM+n9sDVgjs3+NEAgcZbDXtadNKB1IVGqt7aqAEzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96111},"type":"module","engines":{"node":">=20"},"gitHead":"9d93697bfb4acac009888d0b46643ad3a3693cfb","scripts":{"dev":"tsx src/cli.tsx","build":"tsc","prepare":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"rendawei","email":"rendaweide2008@126.com"},"repository":{"url":"git+https://github.com/rendawei-anyx/anyx.git","type":"git"},"_npmVersion":"10.9.7","description":"Model-agnostic agent CLI — talk to any LLM from your terminal","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.177","ink":"^7.0.2","zod":"^4.4.3","react":"^19.2.6","dotenv":"^17.4.2","commander":"^14.0.3","fast-glob":"^3.3.3","@ai-sdk/google":"^3.0.71","@ai-sdk/openai":"^3.0.63","@ai-sdk/deepseek":"^2.0.34","@ai-sdk/anthropic":"^3.0.76"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^6.0.3","@types/node":"^25.6.2","@types/react":"^19.2.14"},"_npmOperationalInternal":{"tmp":"tmp/anyx_0.0.3_1778330069714_0.36205647075556846","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@anyxtools/anyx","version":"0.0.4","description":"Model-agnostic agent CLI — talk to any LLM from your terminal","keywords":["ai","agent","cli","llm","openai","anthropic","gemini","claude","gpt","ink","terminal","tui","coding-assistant"],"author":{"name":"Dawei","email":"dawei@fleak.ai"},"license":"MIT","homepage":"https://github.com/rendawei-anyx/anyx#readme","repository":{"type":"git","url":"git+https://github.com/rendawei-anyx/anyx.git"},"bugs":{"url":"https://github.com/rendawei-anyx/anyx/issues"},"type":"module","bin":{"anyx":"dist/cli.js"},"scripts":{"dev":"tsx src/cli.tsx","typecheck":"tsc --noEmit","build":"tsc","prepare":"tsc","test":"vitest run","test:watch":"vitest"},"engines":{"node":">=20"},"dependencies":{"@ai-sdk/anthropic":"^3.0.76","@ai-sdk/deepseek":"^2.0.34","@ai-sdk/google":"^3.0.71","@ai-sdk/openai":"^3.0.63","ai":"^6.0.177","commander":"^14.0.3","dotenv":"^17.4.2","fast-glob":"^3.3.3","ink":"^7.0.2","react":"^19.2.6","zod":"^4.4.3"},"devDependencies":{"@types/node":"^25.6.2","@types/react":"^19.2.14","tsx":"^4.21.0","typescript":"^6.0.3","vitest":"^4.1.5"},"_id":"@anyxtools/anyx@0.0.4","gitHead":"fb0dc3f2a758897f9133a20d65ca2974c2715ee9","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-FFNas2brg/jtbm6JPygEMOh/Ylyg8o/iI20dOFt6n89wA6ZEOhMYtjh9VHik0g5jTxVBRm3d0pX9ax2pWYFoCQ==","shasum":"636a3230c29127662fba0943ff988a5a823a7407","tarball":"https://registry.npmjs.org/@anyxtools/anyx/-/anyx-0.0.4.tgz","fileCount":66,"unpackedSize":174691,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDTjuc4DNFECOuFSTsggB87xaFA5JOa52XK+2IqEGlBeAIgZVFbO5+eL2Bv6tEpW6NUiW6xHveD1LY11ut0DUa7yVo="}]},"_npmUser":{"name":"rendawei","email":"rendaweide2008@126.com"},"directories":{},"maintainers":[{"name":"rendawei","email":"rendaweide2008@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/anyx_0.0.4_1778435263534_0.5438180377005579"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-09T05:03:34.036Z","modified":"2026-05-10T17:47:43.874Z","0.0.1":"2026-05-09T05:03:34.293Z","0.0.2":"2026-05-09T08:06:27.150Z","0.0.3":"2026-05-09T12:34:29.859Z","0.0.4":"2026-05-10T17:47:43.737Z"},"bugs":{"url":"https://github.com/rendawei-anyx/anyx/issues"},"author":{"name":"Dawei","email":"dawei@fleak.ai"},"license":"MIT","homepage":"https://github.com/rendawei-anyx/anyx#readme","keywords":["ai","agent","cli","llm","openai","anthropic","gemini","claude","gpt","ink","terminal","tui","coding-assistant"],"repository":{"type":"git","url":"git+https://github.com/rendawei-anyx/anyx.git"},"description":"Model-agnostic agent CLI — talk to any LLM from your terminal","maintainers":[{"name":"rendawei","email":"rendaweide2008@126.com"}],"readme":"# anyx\n\nA small, model-agnostic agent CLI — chat with any major LLM from your\nterminal, with file-reading, file-writing, and shell tools (each\nwrite/exec asks for your approval).\n\n## Install\n\n```bash\nnpm install -g @anyxtools/anyx\n```\n\nRequires Node.js 20+. The installed binary is just `anyx` — the scope\nonly matters at install time.\n\n## First run\n\nJust run it:\n\n```bash\nanyx\n```\n\nIf anyx can't find an API key for any provider, it walks you through a\n**built-in onboarding** flow:\n\n1. Pick a model from the list (↑↓ + Enter)\n2. Paste the matching provider's API key\n3. Anyx tests the key with a tiny request\n4. On success, the key is saved to `~/.anyx/.env` and the model becomes\n   your `default_model` in `~/.anyx/config.json`\n\nIf the test fails (wrong key, network down, etc.), you get\n`[r]` retry · `[m]` pick a different model · `[q]` quit — no cryptic\nstack traces.\n\nAfter that, `anyx` (no args) just works from any directory.\n\nYou can also bypass the flow if you already manage your keys:\n\n```bash\nanyx --model gpt-4o          # one-off override\nanyx --list-models           # see what's available\n```\n\n## How API keys are resolved\n\nAnyx looks for keys in three places, first one wins:\n\n1. Shell environment variables\n2. `./.env` in the current directory — project-specific override\n3. `~/.anyx/.env` — written by the onboarding flow, or by hand\n\nSwitching models after the fact is just a slash command:\n\n```\n> /model claude-sonnet\n> /config save-default       # persist to ~/.anyx/config.json\n```\n\nIf you `/model X` for a model whose key isn't set, anyx drops you back\ninto the onboarding \"enter key\" stage for just that provider — no need\nto quit and re-run.\n\n## Models\n\n| Key                 | Provider  |\n| ------------------- | --------- |\n| `gpt-4o`            | OpenAI    |\n| `gpt-4o-mini`       | OpenAI    |\n| `claude-sonnet`     | Anthropic |\n| `claude-opus`       | Anthropic |\n| `claude-haiku`      | Anthropic |\n| `gemini-pro`        | Google    |\n| `gemini-flash`      | Google    |\n| `gemini-2-flash`    | Google    |\n| `deepseek-chat`     | DeepSeek  |\n| `deepseek-reasoner` | DeepSeek  |\n\n## Tools\n\n| Tool         | What it does                              | Approval? |\n| ------------ | ----------------------------------------- | --------- |\n| `read_file`  | Read a file (truncated at 50k chars)      | no        |\n| `write_file` | Create or overwrite a file                | yes       |\n| `edit`       | Replace an exact substring in a file      | yes       |\n| `bash`       | Run a shell command                       | yes       |\n| `grep`       | Regex-search file contents under cwd      | no        |\n| `glob`       | List files matching a pattern             | no        |\n\nWhen a write/exec tool runs you'll see a yellow approval box with a\npreview:\n\n```\napprove: edit /path/file.ts\n  replacing 1 occurrence:\n- function foo(x):\n+ function foo(x: number):\n[y]es / [N]o / [a]lways\n```\n\n- `y` — proceed\n- `n` / Esc / Enter — deny (the model is told you refused)\n- `a` — proceed and remember this exact action for the rest of the\n  session (no more prompts for the same file / command)\n\n## Inside the REPL\n\n| Input               | What it does                                                          |\n| ------------------- | --------------------------------------------------------------------- |\n| `<text>`            | Send to the model                                                     |\n| Shift / Opt + Enter | Newline                                                               |\n| `\\` + Enter         | Newline (universal fallback)                                          |\n| `/`                 | Open the command hint list                                            |\n| ↑ / ↓               | Move highlight when hints are visible; otherwise browse input history |\n| Enter (with hints)  | Execute the highlighted hint — submit if it's a command/arg, or step into the arg picker if it's a command that takes args |\n| Tab                 | Same as Enter on a hint (kept for muscle memory)                      |\n| Ctrl+C              | Cancel pending approval → interrupt current stream → exit             |\n\nSlash commands: `/help`, `/reset`, `/model`, `/tools`, `/cwd`,\n`/config`, `/config save-default`, `/exit`, `/quit`. Type `/` to see\nthem with descriptions; ↑↓ + Enter picks one. For `/model`, Enter\nopens an inline list of every available model — keep using ↑↓ + Enter\nto pick the specific one.\n\nThe chat input itself is a bordered card whose footer shows the\nactive model, token usage versus its context window, and a `/help`\nnudge.\n\n## Try it\n\n```\n> 看一下当前项目，告诉我用了什么栈\n> 把 README.md 翻译成英文写到 README.en.md\n> 找一下所有 TODO 注释\n```\n\nThe agent will use `glob` / `grep` / `read_file` to explore, then\n`write_file` / `edit` to make changes (always with your approval).\n\n## Limitations\n\n- `always` approvals and input history reset each session (only\n  `default_model` persists)\n- Requires a real TTY (won't work in non-interactive contexts)\n\n## From source\n\nFor contributing or running unreleased changes:\n\n```bash\ngit clone https://github.com/rendawei-anyx/anyx.git\ncd anyx\nnpm install\nnpm run dev -- --model claude-haiku\n```\n\nSee [CLAUDE.md](https://github.com/rendawei-anyx/anyx/blob/main/CLAUDE.md)\nfor the design doc, architecture, and how to add new models / tools /\nslash commands.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}