{"_id":"@bytehumi/klipeo-bridge","_rev":"5-0999075cb057df98f4d044643adc233b","name":"@bytehumi/klipeo-bridge","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.1":{"name":"@bytehumi/klipeo-bridge","version":"0.1.1","keywords":["klipeo","vibe","claude-code","codex","gemini-cli","opencode","mcp","ai-video-editor"],"author":{"name":"bytehumi"},"license":"MIT","_id":"@bytehumi/klipeo-bridge@0.1.1","maintainers":[{"name":"bytehumi","email":"niladrivit@gmail.com"}],"homepage":"https://klipeo.app","bugs":{"url":"https://github.com/NiladriHazra/klipeolanding/issues"},"bin":{"klipeo":"dist/cli.js"},"dist":{"shasum":"9e907e3e2d777d1004fc6383b8cb694cec128a7c","tarball":"https://registry.npmjs.org/@bytehumi/klipeo-bridge/-/klipeo-bridge-0.1.1.tgz","fileCount":59,"integrity":"sha512-VSm1axreSMdHPBVPZ1hwmaOuv2kWOJMh2UrOYKijEgQQFNKBXpNOOr5Qd7bDL4p0DPKDT86mnqCRIjaEnIlb3g==","signatures":[{"sig":"MEUCIQDL38QYgEJ/nEfNQmyz7AxA+MYJKY0NH9nPW1gWSISgYQIgJvCUxhBpezJI8UPZgcFTZ9mcMsHrNBC38NZICdLfVA4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66443},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"0b923f3bebeee9175040ac9ab99736c246a8f689","scripts":{"dev":"tsx src/cli.ts","build":"tsc -p tsconfig.json","type-check":"tsc --noEmit","check-types":"tsc --noEmit","prepublishOnly":"tsc -p tsconfig.json"},"_npmUser":{"name":"bytehumi","email":"niladrivit@gmail.com"},"repository":{"url":"git+https://github.com/NiladriHazra/klipeolanding.git","type":"git","directory":"packages/bridge"},"_npmVersion":"11.8.0","description":"Local bridge for Klipeo Vibe mode — connect your own Claude Code / Codex / Gemini CLI / OpenCode.","directories":{},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.16.0","ora":"^8.0.0","zod":"^3.23.0","open":"^10.0.0","chalk":"^5.3.0","nanoid":"^5.0.0","commander":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","@types/ws":"^8.5.10","typescript":"^5.4.0","@types/node":"^20.0.0","@klipeo/config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/klipeo-bridge_0.1.1_1776763333836_0.7293443872459235","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bytehumi/klipeo-bridge","version":"0.1.2","keywords":["klipeo","vibe","claude-code","codex","gemini-cli","opencode","mcp","ai-video-editor"],"author":{"name":"bytehumi"},"license":"MIT","_id":"@bytehumi/klipeo-bridge@0.1.2","maintainers":[{"name":"bytehumi","email":"niladrivit@gmail.com"}],"homepage":"https://klipeo.com","bugs":{"url":"https://github.com/NiladriHazra/klipeolanding/issues"},"bin":{"klipeo":"dist/cli.js"},"dist":{"shasum":"1f58e0f7b38e6278c9a894a7d5afd3bf49398449","tarball":"https://registry.npmjs.org/@bytehumi/klipeo-bridge/-/klipeo-bridge-0.1.2.tgz","fileCount":59,"integrity":"sha512-xwxPkeV5ksRVcAF17wyuUfHVE5P+9bzn0Mq4UeSXTYgY9H3Wsi9s6hn6k44R192T9UUajI6XGZWreA8khAiInw==","signatures":[{"sig":"MEUCICa+EJZr16UdFsvwgMNh/U3H/vwDuvnJv8e+tvDwAMY3AiEAhFMiDMsQBnQ6htVviyUl/zZKMG5b63vfZ//qg3WoCu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66498},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"d12cf3a545e29ca57047e77066a4ddc1a717eef9","scripts":{"dev":"tsx src/cli.ts","build":"tsc -p tsconfig.json","type-check":"tsc --noEmit","check-types":"tsc --noEmit","prepublishOnly":"tsc -p tsconfig.json"},"_npmUser":{"name":"bytehumi","email":"niladrivit@gmail.com"},"repository":{"url":"git+https://github.com/NiladriHazra/klipeolanding.git","type":"git","directory":"packages/bridge"},"_npmVersion":"11.8.0","description":"Local bridge for Klipeo Vibe mode — connect your own Claude Code / Codex / Gemini CLI / OpenCode.","directories":{},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.16.0","ora":"^8.0.0","zod":"^3.23.0","open":"^10.0.0","chalk":"^5.3.0","nanoid":"^5.0.0","commander":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","@types/ws":"^8.5.10","typescript":"^5.4.0","@types/node":"^20.0.0","@klipeo/config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/klipeo-bridge_0.1.2_1776766470176_0.32469198492205287","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bytehumi/klipeo-bridge","version":"0.1.3","keywords":["klipeo","vibe","claude-code","codex","gemini-cli","opencode","mcp","ai-video-editor"],"author":{"name":"bytehumi"},"license":"MIT","_id":"@bytehumi/klipeo-bridge@0.1.3","maintainers":[{"name":"bytehumi","email":"niladrivit@gmail.com"}],"homepage":"https://klipeo.com","bugs":{"url":"https://github.com/NiladriHazra/klipeolanding/issues"},"bin":{"klipeo":"dist/cli.js"},"dist":{"shasum":"11f69f9b0d7cbc65b72e61d5e802cd937654d479","tarball":"https://registry.npmjs.org/@bytehumi/klipeo-bridge/-/klipeo-bridge-0.1.3.tgz","fileCount":59,"integrity":"sha512-snkfkCO64ZMcYKZLR17ZogYPUELDXuN8sXgZ/3eQ7p4yz4vwCtYOfG1wro+TgfKN0GncULM28IHmBc3nPDX6yg==","signatures":[{"sig":"MEUCIFywUGJZ12193Xnu6HIpLBBr3rA+OFtRM1bP0fseAt+hAiEAzB6jmdFF+apOJ/L79eySF7NeT9jz0CueFpq8otpG5lI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66771},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"88d71215dae874d44d16abf4f36320d59c518100","scripts":{"dev":"tsx src/cli.ts","build":"tsc -p tsconfig.json","type-check":"tsc --noEmit","check-types":"tsc --noEmit","prepublishOnly":"tsc -p tsconfig.json"},"_npmUser":{"name":"bytehumi","email":"niladrivit@gmail.com"},"repository":{"url":"git+https://github.com/NiladriHazra/klipeolanding.git","type":"git","directory":"packages/bridge"},"_npmVersion":"11.8.0","description":"Local bridge for Klipeo Vibe mode — connect your own Claude Code / Codex / Gemini CLI / OpenCode.","directories":{},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.16.0","ora":"^8.0.0","zod":"^3.23.0","open":"^10.0.0","chalk":"^5.3.0","nanoid":"^5.0.0","commander":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","@types/ws":"^8.5.10","typescript":"^5.4.0","@types/node":"^20.0.0","@klipeo/config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/klipeo-bridge_0.1.3_1776771597053_0.22371011484955505","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@bytehumi/klipeo-bridge","version":"0.1.4","keywords":["klipeo","vibe","claude-code","codex","gemini-cli","opencode","mcp","ai-video-editor"],"author":{"name":"bytehumi"},"license":"MIT","_id":"@bytehumi/klipeo-bridge@0.1.4","maintainers":[{"name":"bytehumi","email":"niladrivit@gmail.com"}],"homepage":"https://klipeo.com","bugs":{"url":"https://github.com/NiladriHazra/klipeolanding/issues"},"bin":{"klipeo":"dist/cli.js"},"dist":{"shasum":"d9d365a74f8578dcf0c1936009981c0615b67671","tarball":"https://registry.npmjs.org/@bytehumi/klipeo-bridge/-/klipeo-bridge-0.1.4.tgz","fileCount":59,"integrity":"sha512-dMOVew4dGJykQ/9EH0mZ4NFHQjwWa2rsoj1r8yLnimKrBm/t/MrfZqk49RNIw6hj9ceOvr3E1+6UbIVN6U+WdQ==","signatures":[{"sig":"MEYCIQCkApXGOfy2xne11LJ/3Gr1P/DIOhbz1D/HLN2vjm08MQIhAMesw3Ab+nav/sEu12hxIhVr1istwGT7g78ijB0zwhEp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68222},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"cb2973f35ca288ce9c289d70136d5766cbc39269","scripts":{"dev":"tsx src/cli.ts","build":"tsc -p tsconfig.json","type-check":"tsc --noEmit","check-types":"tsc --noEmit","prepublishOnly":"tsc -p tsconfig.json"},"_npmUser":{"name":"bytehumi","email":"niladrivit@gmail.com"},"repository":{"url":"git+https://github.com/NiladriHazra/klipeolanding.git","type":"git","directory":"packages/bridge"},"_npmVersion":"11.8.0","description":"Local bridge for Klipeo Vibe mode — connect your own Claude Code / Codex / Gemini CLI / OpenCode.","directories":{},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.16.0","ora":"^8.0.0","zod":"^3.23.0","open":"^10.0.0","chalk":"^5.3.0","nanoid":"^5.0.0","commander":"^12.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","@types/ws":"^8.5.10","typescript":"^5.4.0","@types/node":"^20.0.0","@klipeo/config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/klipeo-bridge_0.1.4_1776772056618_0.16793362726076633","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@bytehumi/klipeo-bridge","version":"0.1.5","description":"Local bridge for Klipeo Vibe mode — connect your own Claude Code / Codex / Gemini CLI / OpenCode.","type":"module","bin":{"klipeo":"dist/cli.js"},"engines":{"node":">=22.12.0"},"main":"./dist/index.js","types":"./dist/index.d.ts","keywords":["klipeo","vibe","claude-code","codex","gemini-cli","opencode","mcp","ai-video-editor"],"author":{"name":"bytehumi"},"license":"MIT","homepage":"https://klipeo.com","repository":{"type":"git","url":"git+https://github.com/NiladriHazra/Klipeo.git","directory":"packages/bridge"},"bugs":{"url":"https://github.com/NiladriHazra/Klipeo/issues"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.json","dev":"tsx src/cli.ts","test":"git ls-files -z --cached --others --exclude-standard -- 'src/**/*.test.ts' | xargs -0 node --import tsx --test","type-check":"tsc --noEmit","check-types":"tsc --noEmit","prepublishOnly":"tsc -p tsconfig.json"},"dependencies":{"chalk":"^6.0.0","commander":"^15.0.0","nanoid":"^5.0.0","open":"^11.0.1","ora":"^8.0.0","ws":"^8.16.0","zod":"^4.4.3"},"devDependencies":{"@klipeo/config":"workspace:*","@types/node":"^26.2.0","@types/ws":"^8.5.10","tsx":"^4.23.13","typescript":"^5.4.0"},"_id":"@bytehumi/klipeo-bridge@0.1.5","_nodeVersion":"25.5.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-CHwiu/SLhRWD2EiApJWC5Pr2sJFWG4ZhEq8qlU6JOikUynafzKkptIrubYXD2Pvfxw6i6L46UciDE+52tjTtLg==","shasum":"026b0e3a4911a981fcc38f76e4d37404645348ea","tarball":"https://registry.npmjs.org/@bytehumi/klipeo-bridge/-/klipeo-bridge-0.1.5.tgz","fileCount":101,"unpackedSize":242369,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDOlyMqEY98Zk6/lD9Sxz4pjmRi9S3cEagiRC3YCl2IqQIgcSVsgoMd9FNX3q+eJtrD8NJ1MXaaFoUO0WkmzA9/Vjw="}]},"_npmUser":{"name":"bytehumi","email":"niladrivit@gmail.com"},"directories":{},"maintainers":[{"name":"bytehumi","email":"niladrivit@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/klipeo-bridge_0.1.5_1789137825552_0.30419600586360485"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-21T09:22:13.762Z","modified":"2026-09-11T14:43:45.833Z","0.1.1":"2026-04-21T09:22:13.988Z","0.1.2":"2026-04-21T10:14:30.323Z","0.1.3":"2026-04-21T11:39:57.185Z","0.1.4":"2026-04-21T11:47:36.745Z","0.1.5":"2026-09-11T14:43:45.683Z"},"bugs":{"url":"https://github.com/NiladriHazra/Klipeo/issues"},"author":{"name":"bytehumi"},"license":"MIT","homepage":"https://klipeo.com","keywords":["klipeo","vibe","claude-code","codex","gemini-cli","opencode","mcp","ai-video-editor"],"repository":{"type":"git","url":"git+https://github.com/NiladriHazra/Klipeo.git","directory":"packages/bridge"},"description":"Local bridge for Klipeo Vibe mode — connect your own Claude Code / Codex / Gemini CLI / OpenCode.","maintainers":[{"name":"bytehumi","email":"niladrivit@gmail.com"}],"readme":"# @bytehumi/klipeo-bridge\n\nLocal bridge daemon for Klipeo Vibe mode. Runs on your machine and connects Klipeo's web app to your already-installed AI coding CLI (Claude Code, Codex, Gemini CLI, or OpenCode). Uses your existing subscription — Klipeo never proxies your AI calls.\n\n## Install\n\nThe bridge requires Node.js 22.12 or newer.\n\n```bash\nnpm install -g @bytehumi/klipeo-bridge\n```\n\n## Quick start\n\nOne command, no global install:\n\n```bash\nnpx -y @bytehumi/klipeo-bridge@latest start\n```\n\nOn first run `start` opens the browser to sign in with Klipeo, saves the credentials, and starts the local daemon on localhost:7777. Leave it running. Open Klipeo in your browser and pick your CLI; the editor detects the bridge on its own.\n\nInstalled globally, `klipeo start` does the same, and `klipeo login` still works on its own.\n\n### Full Mac access\n\nBy default the CLI only edits through Klipeo's managed tools. To let it use its own file and shell tools on this machine, start the bridge with the flag and run in Auto mode:\n\n```bash\nklipeo start --host-access\n```\n\nPrompts reach the CLI through the web app, so text inside media, transcripts, or a shared project could steer it. Keep the flag off on machines you do not control.\n\n### Manual token (dev / staging)\n\nWhile the web OAuth flow is still being built, you can paste a token directly:\n\n```bash\nklipeo login --token <jwt>\n```\n\n### Point at a different Klipeo environment\n\n```bash\nKLIPEO_BASE_URL=http://localhost:3000 klipeo login\nKLIPEO_BASE_URL=http://localhost:3000 klipeo start\n```\n\nFor Gemini CLI, the bridge process needs `GEMINI_API_KEY`. In this repo the\nbridge also falls back to `apps/web/.env.local` if the key is not already in the\nenvironment.\n\n## Commands\n\n| Command         | What it does                                                        |\n| --------------- | ------------------------------------------------------------------- |\n| `klipeo login`  | Browser-based sign-in. Supports `--token` for manual tokens.        |\n| `klipeo start`  | Boots the local HTTP/WS server and begins polling Klipeo for tasks. |\n| `klipeo status` | Prints login state, daemon pid, and detected CLIs.                  |\n| `klipeo logout` | Clears saved credentials.                                           |\n| `klipeo detect` | One-shot detection of supported CLIs.                               |\n\n## Supported CLIs\n\n| CLI         | Binary     | Spawn                                                                                                                                                  | Stream parsing                                                                     | MCP                                                        |\n| ----------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | ---------------------------------------------------------- |\n| Claude Code | `claude`   | `-p <prompt> --model <model> --output-format stream-json --verbose --include-partial-messages --permission-mode bypassPermissions --mcp-config <file>` | Current `stream_event` wrapper + raw API events (`content_block_start/delta/stop`) | `mcp.json` written to workspace, passed via `--mcp-config` |\n| Codex       | `codex`    | `exec --json --full-auto --model <model> -C <path> <prompt>`                                                                                           | Thread/turn/item state machine                                                     | Global `~/.codex/config.toml` (user-configured)            |\n| Gemini CLI  | `gemini`   | `-p <prompt> --model <model> --approval-mode yolo -o stream-json`                                                                                      | NDJSON (`init`/`message`/`tool_use`/`tool_result`/`result`)                        | `.gemini/settings.json` written to workspace               |\n| OpenCode    | `opencode` | `run --format json --model <provider/model> --variant <variant> --dangerously-skip-permissions <prompt>`                                               | NDJSON (`text`/`tool_use`/`step_finish`/`error`)                                   | `opencode.json` written to workspace                       |\n\nAt least one of those needs to be installed and signed in on your machine. `klipeo detect` shows what's available.\n\n## Local endpoints\n\n- `GET /health` returns bridge status and detected CLIs.\n- `GET /models?cli=<claude|codex|gemini|opencode>` returns the model catalog reported by the installed CLI.\n- `WS /klipeo` streams bridge, detection, dispatch, and CLI activity events to the web app.\n\n## Where things live\n\n```\n~/.klipeo/\n  credentials.json      # { token, userId, email } — chmod 600\n  config.json           # { preferredCli, baseUrl }\n  daemon.pid            # running daemon pid\n  projects/<id>/\n    composition.json    # latest snapshot from Klipeo\n    mcp.json            # Claude Code MCP config\n    .gemini/settings.json # Gemini CLI MCP config\n    opencode.json       # OpenCode MCP config\n```\n\n## Troubleshooting\n\n- **Port 7777 busy** — another `klipeo start` is running. Run `klipeo status` to check.\n- **CLI not detected** — confirm the binary is on your `$PATH`. `klipeo detect` runs `--version` on each.\n- **Claude `--mcp-config` rejected** — older Claude Code versions may not accept the flag. The bridge also writes `KLIPEO_MCP_CONFIG` into the child env as a fallback.\n- **Codex hangs on approval** — your Codex CLI is older than the `--full-auto` flag. Upgrade to `@openai/codex@0.12+`.\n- **Codex exits without text** — make sure the bridge is up to date; it closes stdin for non-interactive Codex runs.\n- **Gemini says `GEMINI_API_KEY` is missing** — export it before `klipeo start`, or keep it in `apps/web/.env.local` when running this repo locally.\n- **Gemini hangs in non-interactive mode** — make sure `--approval-mode yolo` is taking effect (older `--yolo` flag is deprecated).\n- **OpenCode `--prompt` flag not found** — you're on OpenCode 1.4+, which made the prompt positional. The bridge already passes it positionally.\n- **401 from upstream** — token expired. Run `klipeo login` again.\n\n## Security\n\n- Credentials live in `~/.klipeo/credentials.json` with `0600` permissions.\n- The local HTTP server only accepts connections from `127.0.0.1` and CORS-limits browser requests to `https://klipeo.com`, `https://dev.klipeo.com`, and `http://localhost:3000/3001`.\n- No telemetry.\n- Your AI CLI calls go directly from your machine to Anthropic / OpenAI / Google using your own credentials; Klipeo never sees them.\n","readmeFilename":"README.md"}