{"_id":"multiai","_rev":"42-a5360e1369e774e726a49910228cca3b","name":"multiai","dist-tags":{"latest":"0.7.0","next":"0.6.10"},"versions":{"0.1.0":{"name":"multiai","version":"0.1.0","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.1.0","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/powerai/issues"},"bin":{"aicode":"bin/aicode.js"},"dist":{"shasum":"534adde66b8567bd91fb4466c2a62927a171e6eb","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.1.0.tgz","fileCount":33,"integrity":"sha512-BUYRy9lMv7byuiibjCxLaVJVntmKFLOCJyVW8SKGOwBidq8KehVfaf3cPcHYceW2DfdvHpMtrG2tGfLvz7yFZw==","signatures":[{"sig":"MEQCIAdfJ4qKnRezXSmbRJoi/ZJ5I9fQk2MSTUkcIa92JqADAiABA6aZAcDT6aLJ/vBesn0ULix7mnfXbhyj60aKSpQSZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63355},"engines":{"node":">=16"},"gitHead":"b3f838c3e0dcc04c5860464647b548785b948d70","_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/powerai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.1.0_1782211593412_0.6710964991890742","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"multiai","version":"0.1.1","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.1.1","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/powerai/issues"},"bin":{"aicode":"bin/aicode.js"},"dist":{"shasum":"833c0000c050bb17669cface907d60baec3b5519","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.1.1.tgz","fileCount":53,"integrity":"sha512-9IsVoFXfpC/lC7YwYaWbjaj5dLNhoWenkWKbOjQsB6HAgLme84+lT9Qj2GcViXudLWUx5cjCnBwDq9g/HdKSpg==","signatures":[{"sig":"MEUCIGifqmTtFwGdoRNym7eyofNrZHE3BQ6G0N2GAVIKlSZEAiEA2iJzIrJqoNdk2NfhpqJfK8udCpG+3O4CPWnh/d4vXvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65432},"engines":{"node":">=16"},"gitHead":"b3f838c3e0dcc04c5860464647b548785b948d70","_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/powerai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.1.1_1782212005538_0.30610004846305494","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"multiai","version":"0.1.2","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.1.2","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/powerai/issues"},"bin":{"aicode":"bin/aicode.js"},"dist":{"shasum":"13d90520db39a532ba5174108b0132189bb76314","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.1.2.tgz","fileCount":53,"integrity":"sha512-xV3SGuIEyI6VW9g9MULJ8y4RuB5a04nioYV/SLhs9XHc3RcLRqv4diaYB3mN0+XZyHNT17BN0syWDVmWbZXPQA==","signatures":[{"sig":"MEYCIQDPE3CqyBODoFSVy6P4B18xdNjmGciNwQdehGm5QT3Y8AIhAPNrZzJqW1q4p5/+0mBdQ57lpYATx+g6a9oBgeosNiOa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65444},"engines":{"node":">=16"},"gitHead":"83f696164713616eb15f87b83a88f219e041a894","_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/powerai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.1.2_1782214709499_0.08124116314060181","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"multiai","version":"0.1.3","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.1.3","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/powerai/issues"},"bin":{"aicode":"bin/aicode.js"},"dist":{"shasum":"3d70c33d3b638ea16002691d8d63c2a5e0487516","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.1.3.tgz","fileCount":53,"integrity":"sha512-uslUORGak/eDThul/C+vnojeBYRWhS4BxyPAc4k2iBjxxwxibOPQRz49rjzHM2USTGCBFy900QdQjUuM50chCg==","signatures":[{"sig":"MEUCIA94FTclDod937K37mRnEJAsGs7fmVsUj3GBoxwZRV19AiEAwHyivW0J18yf0L0POQr3C30k7VA1yJRpF6YciuD0IHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65417},"engines":{"node":">=16"},"gitHead":"75a95ce856fba9c0c07551bd6ae77f07aba2b3d4","_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/powerai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.1.3_1782215061925_0.9548753159971755","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"multiai","version":"0.1.4","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.1.4","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/powerai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"6be2627b4dad9b9bb6b09626d2825c8d5592ac30","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.1.4.tgz","fileCount":53,"integrity":"sha512-Y/E0mCTGS0cQmIFMLdXbNCLPrhNjCn27xoyrU4X62/D7B5IIVAf2GSeQTY6uxBVaoIGVLP8NVEEwRUHFfyygBw==","signatures":[{"sig":"MEQCIEnr5aC/DUQfZn2E3YGuhy1WWt7jrFlRyJ+e4zj0fmkYAiBkOBYTyo0qPrm4p1jPePLkdEvmUEh2uxHFBReBuMV3ZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65754},"engines":{"node":">=16"},"gitHead":"0def4496e896cc13ff74558804f085a662c16efd","_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/powerai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.1.4_1782215575826_0.2899358139450823","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"multiai","version":"0.1.5","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.1.5","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/powerai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"94082aad0a079df1caa9821bf5f7b2edf11a2e8e","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.1.5.tgz","fileCount":53,"integrity":"sha512-G0dPApgvT18vyltJ+tqRFzoYt9NGfhocp+rQjxLJBdagRBmXJiYF668IfunUVdfZEtwdfV2aBNzjnh3oPSQXyA==","signatures":[{"sig":"MEUCIGdpiPVB+D0BMZwpI54FCXM2NIH0FCGuPhH+qvs9OCoVAiEA2FDe5a6hYUp9fH/qD8tanJw6rQbLjRQpYMm8wklgmMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65754},"engines":{"node":">=16"},"gitHead":"bcf7b31625653fb72c4ea00a18ee9d4f53a79563","_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/powerai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.1.5_1782215776105_0.12160850672983248","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"multiai","version":"0.2.0","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.0","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"08a5f3e053d7c13ef6c66b38f7f49a925e3c59fe","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.0.tgz","fileCount":53,"integrity":"sha512-OfhhEnJkjdDR6/747NSRxqrgQENM/lxOXvmF2w8Yo1FUXuvuRugGU7NQ9PzIrxQuGjBlWs57hLe8U63jeTi2eQ==","signatures":[{"sig":"MEUCIGAa89dlXuwDmV7fmoExnvFidxwG6ko/HaJAG2n3HthUAiEAxO8YRxl16kQGkBqWyc6DLLuGiXNlmqDvHeqHf1VV/CY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74973},"engines":{"node":">=16"},"gitHead":"bf6e472b0d0f16c8779c9cd29cd10f188d16c3a5","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.0_1782230694033_0.7069266491404878","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"multiai","version":"0.2.1","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.1","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"09c95f52bdef1a1f67faecb570f70b3ceddcf3f4","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.1.tgz","fileCount":53,"integrity":"sha512-XKAKrLmS+C//v+CiTJKTJmZHrFePMyULzaGWF8pWPARKjDvJ5PNg/veS26WzulOyNksCFOPHqXcngZESNdyMpw==","signatures":[{"sig":"MEUCIQDzC3ZvcRyvP9teD1kbZeUKqN1usRDpYq9mNv9IYwIlbwIgf/M8uqtjKf8QSt5bFwzpE1MkUMeQgyKv5idrva9OF6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74975},"engines":{"node":">=16"},"gitHead":"e2794c2cd3585b3448594738c3e9dc3519bea403","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.1_1782231712736_0.9268366733825111","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"multiai","version":"0.2.2","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.2","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"b8400264c5c7f26c03623a84ce3e4140c9e26766","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.2.tgz","fileCount":53,"integrity":"sha512-bbpao3PpDqDUED9YTfaSS6ozm7WvXLRbiMLasG653DVtuUqq0998/wRKGHPLuzpqccxYzP+ZNGMbSfKm0jAv8w==","signatures":[{"sig":"MEUCIG0lzhm2tIfEWvIJ2TkTNsLK2NpybcsqTFuqrmaUIrYbAiEAuuFWmZ379GGqz/gWGc8zUmMRijy5uKDeChSVhTaaFG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79454},"engines":{"node":">=16"},"gitHead":"3997dd49cddd91d0e13ff7dde95031ec3d30da81","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.2_1782233443275_0.4269124253806422","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"multiai","version":"0.2.3","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.3","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"d20276a0b0c5b069adbab11a2746e28d00f395c4","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.3.tgz","fileCount":53,"integrity":"sha512-f1DSijCJ1aewr81hz0YmFyn0H1OQ+K4FzpN26iYM3mLcB16w/MiJfryyGtTlQywrXRCtRQXo659DfydaSeWkeQ==","signatures":[{"sig":"MEUCIGqiUNl7LPrPsRnHr6S36B76+d5q1hBHDn6BwTtwW1u/AiEAuAfzB1z/gkaPx55VpUWhwbJ/AUwnpJ0w6Z0vM6M0OrI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81306},"engines":{"node":">=16"},"gitHead":"16264ed19b6c2ba108e95e90cd04d0821dfff1b1","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.3_1782233899764_0.18758759628643396","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"multiai","version":"0.2.4","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.4","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"f18d47cc606bf85cadb0f69342f6e02c50ca483a","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.4.tgz","fileCount":53,"integrity":"sha512-9xiej6om2pZ2RbrRvqlgzTIlMNvit+Pn5+o5whUQgg+QHr9SoXis4Zc7szOl1BjoGhNHvmjwLYw1tHIcNf30Cw==","signatures":[{"sig":"MEUCIQC2ABJOKPFyxQQlznZ3JavmqjlOViMRAlGPTk9QIF4RqAIgNYrV7x4maJQB0Vokq2NLGozZY3qeTttJDiE/8Nxy8DA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81306},"engines":{"node":">=16"},"gitHead":"d76b068ea893bf54a94667776aea9646dde26dd5","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.4_1782233971117_0.19347503246240594","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"multiai","version":"0.2.5","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.5","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"8e938c73297653ae8d61f9733917efe1c470a84c","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.5.tgz","fileCount":53,"integrity":"sha512-ek4wImCMAAux+7Tue9Mw2aEU8qjywaAdUhgvkPNBk29IBOq2jiwVne9qsvNTf1YUwVez4qWILa/Ag4XELx3hvQ==","signatures":[{"sig":"MEUCIBeuWa3c+Uz43YD6cp2Lv/pvgIbGkaGtcQrJgu7SM9G5AiEA4Y+GMfW8Q77t0+xqO5lnbz7dQuvDqF5RgGaJGeiesvQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81306},"engines":{"node":">=16"},"gitHead":"fdab5223ce2245f2a576784c6a8ae7a204dacbf7","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.5_1782234463320_0.5047838969902612","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"multiai","version":"0.2.6","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.6","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"6ce203c8ff8e440c800302dbfa77aa7711c85d72","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.6.tgz","fileCount":53,"integrity":"sha512-avgG80JxM0forHeG+vGhm+3HXA904kHJtFx6i8ortwLzT8d0AnRD+ebJH825dxfGRV9HgPTte4wBwPjscKNaSg==","signatures":[{"sig":"MEUCIQCntIzBPzdbh3pMvONqPeyC/flX194yqjnP9mBMyxk8owIgODILXzMIdEEKdeRpuiomOdHE3CC+wEQw2QoJATBPDpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81306},"engines":{"node":">=16"},"gitHead":"78d47057d56b4ca3b6c0fcd94c63f74772f32e27","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.6_1782234741983_0.7812816666857327","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"multiai","version":"0.2.7","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.7","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"c731171cf3631dfeec950596a0f11343846ff17e","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.7.tgz","fileCount":53,"integrity":"sha512-uqi5OpeOjsrkxkg1RSDaGon77TEn3Fz17g2Ef0bJ7Qt1zu17YQ3Uafx28a1pJ3YK8qiTIhYzDrmuJgi77od+Tg==","signatures":[{"sig":"MEUCIQD2hcK14YjuqSjBBbBRXiR2DFt9b40y0OM+2jbM2bvvmwIgLYLRCkw1Y3sJJDmfLALsUTI3RHMLWLp2xPN0GDxBQXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81313},"engines":{"node":">=16"},"gitHead":"9502fac6bfb3b8691e2d10a106bc2512e6cf41d7","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.7_1782243991730_0.5293833697253496","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"multiai","version":"0.2.8","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.8","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"f6ea4a67c280f24f1a8fb02bf9cbb7d9ab33b604","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.8.tgz","fileCount":53,"integrity":"sha512-ttMD9pkqiKCYMizOrnBg6PuRsk8Ci21vr/J/E76wiquZmf4elvAJ57HRn3ja/uPXv7EWa/Uq2laoje+Kwr90nw==","signatures":[{"sig":"MEYCIQCgmHwiO3W1pADixgEk0wbOvMCqktdu+2PwIAGSk9C66AIhAPSu5WnDqRojrf5XPfSpZqmSr18c2i4xzFXk+qO0WV4h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81595},"engines":{"node":">=16"},"gitHead":"8aeae3d02524d30a5a3e627292409e8fc9ba2d49","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.8_1782244509393_0.7750479717166625","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"multiai","version":"0.2.9","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.9","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"003fd4a650cbf63a2cdc57f7411f3c30981a0603","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.9.tgz","fileCount":56,"integrity":"sha512-Bf1GAifPoMg4Rj32SFj9UjSry0eycmtcd7EGo9gO8Ft+lNHkrQm9vXGGtzvvS0KXiQPP0ZVmwDYtvSmtXRCjdw==","signatures":[{"sig":"MEUCIQDjZjMBhVJYmXnJSo6RFys0VPqldmYXayRCxnStJwBEkwIgDdKhn230U2hQZqootGVrsQx3lR8B0qKDYFRTPR8Rjzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88679},"engines":{"node":">=16"},"gitHead":"37b9898fda6a1b507b01b303d174dba839a75ecf","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.9_1782245520156_0.31441095239758443","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"multiai","version":"0.2.10","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.10","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"28be35639cb6f2f03be6a504a450b3c991d9e32d","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.10.tgz","fileCount":56,"integrity":"sha512-3c947bywqTfeW/WYZfrFwjxz9R9ciuC/gowfJ9fzS2ZGMDI6Gnjq03qX8jom+P7Je8u/3o3QNcPKkiLQ1HiHrg==","signatures":[{"sig":"MEQCIAfmVPeORSCf7fUCvwqkSqASUqFH+Nv4g63Y8bDrzibkAiAjDNHYFqGt1L7h2q4/nZ2wscjlheA4ZNZbA8lKSXy3nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88680},"engines":{"node":">=16"},"gitHead":"37b9898fda6a1b507b01b303d174dba839a75ecf","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.10_1782245965733_0.12381454023181515","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"multiai","version":"0.2.11","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.11","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"c90258b0936b04ab69487abf1cc22e6583794ad4","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.11.tgz","fileCount":56,"integrity":"sha512-YizQNJQf705AUvznDsLKdJlepwJAXvYh7L4/By1eCufXB12m4ZoN4+h8T+ffVRpi5mrSLhrgB3ne32CzHzonAQ==","signatures":[{"sig":"MEUCIEIhwAUSetAhZ7RP66JjJSscloqxnMjiQRyr2xh0QMdlAiEAlqihZw6P5/joxCR3S0xXlJYpHkpDPqStpbDVELptQSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87813},"engines":{"node":">=16"},"gitHead":"37b9898fda6a1b507b01b303d174dba839a75ecf","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO')return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.11_1782246318013_0.12307089710588781","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"multiai","version":"0.2.12","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.12","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"1404f0fdc169f24b122d259b48b34d367c8e2f70","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.12.tgz","fileCount":56,"integrity":"sha512-bB0XTuJFpacpwMfpDrC0bGY6hypJbsXTpKA9KVyx/QY5SF7mVYYXwGQpVMi8Jn32lklYqQG4R+qSzbMRfRNxxw==","signatures":[{"sig":"MEUCIQCwtFbbwCN93yZfdDscR9T9XwmJoA0Iwjw1IXkDKD/V9gIgHRRGv7Cdk83EKzUg11aAyfH8kzYWkVXHlJ0WiLD6uGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88829},"engines":{"node":">=16"},"gitHead":"91fa86e15a79051ff439d5745d97517f31b266c0","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY','ANTHROPIC_API_KEY','ANTHROPIC_AUTH_TOKEN','OPENAI_API_KEY','OPENROUTER_API_KEY','DEEPSEEK_API_KEY','ZAI_API_KEY','MOONSHOT_API_KEY','MINIMAX_API_KEY','QWEN_API_KEY','GEMINI_API_KEY','AWS_ACCESS_KEY_ID','AWS_SECRET_ACCESS_KEY','AZURE_CLIENT_SECRET','AZURE_TENANT_ID','AZURE_SUBSCRIPTION_ID','GITHUB_TOKEN','GITLAB_TOKEN','NPM_TOKEN','DATABASE_URL','SSH_AUTH_SOCK','PGPASSWORD','OPENAI_ORG_ID','ANTHROPIC_ORG_ID','GOOGLE_API_KEY','COHERE_API_KEY','MISTRAL_API_KEY','HUGGINGFACE_TOKEN','REPLICATE_API_TOKEN','AWS_SESSION_TOKEN'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO'||val.startsWith('%'))return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.12_1782298830248_0.7914695992143688","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"multiai","version":"0.2.13","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.2.13","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"e0ea13359b592cc160e551c273d3dd09d2310f8b","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.2.13.tgz","fileCount":56,"integrity":"sha512-VLiS5wD8pw2MpazyIFreaKBEL8qhoOmQw9jjwRHgd48FnZ/AM055UCMWXHc0oCzWmW5eRMMBbJPW3r4hQAXRLg==","signatures":[{"sig":"MEUCIQDJ7UDVBBgSekymLBD7X5kqoPNe2wUUv7fmC4w48AYJWwIgLBZMQ6H/pDeeUPR1oSzLiRt/n0j8KMP9yWtAQn8dvno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92219},"engines":{"node":">=16"},"gitHead":"3912c3a4db9cd0482da284d7f1a20c2d740a2293","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY','ANTHROPIC_API_KEY','ANTHROPIC_AUTH_TOKEN','OPENAI_API_KEY','OPENROUTER_API_KEY','DEEPSEEK_API_KEY','ZAI_API_KEY','MOONSHOT_API_KEY','MINIMAX_API_KEY','QWEN_API_KEY','GEMINI_API_KEY','AWS_ACCESS_KEY_ID','AWS_SECRET_ACCESS_KEY','AZURE_CLIENT_SECRET','AZURE_TENANT_ID','AZURE_SUBSCRIPTION_ID','GITHUB_TOKEN','GITLAB_TOKEN','NPM_TOKEN','DATABASE_URL','SSH_AUTH_SOCK','PGPASSWORD','OPENAI_ORG_ID','ANTHROPIC_ORG_ID','GOOGLE_API_KEY','COHERE_API_KEY','MISTRAL_API_KEY','HUGGINGFACE_TOKEN','REPLICATE_API_TOKEN','AWS_SESSION_TOKEN'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO'||val.startsWith('%'))return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.2.13_1782299538457_0.18241200884324038","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"multiai","version":"0.3.0","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.3.0","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"bin":{"multiai":"bin/multiai.js"},"dist":{"shasum":"28dad9c5cd0c32683867ff40f5e5025803b547cb","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.3.0.tgz","fileCount":90,"integrity":"sha512-7mjlI32kAzCvE8xXY1tgBFm3/yZgQ84kz733mEjvmmMNBh+SmxYPooTMQUvYXnWQwTZwIILQywZZi9OmfUU6Ug==","signatures":[{"sig":"MEUCIQC938lrOBjAn8bjecNfKBIYSZrt9DIVlLj8E0ZaA7Di6gIgcTfI+83v4JubpJFvHZ0YI4BKRjOxynszjcwiEk1AqJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112880},"engines":{"node":">=16"},"gitHead":"c476d6489d929144e5bb0e928fd9f09d6da64f19","scripts":{"prepublishOnly":"node -e \"const fs=require('fs'),d='configs/profiles';if(fs.existsSync(d)){const meta=['PROFILE_ID','SHORTCUT','TOOL','TOOL_LABEL','DISPLAY_NAME','DESCRIPTION','ORDER','COMMAND','ARGS','CLEAR_ENV','REQUIRED_SECRETS','SKIP_SECRET_CHECK','NOTES','CLAUDE_CONFIG_DIR','CODEX_HOME','OPENCODE_CONFIG_DIR','OPENCODE_CONFIG','API_TIMEOUT_MS','CLAUDE_CODE_AUTO_COMPACT_WINDOW','CLAUDE_CODE_EFFORT_LEVEL','CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','CLAUDE_CODE_SUBAGENT_MODEL','OPENCODE_DISABLE_AUTOUPDATE','ANTHROPIC_BASE_URL','ANTHROPIC_DEFAULT_OPUS_MODEL','ANTHROPIC_DEFAULT_SONNET_MODEL','ANTHROPIC_DEFAULT_HAIKU_MODEL','ANTHROPIC_MODEL','OPENAI_BASE_URL','OPENAI_ORGANIZATION','OPENAI_PROJECT','OPENROUTER_BASE_URL','OPENCODE_CONFIG_CONTENT','OPENCODE_MODEL','OPENCODE_SMALL_MODEL','ANTHROPIC_ORG_ID','OPENAI_ORG_ID','DEEPSEEK_BASE_URL','ZAI_BASE_URL','GEMINI_MODEL','DISABLE_TELEMETRY','FALLBACK','REGION','ANTHROPIC_API_KEY','ANTHROPIC_AUTH_TOKEN','OPENAI_API_KEY','OPENROUTER_API_KEY','DEEPSEEK_API_KEY','ZAI_API_KEY','MOONSHOT_API_KEY','MINIMAX_API_KEY','QWEN_API_KEY','GEMINI_API_KEY','AWS_ACCESS_KEY_ID','AWS_SECRET_ACCESS_KEY','AZURE_CLIENT_SECRET','AZURE_TENANT_ID','AZURE_SUBSCRIPTION_ID','GITHUB_TOKEN','GITLAB_TOKEN','NPM_TOKEN','DATABASE_URL','SSH_AUTH_SOCK','PGPASSWORD','OPENAI_ORG_ID','ANTHROPIC_ORG_ID','GOOGLE_API_KEY','COHERE_API_KEY','MISTRAL_API_KEY','HUGGINGFACE_TOKEN','REPLICATE_API_TOKEN','AWS_SESSION_TOKEN','STEPFUN_API_KEY','SILICONFLOW_API_KEY','MIMO_API_KEY','LITELLM_API_KEY','REQUESTY_API_KEY','DASHSCOPE_API_KEY'];fs.readdirSync(d).filter(f=>f.endsWith('.env')).forEach(f=>{const lines=fs.readFileSync(d+'/'+f,'utf8').split(/\\r?\\n/);lines.forEach(line=>{const idx=line.indexOf('=');if(idx<1)return;const key=line.substring(0,idx).trim();const val=line.substring(idx+1).trim();if(meta.some(m=>key.startsWith(m)))return;if(!val)return;if(val.startsWith('PASTE_')||val.startsWith('YOUR_')||val.startsWith('sk-xxxx')||val==='TODO'||val.startsWith('%'))return;if(val.length>=20){console.error('SECURITY: '+f+' L'+line+': '+key+' contient une vraie cle API!');process.exit(1)}})});console.log('OK: aucune cle detectee')}\""},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — Windows, macOS, Linux","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.3.0_1782300677291_0.8692198320349576","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"multiai","version":"0.4.0","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.4.0","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"41b5722ae15f0b3e389c7136bd6417d879d70c9a","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.4.0.tgz","fileCount":5,"integrity":"sha512-pvRHvYv9V/uqKWj7H2+vhRY2JSNPCr1WnLNWB7PeCC/gSZfn4C8l+xpiuDD8NrqulTYSsa0EZOftnWLQiFVOEQ==","signatures":[{"sig":"MEUCIAUBqy92RjmlYhclI8jWPxOo2x5Mcd24NA+x4ieqGgnGAiEApDIEM54pLaM6MSLAou8XxT+Nc4hw0qWKTVKW+IFxCv8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13929},"engines":{"node":">=18"},"gitHead":"e75690142f38ef3c263382158937a19ed0b51a90","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.4.0_1783284584716_0.5708147561453538","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"multiai","version":"0.4.1","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.4.1","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"58f2dc10fc671547671f2baa5ce4d3001789dae1","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.4.1.tgz","fileCount":5,"integrity":"sha512-6eYpefQILkUht87UFS+iIeC6UeuG8XdfnpurLxQiBvEXBZjT2BNh9o78uBGgDsHZbqE8EKKuXXm/u1Ju3F0yAg==","signatures":[{"sig":"MEYCIQDmxlOg1QwoqFE3I17YntoiQm5ddYsAIex5VdSF48ukkgIhAI1R2yuiZPiZCgVn+sCXQSNDZwdYjqCKRTotWGgvJF0a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13929},"engines":{"node":">=18"},"gitHead":"4aa1e15be9f549ecd571addaa9f682bc02ba7424","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.4.1_1783288205083_0.2316749225299406","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"multiai","version":"0.4.2","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.4.2","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"8d36bb59f182c3f1895627d623a89824786685b1","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.4.2.tgz","fileCount":5,"integrity":"sha512-neV9wJQnqLDe9VOVsq+J2GrQatfd2U2t8cGt9fYacSt0YTU21R2BE8JO/yTUVtB3edNoRt0lrcL9sAtnXTWn+Q==","signatures":[{"sig":"MEYCIQCohisQ9Q802yHmGPzMMj/tSAEw+KtFRBlgzhInj2NS1wIhAJCIJA9hy/Ibkhko8H2PFe2t7DUiMN6HNM5aZTvphq2T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13929},"engines":{"node":">=18"},"gitHead":"a763ccfa75c1d680dd1e63106aff49e3af1b1e22","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.4.2_1783289009860_0.6443279231566343","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"multiai","version":"0.4.3","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.4.3","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"d843abfe6b4726a4e5aae7d8857afc4913abcc42","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.4.3.tgz","fileCount":5,"integrity":"sha512-8hi+cCkN2GiVHWJ2cmyBcUzVy3c+HllbWV9t7MoeqI+JUtkiBVIaKtZfcaTDVh493/4bQkXf/SaJufxHHYf4CQ==","signatures":[{"sig":"MEQCICWw9mEfo/3XEFZOxvBXv7uTEXQ/b14FO/3NU4fhq2H5AiBVmW//5RLtyp2MEvJ/VVTNzt9vf7Xje8CZi9HfgYV4Yg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13929},"engines":{"node":">=18"},"gitHead":"da7cb15079e5ef9dcad045b83e97df33a0ac6e75","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.6.2","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.4.3_1783290714958_0.3887650657580186","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"multiai","version":"0.5.0","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.5.0","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"65b0a2235da1bf66d211c94d1e31c8c3c6cd9021","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.5.0.tgz","fileCount":5,"integrity":"sha512-glhkkig45w9Dqq8m++OraJnxtV7Yx0Ewp2Rk4mQmXeC1dyZwdeXgy2wev0gZWndBseebw/Q9W55SN9w4eGMXuw==","signatures":[{"sig":"MEQCIHzwpRqev93ED2c45ySdG6AQFi7LjbBlh5H5Wm713WxNAiBuWhkioAeICaRBpgeQqpKU6K6NIAJ2CNAGuGJYMAn+gg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13929},"engines":{"node":">=18"},"gitHead":"b4265aba406bfa37578e8af8d654bfaec7794a5a","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.5.0_1783676364072_0.470273416597043","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"multiai","version":"0.6.0","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.0","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"f18c59ff1bac2c76d38197eaff9c8a5f4111e4da","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.0.tgz","fileCount":5,"integrity":"sha512-LM8oVKSQKiBMqSDXU+7tQGnKyYEJyBEE1Druealaa/M96sKsaY68x5ycFIAm8F4/xTMcXzmKymmjwewfCjEIog==","signatures":[{"sig":"MEUCIGxgSS0Rf8BGEqc8h5xnA3nRRHbUSlYzUWm1uHQlMlYCAiEAjStg6nqkHVCaG/pWnPlw++R7JZGiSQNxPGAND6B0z8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13980},"engines":{"node":">=18"},"gitHead":"c658b7385c66ae46315f674be49421183336611b","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.0_1783851022839_0.26926290326060576","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"multiai","version":"0.6.1","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.1","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"a50b893e5e65152c5baa77fcee5846fc8ee817ae","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.1.tgz","fileCount":5,"integrity":"sha512-SQaX9UQlir1sWKJW1DeapvJ+aF6wDKyWowNiYOWiLcjz5MMMY3eA22oPOspszegSeCIhbg32Jat6BrxyHz0Z8w==","signatures":[{"sig":"MEQCIGm730tV8K/WuLmwWmYUoqD7kfRGTn5PncxucUbCkXNrAiABwVOEgXgfPWdXRZjUvN3W2DMpMfulLPZIgopxcAZB4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14773},"engines":{"node":">=18"},"gitHead":"b136fc77895904eea4a589b250efdd2373c5e8b6","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.1_1783851674465_0.1613445645789484","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"multiai","version":"0.6.2","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.2","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"2af7816b71cd2aa31e80f20cc345832c0ea70f17","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.2.tgz","fileCount":5,"integrity":"sha512-6oO6ryQq5RHy7PmWtDnA0Jip3r1sQW+Kg4zuOH9lhtK+g5aJdXXC12otj5q/7FvDQSFcFPStIv8+UteaPizgzg==","signatures":[{"sig":"MEUCIARRIw7UyH2ZRRo1vKyagOb/sMPCmZz16VV9KOHHIihnAiEAzTUi9E9n5Md4kL8ozHSCdKeWKz4LsVMiM+sHlP347Yw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15938},"engines":{"node":">=18"},"gitHead":"26787012afc9c8f955afda0a16c67bb3494a9828","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.2_1783851985822_0.5179797624579872","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"multiai","version":"0.6.3","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.3","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"e0479cb65194860dce82e28f093b21cff07ba883","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.3.tgz","fileCount":5,"integrity":"sha512-x4s8Tb4hrkbysYt9BwhnVkTvZtWdNsS2UyaPT0mtgULFWBtIJ6DJLUv/IxT4P9bqBB8XpfkHCGMQ3a7wAvq6kw==","signatures":[{"sig":"MEUCICj3XnKKp1I8UdUUxPQ1vApOiFIaMNPZj3s0FCNyItmEAiEArQpFosxRAnR9SqoDrx26wtEx/uVIOahzw+VNdp8fwck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15938},"engines":{"node":">=18"},"gitHead":"99ee1b3d445156df54cef899fce596aa497c957f","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.3_1783852872764_0.0764204464255438","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"multiai","version":"0.6.4","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.4","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"635e5e9a3fb2a8576a9435a443327992ed13895d","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.4.tgz","fileCount":5,"integrity":"sha512-AY0WRzOGRNtqGbE2vZN4T6tsMHRYLHjM/m3zxzLuEPIB+plrjtGLMRLs1SvtRS5/VMEDJY1xLBabQXQ1L0lMcA==","signatures":[{"sig":"MEUCIQDCifs9AfjRoxT7ZdMNFzbo0re6FRjMTM4xiE5Y3EAjGwIgae73BYndG09ydz7Z7BCOksPnix9gUyRYlGxXK093MMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15656},"engines":{"node":">=18"},"gitHead":"7d2a8f37c04261241c1bffd98dd8df589102bd25","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.4_1783853255296_0.981208769741392","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"multiai","version":"0.6.5","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.5","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"2f9ca747b1e6a00cd1852dbc9fca563071510539","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.5.tgz","fileCount":5,"integrity":"sha512-k52QIjvkWHTElIy4Xzk43igVepJ4AyulGVF/1jWDsuwZOLwsi3PD+k2pNYu3fe87aBASOfg9xbyiMjxqwSfgGQ==","signatures":[{"sig":"MEUCIQCkpOm5K7DpCMnZu5z6B0CgY8c5jvNUJnlRzJ0wVUTFFAIgXTKWya8Y8ERMx05V54eOxpc6Pu9Yn+IX+kGHog/cL9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13584},"engines":{"node":">=18"},"gitHead":"0119001408969180b8acda6d8de8980517f8d208","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.5_1783854261154_0.8394565546586679","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"multiai","version":"0.6.6","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.6","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"2bd7ab4c258b2b82484fffdb36e652e8f4185849","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.6.tgz","fileCount":5,"integrity":"sha512-l8ytL0wHqr8ECbw8IDcg5oRXyA9bX6EU3qmdMzBm9350JBhb3gqJXVvC6BO7h4/79rBKE//eYhB3v5y95HyRFA==","signatures":[{"sig":"MEQCIFzJXMS1Y2N9xjBk7CEDFD5WS/4XRit75R4EEEfUBIQaAiB63gM9Dh/kZPQL8UMXETl6U4wl+p3ZrCmXolzSaTyPTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13584},"engines":{"node":">=18"},"gitHead":"a3b459ffbe3d303ac4c1e876ba8a8bf8d44199a1","scripts":{"postinstall":"node install.js","prepublishOnly":"node scan-secrets.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.6_1783857072259_0.478551008540101","host":"s3://npm-registry-packages-npm-production"}},"0.6.7":{"name":"multiai","version":"0.6.7","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.7","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"b92b7174ada77e3b54899aa71bbf895c8b423ece","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.7.tgz","fileCount":7,"integrity":"sha512-acUSlSLfMjR0EoXqN6qTLw4B8VmeClCA0khv1YiFN/ZPQAY7FeK64Rwdlh2Dohn2Bn8lL8tMV+I+xX/su7ypOw==","signatures":[{"sig":"MEUCIQC9kQYBSH7mI3k4OXSKoiVIT/mBQ0WfmQMagpSW64wKiwIgEHUDYdlvZF+PxUcGt98lxpVHvBqLbkjOBfolXex9rq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34610},"engines":{"node":">=24.14.0"},"gitHead":"4180aa49b513b8480c2237ac775c4c4b7da1dee2","scripts":{"test":"node --test install.test.js release-preflight.test.js bin/multiai.test.js lib/windows-path.test.js","postinstall":"node install.js","prepublishOnly":"npm test && node scan-secrets.js && node release-preflight.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"deprecated":"Windows binary blocked by Avast CyberCapture; use 0.6.6 until the validated hotfix is released.","repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.7_1784056465741_0.5325897573449712","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"multiai","version":"0.6.8","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.8","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"a07227fe9cd896ab3c230187351517a38cc3364f","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.8.tgz","fileCount":7,"integrity":"sha512-OF20f9igjN35Pumx7x457awgrBgZqkXmi0MLmEmQz4zLUqPNhrwcen4A40/ExxAOxa8xqSAe/X9k6Q7Kbv0ogg==","signatures":[{"sig":"MEQCIEvUf4xoiWhYXyNWrW8WJYqFhEoLcNU3dxB7ySDG91RhAiAzaZBWV9AhkIVGTKCyNocT5x2ilJNFHq2wFSJV9LTk/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37515},"engines":{"node":">=24.14.0"},"scripts":{"test":"node --test install.test.js release-preflight.test.js bin/multiai.test.js lib/windows-path.test.js","postinstall":"node install.js","prepublishOnly":"npm test && node scan-secrets.js && node release-preflight.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"deprecated":"Windows postinstall can hang before Node timeout under Avast; use 0.6.10 via the next tag for validation, or 0.6.6 stable.","repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.8_1784068650178_0.021991285896131085","host":"s3://npm-registry-packages-npm-production"}},"0.6.10":{"name":"multiai","version":"0.6.10","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter"],"author":{"url":"https://follow.ovh/bio/laurent","name":"Laurent Rochetta"},"license":"MIT","_id":"multiai@0.6.10","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"homepage":"https://rochetta.fr","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"os":["win32","darwin","linux"],"bin":{"multiai":"bin/multiai.js"},"cpu":["x64","arm64"],"dist":{"shasum":"c418ff8ea44d7453eeb550cc8db22dbcc4eb84bf","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.6.10.tgz","fileCount":9,"integrity":"sha512-e2XDCIPXsqQ9PSWVJbpoeAGuX1sMRSlCRyjHyQnagZt5zFawte+oKzj055voNf+k25WWwUuOum0yuLZ7iftANA==","signatures":[{"sig":"MEUCIBX45e7TWIGRH/tlMTdBUpvTbqECh5QRr0clksHZThOXAiEAvr4MDEgbCEervXjfHKGohmuLZzuMPsk5Bn40oB8GQRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43251},"_from":"file:D:/tmp/multiai-npm-0610/multiai-0.6.10.tgz","engines":{"node":">=24.14.0"},"scripts":{"test":"node --test install.test.js release-preflight.test.js bin/multiai.test.js lib/windows-path.test.js lib/version-probe.test.js","postinstall":"node install.js","prepublishOnly":"npm test && node scan-secrets.js && node release-preflight.js"},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"_resolved":"D:\\tmp\\multiai-npm-0610\\multiai-0.6.10.tgz","_integrity":"sha512-e2XDCIPXsqQ9PSWVJbpoeAGuX1sMRSlCRyjHyQnagZt5zFawte+oKzj055voNf+k25WWwUuOum0yuLZ7iftANA==","repository":{"url":"git+https://github.com/lrochetta/multiai.git","type":"git"},"_npmVersion":"11.16.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/multiai_0.6.10_1784074076674_0.5100381279306017","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"multiai","version":"0.7.0","description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download, embedded Anthropic-to-OpenAI bridge (free NVIDIA models in Claude Code)","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter","nvidia","nim","glm"],"license":"MIT","author":{"name":"Laurent Rochetta","url":"https://follow.ovh/bio/laurent"},"homepage":"https://rochetta.fr","repository":{"type":"git","url":"git+https://github.com/lrochetta/multiai.git"},"bin":{"multiai":"bin/multiai.js"},"scripts":{"test":"node --test install.test.js release-preflight.test.js bin/multiai.test.js lib/windows-path.test.js lib/version-probe.test.js","postinstall":"node install.js","prepublishOnly":"npm test && node scan-secrets.js && node release-preflight.js"},"engines":{"node":">=24.14.0"},"os":["win32","darwin","linux"],"cpu":["x64","arm64"],"gitHead":"0085290b487f80e9aa05c60932633b75e148e186","_id":"multiai@0.7.0","bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-4UdlDURVdCzXwLwqRb/Axy15A41xSzfGhpuBjk7xtyivcBVpP8iOfztpSXzuWt3JXomTiLjmfqLwh7m0bOBSdw==","shasum":"0a73def551dd2c1663626c3fda3e1f1bfbb4a1c4","tarball":"https://registry.npmjs.org/multiai/-/multiai-0.7.0.tgz","fileCount":9,"unpackedSize":43381,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDWMmbVUr3m6VKC38ufMmPGoKMqdF6smaRFRMo8UBEKEAIhAOJvQ0ikqBdzZ8aEWS/HRMLMijX3ErCafR4mB3W/rnG9"}]},"_npmUser":{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"},"directories":{},"maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/multiai_0.7.0_1784567489134_0.4941053612047046"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-23T10:46:33.211Z","modified":"2026-07-20T17:11:29.465Z","0.1.0":"2026-06-23T10:46:33.553Z","0.1.1":"2026-06-23T10:53:25.697Z","0.1.2":"2026-06-23T11:38:29.694Z","0.1.3":"2026-06-23T11:44:22.054Z","0.1.4":"2026-06-23T11:52:55.978Z","0.1.5":"2026-06-23T11:56:16.247Z","0.2.0":"2026-06-23T16:04:54.177Z","0.2.1":"2026-06-23T16:21:52.885Z","0.2.2":"2026-06-23T16:50:43.453Z","0.2.3":"2026-06-23T16:58:19.931Z","0.2.4":"2026-06-23T16:59:31.261Z","0.2.5":"2026-06-23T17:07:43.465Z","0.2.6":"2026-06-23T17:12:22.151Z","0.2.7":"2026-06-23T19:46:31.864Z","0.2.8":"2026-06-23T19:55:09.543Z","0.2.9":"2026-06-23T20:12:00.331Z","0.2.10":"2026-06-23T20:19:25.935Z","0.2.11":"2026-06-23T20:25:18.149Z","0.2.12":"2026-06-24T11:00:30.404Z","0.2.13":"2026-06-24T11:12:18.613Z","0.3.0":"2026-06-24T11:31:17.441Z","0.4.0":"2026-07-05T20:49:44.839Z","0.4.1":"2026-07-05T21:50:05.260Z","0.4.2":"2026-07-05T22:03:30.123Z","0.4.3":"2026-07-05T22:31:55.118Z","0.5.0":"2026-07-10T09:39:24.198Z","0.6.0":"2026-07-12T10:10:22.985Z","0.6.1":"2026-07-12T10:21:14.603Z","0.6.2":"2026-07-12T10:26:25.965Z","0.6.3":"2026-07-12T10:41:12.905Z","0.6.4":"2026-07-12T10:47:35.429Z","0.6.5":"2026-07-12T11:04:21.306Z","0.6.6":"2026-07-12T11:51:12.381Z","0.6.7":"2026-07-14T19:14:25.881Z","0.6.8":"2026-07-14T22:37:30.322Z","0.6.10":"2026-07-15T00:07:56.813Z","0.7.0":"2026-07-20T17:11:29.317Z"},"bugs":{"url":"https://github.com/lrochetta/multiai/issues"},"author":{"name":"Laurent Rochetta","url":"https://follow.ovh/bio/laurent"},"license":"MIT","homepage":"https://rochetta.fr","keywords":["ai","cli","claude","codex","opencode","router","anthropic","deepseek","openrouter","nvidia","nim","glm"],"repository":{"type":"git","url":"git+https://github.com/lrochetta/multiai.git"},"description":"Route multiple AI CLIs (Claude Code, Codex, OpenCode) with isolated env profiles — native Go binary, SHA256-verified download, embedded Anthropic-to-OpenAI bridge (free NVIDIA models in Claude Code)","maintainers":[{"name":"laurent.rochetta","email":"l.rochetta+npm@gmail.com"}],"readme":"# multiai\n\nRoute multiple AI CLIs (Claude Code, Codex CLI, OpenCode) through isolated\nenvironment profiles. One command, 37+ provider profiles, API keys kept in\nyour OS credential store.\n\nThe published npm package installs the native Go binary for Windows, macOS,\nand Linux.\n\nRequires Node.js 24.14 or newer. Older environments can use the standalone Go\nbinary from GitHub Releases instead.\n\n## Quick install\n\n```sh\nnpx --yes --allow-scripts=multiai multiai@latest install\nmultiai\n```\n\nFor a one-off run without a global install:\n\n```sh\nnpx --yes --allow-scripts=multiai multiai@latest\n```\n\n## What npm installation does\n\n1. Downloads the archive for your platform from the matching GitHub release\n   (`windows/amd64`, `darwin/amd64+arm64`, `linux/amd64+arm64`).\n2. **Verifies its SHA256** against the release `checksums.txt` — a mismatch\n   aborts the install before anything is extracted.\n3. Installs the binary inside the package and exposes it through a Node shim\n   (`multiai` on your PATH).\n\nOn Windows, the explicit `install` command discovers npm's global prefix,\nverifies that `multiai.cmd` exists, and adds that directory to the current\nuser's persistent `PATH` when needed. The operation is idempotent, requires no\nadministrator rights, and never uses `setx`. Open a new terminal after the\nfirst installation; a child process cannot rewrite the current shell's\nenvironment.\n\nThis PATH automation belongs to the explicit `npx ... multiai install`\nworkflow above. A raw `npm install --global multiai` still relies on npm's\nglobal prefix already being configured in `PATH`.\n\nThe `checksums.txt` itself is signed with Cosign (keyless, GitHub Actions\nOIDC). To verify the whole chain manually:\n\n```sh\ncosign verify-blob \\\n  --bundle checksums.txt.sigstore.json \\\n  --certificate-identity-regexp 'https://github.com/lrochetta/multiai' \\\n  --certificate-oidc-issuer https://token.actions.githubusercontent.com \\\n  checksums.txt\nsha256sum --check --ignore-missing checksums.txt\n```\n\nThe npm installer does **not** run cosign for you (it only checks SHA256);\nrun the commands above if you want signature-level assurance.\n\n## Environment variables\n\n| Variable | Effect |\n|---|---|\n| `MULTIAI_SKIP_DOWNLOAD=1` | Skip the binary download (CI, offline). |\n| `MULTIAI_INSTALL_DIR=path` | Also copy the verified binary to `path`. |\n| `MULTIAI_SKIP_PATH_UPDATE=1` | Do not update the Windows user `PATH` (managed environments). |\n\n## Usage\n\n```sh\nmultiai            # interactive menu\nmultiai launch -p ds\nmultiai list --json\nmultiai config\nmultiai help\n```\n\nFull documentation: https://github.com/lrochetta/multiai\n\n## License\n\nMIT\n","readmeFilename":"README.md"}