{"_id":"@alok1910/ai-router","_rev":"11-39a751f2001a1ae0192159039a5ab463","name":"@alok1910/ai-router","dist-tags":{"latest":"0.8.3"},"versions":{"0.5.0":{"name":"@alok1910/ai-router","version":"0.5.0","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.5.0","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"c00ba064f50ff2c2c62f201dfe3009c8f80a71fe","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.5.0.tgz","fileCount":22,"integrity":"sha512-H8KcAqfX1GGvj59UtT6UzlhrmkGM4WauWs3jFE+uMMCRGqc8KpCF+5yNIwN9uk/+y14kzqcurMw4jV2c+GDZ8g==","signatures":[{"sig":"MEUCIQDpJf17CYwMa0pLYZjGoXel7UluIUNZLdT3GjyGxqzHgAIgdkN5ZjVWq4VKT/Xr8pmnsG8HZHv0GsJnevDHVvr73us=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101350},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"4ed57de00da4dccdeb7fe91f2ce5f16d67a74b2b","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"11.11.0","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"25.8.1","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.5.0_1777890476875_0.972491544612663","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@alok1910/ai-router","version":"0.5.1","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.5.1","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"1abf613119e784d38328da525b3927a109e73e43","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.5.1.tgz","fileCount":22,"integrity":"sha512-s6pJtz+ARakyOphzlmaVShsyAdomFFVv7ho+HhGuLnvak4PAqHe58w5EV9F8ceNct4+qpDCFfh8cBqhQz87BaQ==","signatures":[{"sig":"MEUCICTD1EJ1FL4R6zuLO6eWqY1T44CCwKLHlL+GYdPvMJhUAiEA4xK1tkEr4agTRfp9IR+IBg0aoDMs6e837DuFt6tpzWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100821},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"da932cc9dab0bb9df649c8fb8f0afa110c6eb4ea","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"10.9.7","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.5.1_1777911169836_0.5745971092325091","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@alok1910/ai-router","version":"0.5.2","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.5.2","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"a22c48f251e7b2fd062c32f65fa5038e1bfdfa84","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.5.2.tgz","fileCount":22,"integrity":"sha512-OBujOIiqBqneP+iXQcJmhQkyX+VwEsgpQLaPE3BngjnWwoHD82rGc5vQdlfO3tuidZAaveEDBF8QwjjtT3dfsQ==","signatures":[{"sig":"MEUCIHTJiRpSyEAhlDKzNxmqTkvvBGgQx59RHS9SC++25Rg7AiEAjDyaC8whM3Z+4FyeHy6M85Y1olv/IQQ3ipH60QvxBm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101025},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"9e89982793b11627044ccae4e560d5a73ecc7a9e","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"10.9.7","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.5.2_1777956809019_0.060836849706056295","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@alok1910/ai-router","version":"0.5.3","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.5.3","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"48f9cca11aabc0de952c921806fe39eae14d6650","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.5.3.tgz","fileCount":22,"integrity":"sha512-Uy+etBg4pN4ww7hi8t7cFBtnvZAxXUEg+gFwNuVOcozpI6BmC/YE8FlHjItegpbxeDCktaRBVcNC8xafGzjC+Q==","signatures":[{"sig":"MEUCIAOfmeG6OLu1BmgKDdYi6uTNoMX0cpSBBSJf0HdFlGopAiEA4w1Vo4Ag0qyFfETnFqk21nCiejdVEyluxvSBIhtPllQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101050},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"ad27b2cb38c4d07d7184c76acd2ae6962e5f366f","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"10.9.7","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.5.3_1777958034716_0.6107505150265358","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@alok1910/ai-router","version":"0.5.4","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.5.4","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"3cb10d4c840e2ce01eb5958b05af556b6b19438a","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.5.4.tgz","fileCount":22,"integrity":"sha512-gAVskoQqvraa9AMaJoCW/0PzIuDnG3TuXdbMuQpY0F3qLEM0zz5w9zzyAzJK7zIerkud/ncvsvHJLXCAq4jlbQ==","signatures":[{"sig":"MEUCIQD9OgdXnwcR0McCACf8nWGQnw1webQ5DuYZko9OJdZbUwIgSfz68JTAXz1G9YfUetOXM+Cb2vDCS/ya9zI/w63bPjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101227},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"0cff21054bd3a845fe49c64d255fc66668c91492","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"10.9.7","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.5.4_1778077088278_0.9220568650368204","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alok1910/ai-router","version":"0.7.0","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.7.0","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"65c366191a29518bfe7df18200cd9d03c085c77f","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.7.0.tgz","fileCount":23,"integrity":"sha512-50Uqc8zrC6EpUpe+aC39B+OEW2VX7BV2r1iTOWhnagTcCNjoI/Wa0QfX40zk2HYAzkcWR10nDkmMn7tUclau+A==","signatures":[{"sig":"MEQCICOuVeJArtzyhYjWMhbrMyHOd0DifBetvYfHfqAOr9mvAiAkQQwBXovelVFt0z2hCI4QiU7t/+T6UcjhrgAoz7OfVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110440},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"77fbd3e671f9c35a0c46211eb4babc782e18925f","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","chat":"node --experimental-sqlite src/index.js chat","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js chat","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"10.9.7","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.7.0_1778130566539_0.5848763462493858","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@alok1910/ai-router","version":"0.7.1","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.7.1","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"6a3389e2b4f67a322982326422ca6c51d1845d21","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.7.1.tgz","fileCount":23,"integrity":"sha512-aIygp6U3uh+tl44QyUMaFYvaauWtGNzxPCw+m6vQMTKfHWFCfrbPKXjssgV3p8ZVNc/Z3JE1CRIQv4RUlHhTDw==","signatures":[{"sig":"MEQCIEO6qnLmYELAegoly+1gVzyJ9LWGJxKXlQsvHMvKedM2AiAgXXlUweyR+asajKodL1mDjKJcEtrG/w3s2s8wKWEl7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111330},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"1e1b8915ffc35ac1ca83e03e8a4f6e43da8cda6c","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","chat":"node --experimental-sqlite src/index.js chat","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js chat","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"10.9.7","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.7.1_1778131248250_0.8339127250919367","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@alok1910/ai-router","version":"0.8.0","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.8.0","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"54fb2def822d2bdd7c52fb83d0962ea1463dda88","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.8.0.tgz","fileCount":23,"integrity":"sha512-N+dMDZT0K4Vaauss0XdL3c/9MULy7E7cBTrkzYbz1tgG0SaxKht2r9EFlhtrWO0Vg2D684m+z5+pJeYhDIB0rA==","signatures":[{"sig":"MEUCIE1+3xyoRULZ+LFJuheFqapzz8Ua31pOOS9Eyh5ry3Y/AiEA0GJA1wiVa/+4biicLPqFdQQ/RYJhnMitD82E08TVPH4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116645},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"518e22681ad403d84891630f09d581aeaa17e4fa","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","chat":"node --experimental-sqlite src/index.js chat","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js chat","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"10.9.7","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","memorydistil":"^0.1.0","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.8.0_1778160048564_0.6715706010191402","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@alok1910/ai-router","version":"0.8.1","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.8.1","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"517b45b8fa2ae67bd3cbb5abe4b36308dd03ef7f","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.8.1.tgz","fileCount":23,"integrity":"sha512-i7hbeEPO7kXZkmE5s1FyywijL2W03r0YvcWiz3gzYcMLu1/0Yw0MLndzcP0VtzSBi6x8fvXZEnm/tb1jIivj1w==","signatures":[{"sig":"MEUCIQDGjdVworQole1uPHv/G19Nkiqqy7gcDcd5QpBRID1urgIgGU1iRivSV0FownsdUwvkSQUhFgASYf12yURh40pfq4k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117195},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"bed65c484ade2f8c39af1fdc08ee09f78be34d77","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","chat":"node --experimental-sqlite src/index.js chat","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js chat","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"10.9.7","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","memorydistil":"^0.2.3","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.8.1_1778408583390_0.3667791780709233","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@alok1910/ai-router","version":"0.8.2","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","_id":"@alok1910/ai-router@0.8.2","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"bin":{"ai-router":"src/index.js"},"dist":{"shasum":"365cd9f0454c7cf52f0db5b17f9ac3eb98ac6761","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.8.2.tgz","fileCount":23,"integrity":"sha512-eap7zKc57ejFuidyptdkY7wbVcUe56WELqeuSBFpmjTxEn1QV4O2en61eUrdV8j0C+pjwdpg4o9O5PsK85/lZQ==","signatures":[{"sig":"MEQCIAzKW6SnfL7AtnRWf+OUOucuuD3J0ppi7wDfovo3CjhRAiBm4RLgrymeQytw5TA0tWrFrhn/FIfFMcfbhF63AP/dDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121518},"main":"src/index.js","engines":{"node":">=22.5.0"},"gitHead":"195d528581ebe4d42058560d1542d1b2762cdaf3","scripts":{"dev":"node --experimental-sqlite --watch src/index.js","chat":"node --experimental-sqlite src/index.js chat","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","start":"node --experimental-sqlite src/index.js chat","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"_npmVersion":"10.9.7","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^4.1.2","dotenv":"^16.4.5","openai":"^4.52.0","groq-sdk":"^0.7.0","inquirer":"^8.2.6","commander":"^12.1.0","memorydistil":"^0.2.3","@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-router_0.8.2_1778409497796_0.5300398719824104","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@alok1910/ai-router","version":"0.8.3","description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","main":"src/index.js","bin":{"ai-router":"src/index.js"},"scripts":{"start":"node --experimental-sqlite src/index.js chat","chat":"node --experimental-sqlite src/index.js chat","dev":"node --experimental-sqlite --watch src/index.js","test":"node --experimental-sqlite node_modules/.bin/jest --forceExit --runInBand","test:watch":"node --experimental-sqlite node_modules/.bin/jest --watch --runInBand"},"keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"author":{"name":"Alok Nagargoje"},"license":"MIT","dependencies":{"@anthropic-ai/sdk":"^0.27.0","@google/generative-ai":"^0.21.0","chalk":"^4.1.2","commander":"^12.1.0","dotenv":"^16.4.5","groq-sdk":"^0.7.0","inquirer":"^8.2.6","memorydistil":"^0.2.4","openai":"^4.52.0"},"devDependencies":{"jest":"^29.7.0"},"engines":{"node":">=22.5.0"},"_id":"@alok1910/ai-router@0.8.3","gitHead":"18c20356105d060c647d3c7163d0310590003e43","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-ozDLygAm1tIfNv+pl9q2Ul+KGXgOcyXRXvcShR8kDxHZ+xqW5m6zaldkaUqkXalOVmM6bLst6Atx4x9l8wOYuw==","shasum":"3b34eb0770cc3c151558d97ef59a2f1915a400bb","tarball":"https://registry.npmjs.org/@alok1910/ai-router/-/ai-router-0.8.3.tgz","fileCount":23,"unpackedSize":122294,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHk7YuZv8XoQy+qxuJ1UsqLQVRnn2KLVOp6c/V8MoJOkAiBbWh5sVQ12szLcr+IH4kpR0XD8E9Bt8VLBwuBAtOBmjw=="}]},"_npmUser":{"name":"alok1910","email":"nagargojealok@gmail.com"},"directories":{},"maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-router_0.8.3_1778475356884_0.024735252954080744"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-04T10:27:56.823Z","modified":"2026-05-11T04:55:57.116Z","0.5.0":"2026-05-04T10:27:57.030Z","0.5.1":"2026-05-04T16:12:50.004Z","0.5.2":"2026-05-05T04:53:29.165Z","0.5.3":"2026-05-05T05:13:54.865Z","0.5.4":"2026-05-06T14:18:08.467Z","0.7.0":"2026-05-07T05:09:26.675Z","0.7.1":"2026-05-07T05:20:48.401Z","0.8.0":"2026-05-07T13:20:48.689Z","0.8.1":"2026-05-10T10:23:03.554Z","0.8.2":"2026-05-10T10:38:17.954Z","0.8.3":"2026-05-11T04:55:57.028Z"},"author":{"name":"Alok Nagargoje"},"license":"MIT","keywords":["ai","router","llm","claude","gemini","groq","openai","memory","failover","developer-tools"],"description":"Universal AI memory and credit router — automatic failover across multiple AI providers with persistent memory","maintainers":[{"name":"alok1910","email":"nagargojealok@gmail.com"}],"readme":"# @alok1910/ai-router\n\n![CI](https://github.com/alok1920/ai-router/actions/workflows/ci.yml/badge.svg)\n![npm version](https://img.shields.io/npm/v/@alok1910/ai-router)\n![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)\n![Node.js](https://img.shields.io/badge/node-%3E%3D22.5.0-brightgreen)\n\n**Universal AI memory and credit router.**\n\nStop re-explaining yourself every time you switch AI tools. ai-router remembers your preferences, keeps your conversation history, and automatically switches to the next provider when one runs out — all from your terminal with natural scroll and inline commands.\n\n---\n\n## Install\n\n```bash\nnpm install -g @alok1910/ai-router\n```\n\nRequires Node.js 22 or higher.\n\n---\n\n## Quick Start\n\n```bash\n# 1. Configure providers and preferences\nai-router setup\n\n# 2. Start chatting\nai-router chat\n```\n\n---\n\n## What It Looks Like\n\n```\n  ╔════════════════════════════════════════╗\n  ║ AI Router v0.7.0                       ║\n  ║ Universal AI Memory & Router           ║\n  ╚════════════════════════════════════════╝\n\n  Type a message to chat  ·  /help for commands\n\n  Providers  ● Groq  ·  ● Gemini Flash\n\n  You: explain how the router works\n\n  ◆ Groq\n  ────────────────────────────────────────\n  The router tries each provider in your\n  configured sequence. If one hits a rate\n  limit or your personal cap, it switches\n  automatically to the next one...\n  ────────────────────────────────────────\n\n  You: /cap\n  Token Caps\n\n  Groq\n  ████████░░░░░░░░░░░░ 40%\n  4,000 / 10,000 tokens today\n\n  Gemini Flash\n  ██████████████████░░ 90%\n  2,700 / 3,000 tokens today\n\n  You: /cap set groq 15000\n  ✓ Groq cap set to 15,000 tokens/day\n```\n\n---\n\n## Slash Commands Inside Chat\n\nAll commands work inline — no need to exit and re-enter.\n\n| Command | What it does |\n|---|---|\n| `/help` | Show all available commands |\n| `/cap` | Show token usage and caps with progress bars |\n| `/cap set <provider> <n>` | Set daily token cap |\n| `/cap remove <provider>` | Remove a cap |\n| `/memory` | Show stored preferences |\n| `/memory set <key> <value>` | Update a preference |\n| `/memory delete <key>` | Remove a preference |\n| `/status` | Show provider states and last errors |\n| `/providers` | Same as /status |\n| `/sequence` | Show priority sequences |\n| `/history` | Show recent conversation history |\n| `/index [path]` | Re-index project for code context |\n| `/clear` | Clear the screen |\n| `/new` | Start a fresh session |\n| `/exit` or `/quit` | Quit ai-router |\n\n---\n\n## Commands\n\n### `ai-router chat`\nStart a conversation. Natural terminal scroll — use your trackpad or mouse wheel to scroll through history.\n\n```bash\nai-router chat\nai-router chat --project ./my-project   # with code context\n```\n\n### `ai-router setup`\nGuided onboarding. Configure your name, language, tone, and add providers.\n\n```bash\nai-router setup\n```\n\n### `ai-router provider`\nAdd, list, remove, and test providers. No code changes ever needed.\n\n```bash\nai-router provider add        # search by name, paste key, done\nai-router provider list       # show all configured providers\nai-router provider remove     # remove a provider\nai-router provider test       # verify a provider key works\nai-router provider update     # update a key or model name\n```\n\n**Adding any provider:**\n```bash\nai-router provider add\n\n? Search for a provider: groq\n  ● Groq — free tier, fast inference\n\n? Groq API key: **********************\n✓ Groq connected and saved\n```\n\n**Adding Ollama (local, no API key needed):**\n```bash\nai-router provider add\n# Search: ollama\n# Enter which model you pulled: llama3\n```\n\n### `ai-router cap`\nSet your own daily token limit per provider — below the real API limit.\n\n```bash\nai-router cap set Groq 10000\nai-router cap show\nai-router cap remove \"Gemini Flash\"\n```\n\n### `ai-router sequence`\nSet provider priority order per context type.\n\n```bash\nai-router sequence set coding \"Gemini Flash\" Groq\nai-router sequence set general Groq \"Gemini Flash\"\nai-router sequence show\nai-router sequence remove coding\n```\n\n### `ai-router index`\nIndex a project folder for code-aware AI responses.\n\n```bash\nai-router index ./my-project\nai-router index .\n```\n\nUses graphify if Python 3.10+ is available. Falls back to built-in compressor otherwise.\n\n### `ai-router memory`\nStore preferences that persist across every session and provider.\n\n```bash\nai-router memory show\nai-router memory set language Hindi\nai-router memory set tone casual\nai-router memory set expertise intermediate\nai-router memory delete language\n```\n\n### `ai-router history`\nShow recent conversation history.\n\n```bash\nai-router history\n```\n\n---\n\n## Supported Providers\n\n| Provider | Free API | Notes |\n|---|---|---|\n| **Gemini Flash** | ✅ Yes | Default first provider |\n| **Groq** | ✅ Yes | Default second provider |\n| Claude (Anthropic) | ❌ Paid | Add with: provider add |\n| OpenAI GPT | ❌ Paid | Add with: provider add |\n| Mistral | ❌ Paid | Add with: provider add |\n| Perplexity | ❌ Paid | Add with: provider add |\n| Ollama (local) | ✅ Free | Runs on your machine |\n| LM Studio (local) | ✅ Free | Runs on your machine |\n| Any custom LLM | Varies | Any HTTP endpoint works |\n\n**Free API keys:**\n- Gemini: [aistudio.google.com/apikey](https://aistudio.google.com/apikey)\n- Groq: [console.groq.com/keys](https://console.groq.com/keys)\n\n---\n\n## How Failover Works\n\n```\nYou send a message\n        ↓\nRouter tries first provider in your sequence\n        ↓\nProvider hits rate limit or your personal cap\n        ↓\nRouter switches to next provider automatically\n        ↓\nFull conversation context carries over\n        ↓\nYou see which provider responded in [brackets]\n```\n\nType `/status` at any time to see exactly what each provider is doing and why.\n\n---\n\n## Memory\n\nStored permanently at `~/.ai-router/memory.db`. Injected into every prompt sent to any provider. Survives closing and reopening the tool.\n\n```bash\nai-router memory set language Hindi\n# Every AI responds in Hindi from now on\n# Works across Groq, Gemini, Claude — any provider you configure\n```\n\n---\n\n## Code Context\n\nIndex your project once and every code question gets compressed context automatically:\n\n```bash\nai-router index ./my-project\nai-router chat --project ./my-project\n\n# Now ask: what files handle routing?\n# AI knows your actual project structure\n```\n\n---\n\n## Where Your Data Lives\n\nEverything stays on your machine at `~/.ai-router/`:\n\n```\n~/.ai-router/\n  config.json     providers, sequences, caps\n  .env            your API keys\n  memory.db       conversation history and preferences\n  graphs/         project indexes from ai-router index\n  logs/           debug logs\n  venv/           Python environment for graphify\n```\n\nNothing is sent anywhere except API calls to your configured providers.\n\n---\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────┐\n│              ai-router chat                      │\n│  Natural scroll · Inline /commands · No exit     │\n└────────────────────┬────────────────────────────┘\n                     │\n┌────────────────────▼────────────────────────────┐\n│               src/router.js                      │\n│   Reads config → sequence → enforces caps        │\n│   Handles failover automatically                 │\n└────┬──────────────┬──────────────┬──────────────┘\n     │              │              │\n┌────▼─────────┐ ┌──▼────────────┐ ┌▼─────────────┐\n│ google.js    │ │openai-compat  │ │ anthropic.js  │\n│ All Gemini   │ │Groq,GPT,Ollama│ │ All Claude    │\n└──────────────┘ └───────────────┘ └──────────────┘\n                     │\n┌────────────────────▼────────────────────────────┐\n│           ~/.ai-router/                          │\n│   config.json · .env · memory.db · graphs/       │\n└─────────────────────────────────────────────────┘\n```\n\n---\n\n## License\n\nMIT — free to use, modify, and distribute.","readmeFilename":"README.md"}