{"_id":"@bassimeledath/vocl","_rev":"5-6b24593c2582b42845f363791b11c2ce","name":"@bassimeledath/vocl","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@bassimeledath/vocl","version":"0.1.0","keywords":["claude","voice","livekit","ai","agent"],"license":"MIT","_id":"@bassimeledath/vocl@0.1.0","maintainers":[{"name":"bassimeledath","email":"bassimfaizal@gmail.com"}],"bin":{"vocl":"dist/index.js"},"dist":{"shasum":"871274866c578968a98eae8ede6aae996d3d7095","tarball":"https://registry.npmjs.org/@bassimeledath/vocl/-/vocl-0.1.0.tgz","fileCount":11,"integrity":"sha512-ZFVGOjkJ87gb7QZPKf4dGNeDcuWXot5z/GNPIXkAn8geJLnTrj77kBX8se0B818aQryF/ImNoC513GOQpsVhfA==","signatures":[{"sig":"MEUCIQCDjx18SVCCEZj+FE1/P1ea3qyTuJXoUz+T73TGUgJX8AIgVppawT7kqtFXj1Hxz96evwARo0Fm/dFKolyJRwhP5IY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59875},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0f27991401f3e6ad83c2831ef5d5076b7d40d018","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"bassimeledath","email":"bassimfaizal@gmail.com"},"_npmVersion":"11.12.1","description":"Voice-native interface for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.24.4","dotenv":"^16.4.7","express":"^5.1.0","@livekit/agents":"^1.0.12","livekit-server-sdk":"^2.9.0","@livekit/agents-plugin-silero":"^1.0.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.3","@types/express":"^5.0.2"},"_npmOperationalInternal":{"tmp":"tmp/vocl_0.1.0_1776011746452_0.9698818142407939","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bassimeledath/vocl","version":"0.1.1","keywords":["claude","voice","livekit","ai","agent"],"license":"MIT","_id":"@bassimeledath/vocl@0.1.1","maintainers":[{"name":"bassimeledath","email":"bassimfaizal@gmail.com"}],"bin":{"vocl":"dist/index.js"},"dist":{"shasum":"f202dd96acc507067c7ea27110a96719d31438df","tarball":"https://registry.npmjs.org/@bassimeledath/vocl/-/vocl-0.1.1.tgz","fileCount":15,"integrity":"sha512-3h2+jqW3/EfHhoeFVh0gDMhK6wCW2NjoettYCbGPMuj9jiPTTEHmxp7UUtkXzorcDtA91r4QaFM12y39YfEn0g==","signatures":[{"sig":"MEUCIQC8nzTYysOUVaA6kOYf8CbbESfYLr0ooEOUbGOFyH9YLAIgLKGs41uFbyWIQSLjhEVjxhwIccfFYhjFHaAcpO16S5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70541},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"752a68c8fc7285f2d282e7bfc1edac276094ca47","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"bassimeledath","email":"bassimfaizal@gmail.com"},"_npmVersion":"11.12.1","description":"Voice-native interface for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.24.4","dotenv":"^16.4.7","express":"^5.1.0","@livekit/agents":"^1.0.12","livekit-server-sdk":"^2.9.0","@livekit/agents-plugin-silero":"^1.0.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.3","@types/express":"^5.0.2"},"_npmOperationalInternal":{"tmp":"tmp/vocl_0.1.1_1776128922692_0.4022516214405307","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bassimeledath/vocl","version":"0.1.2","keywords":["claude","voice","livekit","ai","agent"],"license":"MIT","_id":"@bassimeledath/vocl@0.1.2","maintainers":[{"name":"bassimeledath","email":"bassimfaizal@gmail.com"}],"bin":{"vocl":"dist/index.js"},"dist":{"shasum":"01d0e51741900eefec5897d49389a8603acb0e49","tarball":"https://registry.npmjs.org/@bassimeledath/vocl/-/vocl-0.1.2.tgz","fileCount":15,"integrity":"sha512-oskCCpXRfRfI5wFr42YJ5aDX6W3qbK7kBygJIWpyWrmozqMQ9w8XDrwVewFHXiB5gzh9OuvJAcQ7XJwMT+GviA==","signatures":[{"sig":"MEYCIQCZUcwg4gzLEZD2iUkiir6Ehfyx1Vtc30kBX4O/mI2Q5wIhAO9f1CViEzCaLmJVpTBch5sOZi5Lh/H3LyHduhqSYRtb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71096},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"eea305cf278afd431073ed92e50b4b4733468e15","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"bassimeledath","email":"bassimfaizal@gmail.com"},"_npmVersion":"11.12.1","description":"Voice-native interface for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.24.4","dotenv":"^16.4.7","express":"^5.1.0","@livekit/agents":"^1.0.12","livekit-server-sdk":"^2.9.0","@livekit/agents-plugin-silero":"^1.0.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.3","@types/express":"^5.0.2"},"_npmOperationalInternal":{"tmp":"tmp/vocl_0.1.2_1776131964966_0.1010029287588412","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bassimeledath/vocl","version":"0.1.3","keywords":["claude","voice","livekit","ai","agent"],"license":"MIT","_id":"@bassimeledath/vocl@0.1.3","maintainers":[{"name":"bassimeledath","email":"bassimfaizal@gmail.com"}],"bin":{"vocl":"dist/index.js"},"dist":{"shasum":"fbaf0fca491be0bc6500234889dc23eedc7a658e","tarball":"https://registry.npmjs.org/@bassimeledath/vocl/-/vocl-0.1.3.tgz","fileCount":15,"integrity":"sha512-RnS9iYmKF8oN+yxkhFmzBfxA0eCbegyzh0QDOVHNkIDkIASVnNKH+0NQ0G4Jvs8eq7lZRldliuz2qqz4CEv5LA==","signatures":[{"sig":"MEUCIQDyK60neaAhbM+PoC+blA6UI4C8MrQ5rod/XDlFsqChoAIgLkWH9yMzB4SVlwd1YRG3fm+zT8wpGRtMIVthJFBOZwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75682},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"36300339c8d7b145a172145fc10b05ad9860b661","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"bassimeledath","email":"bassimfaizal@gmail.com"},"_npmVersion":"11.12.1","description":"Voice-native interface for Claude Code","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.24.4","dotenv":"^16.4.7","express":"^5.1.0","@livekit/agents":"^1.0.12","livekit-server-sdk":"^2.9.0","@livekit/agents-plugin-silero":"^1.0.12"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.3","@types/express":"^5.0.2"},"_npmOperationalInternal":{"tmp":"tmp/vocl_0.1.3_1776134995227_0.7077982623082233","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@bassimeledath/vocl","version":"0.1.4","description":"Voice-native interface for Claude Code","type":"module","engines":{"node":">=18.0.0"},"main":"dist/index.js","bin":{"vocl":"dist/index.js"},"scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"keywords":["claude","voice","livekit","ai","agent"],"license":"MIT","dependencies":{"@livekit/agents":"^1.0.12","@livekit/agents-plugin-silero":"^1.0.12","dotenv":"^16.4.7","express":"^5.1.0","livekit-server-sdk":"^2.9.0","zod":"^3.24.4"},"devDependencies":{"@types/express":"^5.0.2","@types/node":"^22.15.3","tsx":"^4.19.4","typescript":"^5.8.3"},"gitHead":"460fe290c9a8ebb7149dc36be0a1aa0f0e1b9786","types":"./dist/index.d.ts","_id":"@bassimeledath/vocl@0.1.4","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-R9jF4br84NJCS0lEQFi8LfA6rgo5YkA+F3jUHogc+9Vw5Zp4LbiWCAPpjeYmHgJhc12st9MHFRpJyKoTZ1uL3g==","shasum":"27a977a44ce430bfd0066e9a185377a9d29df745","tarball":"https://registry.npmjs.org/@bassimeledath/vocl/-/vocl-0.1.4.tgz","fileCount":15,"unpackedSize":83430,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAaeGzyaDoF48BdU3b30PjG0rxHUGbd5cxBO59fF8U3vAiBguR2ACSjoB+gtAlDSHq8p54P4m8p0MJ4ZW7q7Rsg0ZA=="}]},"_npmUser":{"name":"bassimeledath","email":"bassimfaizal@gmail.com"},"directories":{},"maintainers":[{"name":"bassimeledath","email":"bassimfaizal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vocl_0.1.4_1776748490066_0.5679539746300013"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-12T16:35:46.287Z","modified":"2026-04-21T05:14:50.339Z","0.1.0":"2026-04-12T16:35:46.588Z","0.1.1":"2026-04-14T01:08:42.845Z","0.1.2":"2026-04-14T01:59:25.097Z","0.1.3":"2026-04-14T02:49:55.684Z","0.1.4":"2026-04-21T05:14:50.207Z"},"license":"MIT","keywords":["claude","voice","livekit","ai","agent"],"description":"Voice-native interface for Claude Code","maintainers":[{"name":"bassimeledath","email":"bassimfaizal@gmail.com"}],"readme":"# Vocl\n\nVoice-native interface for Claude Code -- talk to your codebase.\n\n## Quick Start\n\n```bash\nnpx vocl\n```\n\nOn first run, you'll be prompted for your LiveKit Cloud credentials. That's it --\nthe browser opens automatically and you're talking to Claude Code.\n\n## What You Need\n\n- **Node.js** 18+\n- **LiveKit Cloud** account -- [cloud.livekit.io](https://cloud.livekit.io) (free tier available)\n- **Claude CLI** installed and authenticated (`claude` on your PATH)\n\n## How It Works\n\n```\nYou (browser mic/speaker)\n  -> LiveKit Cloud (WebRTC + Inference Gateway)\n  -> Vocl agent (Node.js)\n      - STT: Deepgram Nova-3\n      - LLM: openai/gpt-4.1-mini (Layer 1 -- conversation + routing)\n      - Tool: claude -p subprocess (Layer 2 -- engineering work)\n      - TTS: Deepgram Aura-2\n  -> You (browser speaker)\n```\n\nOne process runs everything: the voice agent, the token server, and the static UI.\nAll STT/LLM/TTS go through LiveKit's Inference Gateway -- one API key, no separate\nprovider accounts.\n\n## Configuration\n\nConfig is resolved in priority order: **env vars > .env file > ~/.vocl/config.json**\n\nThe first-run setup wizard saves to `~/.vocl/config.json`. You can also set\nenvironment variables directly:\n\n```bash\nexport LIVEKIT_URL=wss://your-project.livekit.cloud\nexport LIVEKIT_API_KEY=APIxxxxx\nexport LIVEKIT_API_SECRET=xxxxx\n```\n\n## CLI Flags\n\n```\nnpx vocl                          # start everything, open browser\nnpx vocl --no-open                # start without opening browser\nnpx vocl --project-dir ~/myrepo   # set Claude Code working directory\n```\n\n`VOCAL_CLAUDE_PROJECT_DIR` env var also sets the working directory (defaults to cwd).\n\n## Examples\n\n- \"Hey, what's up?\" -- answers directly (no Claude Code)\n- \"What files are in this project?\" -- calls Claude Code, speaks back a summary\n- \"Dispatch a security review\" -- Claude Code dispatches background task\n- \"How's that review going?\" -- asks Claude Code for status\n","readmeFilename":"README.md"}