{"_id":"codexpro","_rev":"9-80aa7bf2457bcd5b2e1b75b62f94fd06","name":"codexpro","dist-tags":{"beta":"0.29.0-beta.1","latest":"0.30.0"},"versions":{"0.27.0":{"name":"codexpro","version":"0.27.0","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok"],"license":"MIT","_id":"codexpro@0.27.0","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"homepage":"https://github.com/rebel0789/codexpro#readme","bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"dist":{"shasum":"92649f1c5ecead1ebe692808cccceeaa135f430c","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.27.0.tgz","fileCount":46,"integrity":"sha512-12O74LlXb5sGS3O2PBrl1kfQ3b42A+ezGr9y1aWC6r6+j09dcIRhsyu5o5zWe+0qIcxPNd/hBHKiCpGFJuOyIQ==","signatures":[{"sig":"MEYCIQC/061nDYqXvf0koC+WRKCKx/jT8fsfF9RzwmFyxHuwBQIhAJFr/MvtytTGulTIEfUqwf8PC1PPGBQfUlKNg3eW8GCL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":405163},"type":"module","engines":{"node":">=20"},"gitHead":"2d7e8e84cb9dd3994e5d9db8518e77e0ffa85a18","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.mjs && node scripts/http-smoke.mjs && node scripts/pro-smoke.mjs && node scripts/doctor-smoke.mjs && node scripts/settings-smoke.mjs","start":"node dist/stdio.js","doctor":"node scripts/codexpro.mjs doctor","connect":"node scripts/codexpro.mjs","prepack":"npm run build","dev:http":"tsx src/http.ts","dev:stdio":"tsx src/stdio.ts","pro:apply":"node scripts/pro-apply.mjs","pro:bundle":"node scripts/pro-bundle.mjs","start:http":"node dist/http.js","start:stdio":"node dist/stdio.js","connect:local":"node scripts/codexpro.mjs --tunnel none","connect:ngrok":"node scripts/codexpro.mjs ngrok","connect:setup":"node scripts/codexpro.mjs setup","connect:stable":"node scripts/codexpro.mjs --tunnel cloudflare-named","connect:chatgpt":"node scripts/codexpro.mjs --tunnel cloudflare","connect:cloudflare":"node scripts/codexpro.mjs --tunnel cloudflare"},"_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"repository":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"_npmVersion":"10.9.8","description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.76","cors":"^2.8.5","express":"^5.1.0","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/codexpro_0.27.0_1781645567575_0.24078913126804014","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"codexpro","version":"0.27.1","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok"],"license":"MIT","_id":"codexpro@0.27.1","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"homepage":"https://rebel0789.github.io/codexpro/","bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"dist":{"shasum":"2a5a8e492409b646c3a24e5d852656c1ef969711","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.27.1.tgz","fileCount":53,"integrity":"sha512-Wqk7mgzurvkX/P5wbzjzHjooZsEaOxQbk0TjXz7GNIa8x7mhcOUmfhvZT3bMZpHJfu8zZuHlfoLyug+AAgJfxg==","signatures":[{"sig":"MEQCIEpYhWPqfmt5896aisdAmCwNRK7GqWOUdO4MB5zAUD/ZAiBzBO6Oul+EPfdebke7d3Qpct75nHZfiTA4WpLNCTUBFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":465632},"type":"module","engines":{"node":">=20"},"gitHead":"48232024ecda655bae67e18d82015c8dce6bafce","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.mjs && node scripts/http-smoke.mjs && node scripts/pro-smoke.mjs && node scripts/doctor-smoke.mjs && node scripts/settings-smoke.mjs","start":"node dist/stdio.js","doctor":"node scripts/codexpro.mjs doctor","connect":"node scripts/codexpro.mjs","prepack":"npm run build","dev:http":"tsx src/http.ts","dev:stdio":"tsx src/stdio.ts","pro:apply":"node scripts/pro-apply.mjs","pro:bundle":"node scripts/pro-bundle.mjs","start:http":"node dist/http.js","start:stdio":"node dist/stdio.js","connect:local":"node scripts/codexpro.mjs --tunnel none","connect:ngrok":"node scripts/codexpro.mjs ngrok","connect:setup":"node scripts/codexpro.mjs setup","connect:stable":"node scripts/codexpro.mjs --tunnel cloudflare-named","connect:chatgpt":"node scripts/codexpro.mjs --tunnel cloudflare","connect:cloudflare":"node scripts/codexpro.mjs --tunnel cloudflare"},"_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"repository":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"_npmVersion":"10.9.8","description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.76","cors":"^2.8.5","express":"^5.1.0","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/codexpro_0.27.1_1781651118181_0.6745753631789766","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"codexpro","version":"0.28.0","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok"],"license":"MIT","_id":"codexpro@0.28.0","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"homepage":"https://rebel0789.github.io/codexpro/","bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"dist":{"shasum":"be49909e5cde54627c34e70cd78561de9eec1c4d","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.28.0.tgz","fileCount":56,"integrity":"sha512-bkvON2KQGd8xcOugFpc4TghW1cMuQIFngLMdVi2sBxQSbZyYXEO25KeRffFvNt0jMNjFWQVRCJ+cWkr6Px3mZQ==","signatures":[{"sig":"MEQCIHVTYsRtriwKOuPSPy4hj2i8261qZn6Ln4XpaFmd9Qj2AiAO5v4rVNBIfDmcHJLOoJ8NWQlruGRrabFbJ02M3jh41A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":533574},"type":"module","engines":{"node":">=20"},"gitHead":"18d9354a10cfc51705845c987bb077793a0fd1cb","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.mjs && node scripts/http-smoke.mjs && node scripts/pro-smoke.mjs && node scripts/doctor-smoke.mjs && node scripts/settings-smoke.mjs && node scripts/execute-handoff-smoke.mjs","start":"node dist/stdio.js","doctor":"node scripts/codexpro.mjs doctor","connect":"node scripts/codexpro.mjs","prepack":"npm run build","dev:http":"tsx src/http.ts","dev:stdio":"tsx src/stdio.ts","pro:apply":"node scripts/pro-apply.mjs","pro:bundle":"node scripts/pro-bundle.mjs","start:http":"node dist/http.js","start:stdio":"node dist/stdio.js","connect:local":"node scripts/codexpro.mjs --tunnel none","connect:ngrok":"node scripts/codexpro.mjs ngrok","connect:setup":"node scripts/codexpro.mjs setup","connect:stable":"node scripts/codexpro.mjs --tunnel cloudflare-named","connect:chatgpt":"node scripts/codexpro.mjs --tunnel cloudflare","connect:cloudflare":"node scripts/codexpro.mjs --tunnel cloudflare"},"_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"repository":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"_npmVersion":"10.9.8","description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.76","cors":"^2.8.5","express":"^5.1.0","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/codexpro_0.28.0_1781704382455_0.4743808872848305","host":"s3://npm-registry-packages-npm-production"}},"0.28.4":{"name":"codexpro","version":"0.28.4","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok"],"license":"MIT","_id":"codexpro@0.28.4","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"homepage":"https://rebel0789.github.io/codexpro/","bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"dist":{"shasum":"61e5c82c56ba20c05084b8dd52bd941d9ef542ae","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.28.4.tgz","fileCount":59,"integrity":"sha512-A9Lb0fBiIMs28y76pqMC/20oULLCyGIydwagXGE1OjchVtSDfo/KTth6k3yCZF3EskL7EiAXGTO1pbPbGOwFVg==","signatures":[{"sig":"MEQCIDCdoQUA+3K8sDKQeWGRWV14b0D/yqtT2h+g/YIdo+/CAiB3fsvK31wv+s9OVwbiAUKHa8PFI7ZtcmnRhFez7G/wxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":636548},"type":"module","engines":{"node":">=20"},"gitHead":"6fc87c5417ae44f5bc89ac8a642477cb9018b13d","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.mjs && node scripts/http-smoke.mjs && node scripts/pro-smoke.mjs && node scripts/doctor-smoke.mjs && node scripts/settings-smoke.mjs && node scripts/execute-handoff-smoke.mjs","start":"node dist/stdio.js","doctor":"node scripts/codexpro.mjs doctor","connect":"node scripts/codexpro.mjs","prepack":"npm run build","dev:http":"tsx src/http.ts","dev:stdio":"tsx src/stdio.ts","pro:apply":"node scripts/pro-apply.mjs","pro:bundle":"node scripts/pro-bundle.mjs","start:http":"node dist/http.js","start:stdio":"node dist/stdio.js","connect:local":"node scripts/codexpro.mjs --tunnel none","connect:ngrok":"node scripts/codexpro.mjs ngrok","connect:setup":"node scripts/codexpro.mjs setup","connect:stable":"node scripts/codexpro.mjs --tunnel cloudflare-named","connect:chatgpt":"node scripts/codexpro.mjs --tunnel cloudflare","connect:cloudflare":"node scripts/codexpro.mjs --tunnel cloudflare"},"_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"repository":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"_npmVersion":"10.9.8","description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.76","cors":"^2.8.5","express":"^5.1.0","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/codexpro_0.28.4_1781736343217_0.5577224585356941","host":"s3://npm-registry-packages-npm-production"}},"0.28.5":{"name":"codexpro","version":"0.28.5","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok"],"license":"MIT","_id":"codexpro@0.28.5","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"homepage":"https://rebel0789.github.io/codexpro/","bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"dist":{"shasum":"c9e4c129ad9153e588b301103bf7806021fe51f9","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.28.5.tgz","fileCount":63,"integrity":"sha512-GVhN7qmQh4ZK/msD6j362O2MswPq1AgNEXjMLQmawfy8XDNk/IxUa/CVF2jlcpi9qqvHD5TtO8QMca4oQ2u0rQ==","signatures":[{"sig":"MEUCIQCN39BcFnlhsuoni0nQzIJXpEB4hLpGTN6SD5vV3gvVzwIgDkk4hrd6Z8sjiwBYnvBPJ2lBkYSX5K6medktcoy7TBU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":848702},"type":"module","engines":{"node":">=20"},"gitHead":"03556103b3dc6de2e67e6e64835a72363c3a71a1","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.mjs && node scripts/http-smoke.mjs && node scripts/pro-smoke.mjs && node scripts/doctor-smoke.mjs && node scripts/settings-smoke.mjs && node scripts/execute-handoff-smoke.mjs","start":"node dist/stdio.js","doctor":"node scripts/codexpro.mjs doctor","connect":"node scripts/codexpro.mjs","prepack":"npm run build","dev:http":"tsx src/http.ts","dev:stdio":"tsx src/stdio.ts","pro:apply":"node scripts/pro-apply.mjs","pro:bundle":"node scripts/pro-bundle.mjs","start:http":"node dist/http.js","start:stdio":"node dist/stdio.js","connect:local":"node scripts/codexpro.mjs --tunnel none","connect:ngrok":"node scripts/codexpro.mjs ngrok","connect:setup":"node scripts/codexpro.mjs setup","connect:stable":"node scripts/codexpro.mjs --tunnel cloudflare-named","connect:chatgpt":"node scripts/codexpro.mjs --tunnel cloudflare","connect:cloudflare":"node scripts/codexpro.mjs --tunnel cloudflare"},"_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"repository":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"_npmVersion":"10.9.8","description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.76","cors":"^2.8.5","express":"^5.1.0","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/codexpro_0.28.5_1782032444355_0.19187699464688723","host":"s3://npm-registry-packages-npm-production"}},"0.28.6":{"name":"codexpro","version":"0.28.6","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok","tailscale"],"license":"MIT","_id":"codexpro@0.28.6","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"homepage":"https://rebel0789.github.io/codexpro/","bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"dist":{"shasum":"b2f45ce702372c77bcc87cd348c4ff092c24b1cb","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.28.6.tgz","fileCount":64,"integrity":"sha512-nrrZbA3EOYBfwb54jS6NfXXFKRKP/QNh8tKB41V1uwfOdv3azUcTT6LzzxRTYSbn4tNCXUOQVV8zy5sd8INLCA==","signatures":[{"sig":"MEQCIHhOmVLptL1OPvjSXjPBTHjdsXkWae3qylKFQjSHzPgfAiAngY8F55JiTv/ffNB8hHDh14Scn8l8+GUnb9K0juiKsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1136473},"type":"module","engines":{"node":">=20"},"gitHead":"e0df47f1e3af8af0c94f617b004b0c6b8019279f","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.mjs && node scripts/http-smoke.mjs && node scripts/pro-smoke.mjs && node scripts/doctor-smoke.mjs && node scripts/settings-smoke.mjs && node scripts/execute-handoff-smoke.mjs","start":"node dist/stdio.js","doctor":"node scripts/codexpro.mjs doctor","stress":"npm run build && node scripts/stress.mjs","connect":"node scripts/codexpro.mjs","prepack":"npm run build","dev:http":"tsx src/http.ts","dev:stdio":"tsx src/stdio.ts","pro:apply":"node scripts/pro-apply.mjs","pro:bundle":"node scripts/pro-bundle.mjs","start:http":"node dist/http.js","start:stdio":"node dist/stdio.js","connect:local":"node scripts/codexpro.mjs --tunnel none","connect:ngrok":"node scripts/codexpro.mjs ngrok","connect:setup":"node scripts/codexpro.mjs setup","connect:stable":"node scripts/codexpro.mjs --tunnel cloudflare-named","connect:chatgpt":"node scripts/codexpro.mjs --tunnel cloudflare","connect:tailscale":"node scripts/codexpro.mjs tailscale","connect:cloudflare":"node scripts/codexpro.mjs --tunnel cloudflare"},"_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"repository":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"_npmVersion":"10.9.8","description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.76","cors":"^2.8.5","express":"^5.1.0","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/codexpro_0.28.6_1783540617738_0.9016677389747452","host":"s3://npm-registry-packages-npm-production"}},"0.29.0-beta.1":{"name":"codexpro","version":"0.29.0-beta.1","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok","tailscale"],"license":"MIT","_id":"codexpro@0.29.0-beta.1","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"homepage":"https://rebel0789.github.io/codexpro/","bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"dist":{"shasum":"2d38c8bc569e219f3144750c1287492c56bdc6d7","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.29.0-beta.1.tgz","fileCount":86,"integrity":"sha512-RAMgU/pOpIy6Z+52GdBWWLuH+VIBD7OZRkYTwkxg0aBCyjgKsUM7feN4hvQh+dUw3VxeMmDF560upf3RY0ZnFg==","signatures":[{"sig":"MEYCIQCmQ8S4JK9B85Do86u0NQB0EckUZnhfB/00jHl+Dq0SqgIhAKhSaIz3Pa3vA8HOEX9E/nY0d5jbf9B/MO7e6rF5P0LQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1279293},"type":"module","engines":{"node":">=20"},"gitHead":"3bda8bec64c7f40a6042b3a23c21be395de355b2","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/analysis-smoke.mjs && node scripts/analysis-cli-smoke.mjs && node scripts/smoke.mjs && node scripts/http-smoke.mjs && node scripts/pro-smoke.mjs && node scripts/doctor-smoke.mjs && node scripts/settings-smoke.mjs && node scripts/execute-handoff-smoke.mjs","start":"node dist/stdio.js","doctor":"node scripts/codexpro.mjs doctor","stress":"npm run build && node scripts/stress.mjs","connect":"node scripts/codexpro.mjs","prepack":"npm run build","dev:http":"tsx src/http.ts","dev:stdio":"tsx src/stdio.ts","pro:apply":"node scripts/pro-apply.mjs","pro:bundle":"node scripts/pro-bundle.mjs","start:http":"node dist/http.js","start:stdio":"node dist/stdio.js","connect:local":"node scripts/codexpro.mjs --tunnel none","connect:ngrok":"node scripts/codexpro.mjs ngrok","connect:setup":"node scripts/codexpro.mjs setup","analysis:smoke":"npm run build && node scripts/analysis-smoke.mjs","connect:stable":"node scripts/codexpro.mjs --tunnel cloudflare-named","connect:chatgpt":"node scripts/codexpro.mjs --tunnel cloudflare","connect:tailscale":"node scripts/codexpro.mjs tailscale","analysis:cli-smoke":"npm run build && node scripts/analysis-cli-smoke.mjs","connect:cloudflare":"node scripts/codexpro.mjs --tunnel cloudflare"},"_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"repository":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"_npmVersion":"10.9.8","description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.76","cors":"^2.8.5","express":"^5.1.0","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/codexpro_0.29.0-beta.1_1783773239947_0.1542486475985878","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"codexpro","version":"0.29.0","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok","tailscale"],"license":"MIT","_id":"codexpro@0.29.0","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"homepage":"https://rebel0789.github.io/codexpro/","bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"dist":{"shasum":"ab803f9e7e9d47be5a15e99b4eda866d9122c0d2","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.29.0.tgz","fileCount":95,"integrity":"sha512-p1mNbpauiw01MveyylXBx3kqaAA8eA2N0qyiO/ZqKaYbc5H6/1u1YuaLJzUfWF9wfP82dmUshR+mBYCL3mBY9A==","signatures":[{"sig":"MEYCIQC208DAKsva8HaqihawLHpfU1kIW0bM3eq2Fx8G5TG97wIhAMCabsiwyawwKpph1ek/Om2It6rCiqHh/C6s86k/8qEW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3433741},"type":"module","engines":{"node":">=20"},"gitHead":"ce6386b63fecd26bc76e440a6f7b1822e46d1f8f","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/analysis-smoke.mjs && node scripts/analysis-cli-smoke.mjs && node scripts/smoke.mjs && node scripts/http-smoke.mjs && node scripts/widget-smoke.mjs && node scripts/pro-smoke.mjs && node scripts/doctor-smoke.mjs && node scripts/settings-smoke.mjs && node scripts/execute-handoff-smoke.mjs && node scripts/release-guard-smoke.mjs","start":"node dist/stdio.js","doctor":"node scripts/codexpro.mjs doctor","stress":"npm run build && node scripts/stress.mjs","connect":"node scripts/codexpro.mjs","prepack":"npm run build","dev:http":"tsx src/http.ts","dev:stdio":"tsx src/stdio.ts","pro:apply":"node scripts/pro-apply.mjs","pro:bundle":"node scripts/pro-bundle.mjs","start:http":"node dist/http.js","start:stdio":"node dist/stdio.js","release:pack":"node scripts/release-pack.mjs","connect:local":"node scripts/codexpro.mjs --tunnel none","connect:ngrok":"node scripts/codexpro.mjs ngrok","connect:setup":"node scripts/codexpro.mjs setup","release:check":"npm run release:guard && npm run build && npm run smoke && npm run stress && npm audit --audit-level=high && npm run release:pack","release:guard":"node scripts/release-guard.mjs","analysis:smoke":"npm run build && node scripts/analysis-smoke.mjs","connect:stable":"node scripts/codexpro.mjs --tunnel cloudflare-named","prepublishOnly":"node scripts/release-guard.mjs","connect:chatgpt":"node scripts/codexpro.mjs --tunnel cloudflare","release:publish":"node scripts/release-publish.mjs","connect:tailscale":"node scripts/codexpro.mjs tailscale","analysis:cli-smoke":"npm run build && node scripts/analysis-cli-smoke.mjs","connect:cloudflare":"node scripts/codexpro.mjs --tunnel cloudflare"},"_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"repository":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"_npmVersion":"10.9.8","description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.76","cors":"^2.8.5","express":"^5.1.0","minimatch":"^10.0.1","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/codexpro_0.29.0_1783963093389_0.5203362783646612","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"codexpro","version":"0.30.0","description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/rebel0789/codexpro.git"},"bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"homepage":"https://rebel0789.github.io/codexpro/","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok","tailscale"],"engines":{"node":">=20"},"publishConfig":{"access":"public"},"bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"scripts":{"build":"tsc -p tsconfig.json","prepack":"npm run build","prepublishOnly":"node scripts/release-guard.mjs","start":"node dist/stdio.js","start:stdio":"node dist/stdio.js","start:http":"node dist/http.js","dev:stdio":"tsx src/stdio.ts","dev:http":"tsx src/http.ts","smoke":"node scripts/analysis-smoke.mjs && node scripts/analysis-cli-smoke.mjs && node scripts/smoke.mjs && node scripts/skill-precedence-smoke.mjs && node scripts/import-smoke.mjs && node scripts/http-smoke.mjs && node scripts/widget-smoke.mjs && node scripts/pro-smoke.mjs && node scripts/doctor-smoke.mjs && node scripts/settings-smoke.mjs && node scripts/execute-handoff-smoke.mjs && node scripts/release-guard-smoke.mjs","stress":"npm run build && node scripts/stress.mjs","analysis:smoke":"npm run build && node scripts/analysis-smoke.mjs","analysis:cli-smoke":"npm run build && node scripts/analysis-cli-smoke.mjs","doctor":"node scripts/codexpro.mjs doctor","connect":"node scripts/codexpro.mjs","connect:setup":"node scripts/codexpro.mjs setup","connect:local":"node scripts/codexpro.mjs --tunnel none","connect:cloudflare":"node scripts/codexpro.mjs --tunnel cloudflare","connect:chatgpt":"node scripts/codexpro.mjs --tunnel cloudflare","connect:stable":"node scripts/codexpro.mjs --tunnel cloudflare-named","connect:ngrok":"node scripts/codexpro.mjs ngrok","connect:tailscale":"node scripts/codexpro.mjs tailscale","pro:bundle":"node scripts/pro-bundle.mjs","pro:apply":"node scripts/pro-apply.mjs","release:guard":"node scripts/release-guard.mjs","release:pack":"node scripts/release-pack.mjs","release:check":"npm run release:guard && npm run build && npm run smoke && npm run stress && npm audit --audit-level=high && npm run release:pack","release:publish":"node scripts/release-publish.mjs"},"dependencies":{"@modelcontextprotocol/sdk":"^1.17.4","cors":"^2.8.5","express":"^5.1.0","minimatch":"^10.0.1","zod":"^3.25.76"},"devDependencies":{"@types/cors":"^2.8.19","@types/express":"^5.0.3","@types/node":"^24.0.0","tsx":"^4.20.3","typescript":"^5.8.3"},"_id":"codexpro@0.30.0","gitHead":"bdb7241607d919e1b176666ff1e938412ee27970","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-7Dqri1TqXVM6cZRe2BaCfedrCCbXIc/UxBzf8PGzEP0cRI5K+MIPYP10PfAJ44o/Pyzb4fsjM2EzVC4K/g8h5g==","shasum":"9cf1a07653fc5bd82180b71b589a860a578e426c","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.30.0.tgz","fileCount":100,"unpackedSize":3601592,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHh7msbQP16IqbPM3mfy/Z7+Ut9Nruypib3CKe9CIYq0AiB0dOMO0+1U6u2OkWhHLb4Klcv+zqEil9vU6rRNwZ19fQ=="}]},"_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"directories":{},"maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codexpro_0.30.0_1786187894162_0.23784413040885988"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-16T21:32:47.425Z","modified":"2026-08-08T11:18:14.559Z","0.27.0":"2026-06-16T21:32:47.726Z","0.27.1":"2026-06-16T23:05:18.338Z","0.28.0":"2026-06-17T13:53:02.686Z","0.28.4":"2026-06-17T22:45:43.392Z","0.28.5":"2026-06-21T09:00:44.548Z","0.28.6":"2026-07-08T19:56:57.929Z","0.29.0-beta.1":"2026-07-11T12:34:00.090Z","0.29.0":"2026-07-13T17:18:13.612Z","0.30.0":"2026-08-08T11:18:14.411Z"},"bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"license":"MIT","homepage":"https://rebel0789.github.io/codexpro/","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok","tailscale"],"repository":{"type":"git","url":"git+https://github.com/rebel0789/codexpro.git"},"description":"A local MCP/App SDK-style connector that lets ChatGPT inspect, edit, and hand off work to Codex inside a local dev workspace.","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"readme":"<p align=\"center\">\n  <img src=\"docs/favicon.svg\" width=\"72\" height=\"72\" alt=\"CodexPro logo\">\n</p>\n\n<h1 align=\"center\">CodexPro</h1>\n\n<p align=\"center\">\n  Local coding tools for ChatGPT, scoped to explicitly allowed projects.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/codexpro\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/codexpro?style=flat-square\"></a>\n  <a href=\"https://github.com/rebel0789/codexpro/actions\"><img alt=\"CI\" src=\"https://img.shields.io/github/actions/workflow/status/rebel0789/codexpro/ci.yml?branch=main&style=flat-square\"></a>\n  <a href=\"https://github.com/rebel0789/codexpro/blob/main/LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/github/license/rebel0789/codexpro?style=flat-square\"></a>\n  <a href=\"https://rebel0789.github.io/codexpro/\"><img alt=\"Website\" src=\"https://img.shields.io/badge/site-GitHub%20Pages-67e8f9?style=flat-square\"></a>\n</p>\n\n## Install\n\nRequirements:\n\n- Node.js 20+\n- A ChatGPT account with Apps / Developer Mode access\n- One HTTPS route to your local machine when connecting ChatGPT from the web\n\nInstall the CLI:\n\n```bash\nnpm install -g codexpro\n```\n\nRun setup inside the repo you want ChatGPT to work on:\n\n```bash\ncd /path/to/your/repo\ncodexpro setup\n```\n\nCodexPro prints and copies the Server URL. In ChatGPT, open:\n\n```text\nSettings -> Security and login -> Developer mode: on\nSettings -> Plugins -> Plugins tab -> + (beside Search plugins)\n```\n\nThis opens **New Plugin**. Give it a name such as `CodexPro`, paste the Server URL in the **Server URL** connection option, then choose `Authentication: No Authentication / None`. The form may initially show OAuth; change it before creating the plugin. CodexPro uses its own URL token.\n\n### Current Plugins UI\n\n| Open Plugins and click `+` | Complete the New Plugin form |\n| --- | --- |\n| ![Open Plugins and click the plus button](docs/images/chatgpt-plugins-add.png) | ![Complete the New Plugin form](docs/images/chatgpt-plugin-details.png) |\n\nDaily use from the same repo:\n\n```bash\ncodexpro start\n```\n\n## What It Does\n\nCodexPro starts a local MCP server for the current workspace. ChatGPT can then:\n\n- read files and inspect the repo\n- search code\n- make scoped edits with `write`, `edit`, or guarded `apply_patch`\n- import ChatGPT Apps SDK attachments with `import_file` in workspace write mode\n- run safe verification commands through `bash`\n- review changed files with `show_changes`\n- write handoff plans under `.ai-bridge`\n- export a selected context bundle for model surfaces that cannot call tools\n\nCodexPro is not a hosted service, model proxy, quota bypass, account pool, or OS sandbox.\nIt connects your own ChatGPT session to your own local repo through the official Developer Mode / MCP app path.\n\n## Multiple Projects\n\nKeep one launch project and explicitly allow additional projects:\n\n```bash\ncodexpro settings set --project ~/code/web --project ~/code/api\ncodexpro start\n```\n\n`open_workspace` selects an allowed project for the current MCP session. After that, tools can omit `workspace_id` and operate on the selected project. `open_current_workspace` returns the session to the launch project.\n\nSelections are session-local, so one MCP session switching projects does not change another session. Whether separate ChatGPT conversations receive separate MCP sessions is controlled by the client. Keep using separate CodexPro processes when you need guaranteed process isolation, different permissions, or different public endpoints.\n\nOnly the launch project and projects explicitly added with `--project` can be opened. Remove saved additional projects with:\n\n```bash\ncodexpro settings set --clear-projects\n```\n\n## Relaunch Coding Experience\n\n- `view_image` sends PNG, JPEG, GIF, and WebP files as native MCP image content, so ChatGPT can inspect screenshots and visual assets without a separate upload.\n- `read` returns a SHA-256. Pass it as `expected_sha256` to `write` or `edit` when multiple sessions may touch the same file. A stale edit fails instead of silently overwriting newer work.\n- New files use same-directory atomic replacement. Existing files are updated in place so ownership, ACLs, extended attributes, and hard links remain attached; a machine or process crash during that write can leave partial content.\n- `codexpro start --headless` runs without prompts, clipboard access, browser opening, or terminal controls. It prints one `CODEXPRO_READY` line, publishes the supervised runtime PID in local status, cleans up on signals, and exits nonzero if the HTTP runtime dies unexpectedly.\n\n## Repository Analysis\n\nCodexPro builds a bounded repository map from local manifests, source declarations, imports, tests, and Git state. It provides:\n\n- `inspect_workspace` for languages, project types, entrypoints, areas, symbols, and relationships\n- optional structured `search` intents: `text`, `symbol`, `references`, and `impact`\n- affected-area, risk, related-test, and focused-command recommendations in `show_changes`\n- matching read-only terminal views:\n\n```bash\ncodexpro inspect --root /path/to/repo\ncodexpro review --root /path/to/repo\ncodexpro inspect --root /path/to/repo --json\n```\n\nThe analysis is deterministic and local. It uses confidence labels instead of claiming compiler precision, stays within configured file/byte/symbol limits, and falls back to normal lexical search and Git review when analysis is incomplete.\n\nSet `CODEXPRO_ANALYSIS=0` to disable repository analysis without changing the rest of the connector.\n\n## Normal Commands\n\n```bash\ncodexpro setup\ncodexpro start\ncodexpro start --root /path/to/repo\ncodexpro doctor\ncodexpro connection-test --root /path/to/repo\ncodexpro settings\ncodexpro inspect\ncodexpro review\n```\n\nUseful modes:\n\n```bash\ncodexpro start --no-bash\ncodexpro start --tool-mode minimal\ncodexpro start --tool-mode full\ncodexpro start --mode handoff\ncodexpro start --mode pro\n```\n\nIf ChatGPT cannot create the plugin, run `codexpro connection-test`. It keeps\nthe normal read, tree, search, and skill tools, disables writes, bash, and tool\ncards, and logs whether a request reached the local MCP endpoint.\n\nTool cards are opt in:\n\n```bash\nCODEXPRO_TOOL_CARDS=1 codexpro start\n```\n\nThe v10 cards cover selected workspace, analysis, change, Git, handoff, and\nterminal results. Reads and searches stay in normal chat output. After updating\nthe connector, refresh its ChatGPT plugin connection once so it loads the new\nwidget resource.\n\n## Public URL Options\n\nChatGPT web needs a public HTTPS Server URL. CodexPro supports:\n\n- Fast demo URL: `codexpro start --tunnel cloudflare`\n- Stable ngrok domain: `codexpro ngrok --hostname your-domain.ngrok-free.dev`\n- Stable Cloudflare route: `codexpro stable --hostname codexpro.example.com --tunnel-name codexpro`\n- Tailscale Funnel: `codexpro tailscale --hostname your-device.your-tailnet.ts.net`\n- Local only: `codexpro start --tunnel none`\n\nCloudflare quick tunnels honor `HTTPS_PROXY`, `ALL_PROXY`, or `HTTP_PROXY` when those env vars are set.\n\nStable modes should use a stable CodexPro token:\n\n```bash\nmkdir -p ~/.codexpro\nopenssl rand -hex 32 > ~/.codexpro/http-token\nchmod 600 ~/.codexpro/http-token\n\ncodexpro tailscale \\\n  --hostname your-device.your-tailnet.ts.net \\\n  --token-file ~/.codexpro/http-token\n```\n\nTailscale Funnel must already be allowed for your tailnet. It requires MagicDNS, HTTPS certificates, and Funnel policy support. CodexPro runs:\n\n```bash\ntailscale funnel http://127.0.0.1:8787\n```\n\nThen ChatGPT uses:\n\n```text\nhttps://your-device.your-tailnet.ts.net/mcp?codexpro_token=keep-this-token-stable\n```\n\nThe URL token is a personal-use compatibility fallback for connector forms that cannot set\nheaders. Prefer `Authorization: Bearer <token>` when the MCP client supports\ncustom headers. Shared or multi-user production deployments require OAuth or\nheader authentication. CodexPro requires at least 24 token bytes, removes token\nparameters from the local browser address after onboarding, and sends\nno-store/no-referrer headers. Never share or commit the connector URL.\n\n## Safety Defaults\n\n- Public tunnel mode requires a CodexPro HTTP token.\n- HTTP tokens shorter than 24 bytes are rejected and failed guesses are rate-limited per client address.\n- Generic writes are hidden unless `CODEXPRO_WRITE_MODE=workspace`.\n- Safe bash blocks broad shell patterns and secret/build/cache paths.\n- `apply_patch` is workspace-scoped and rejects blocked paths, symlink patches, and secret-looking patch content.\n- `show_changes` keeps a review checkpoint so repeated unchanged reviews collapse.\n- Tool-card metadata is off unless `CODEXPRO_TOOL_CARDS=1`.\n\nRead [SECURITY.md](SECURITY.md) before exposing CodexPro through any tunnel.\n\n## RAM And ChatGPT Memory\n\nCodexPro can reduce what it sends to ChatGPT. Current local fixes:\n\n- binary-file checks scan with a reusable 64 KiB buffer instead of allocating the whole file\n- ChatGPT tool-card structured payloads are compacted only for card output, not for normal tool data\n- bash chat transcripts stay compact by default\n\nThat helps avoid oversized MCP/card payloads. It does not force Chrome, ChatGPT, or an old browser iframe to release memory that the client already holds. If the browser tab has already grown, reload the ChatGPT page or restart the browser.\n\n## Repo Context\n\nCodexPro uses explicit files, not hidden chat memory:\n\n```text\nAGENTS.md\n.ai-bridge/current-plan.md\n.ai-bridge/agent-status.md\n.ai-bridge/decisions.md\n.ai-bridge/open-questions.md\n.ai-bridge/execution-log.jsonl\n```\n\nFor non-tool model surfaces:\n\n```bash\ncodexpro start --mode pro\n```\n\nOr from a local checkout:\n\n```bash\ncodexpro pro-bundle --root /path/to/repo --copy\ncodexpro pro-apply --root /path/to/repo --file plan.md\n```\n\n## Handoff\n\nChatGPT can write a plan without executing a local agent:\n\n```bash\ncodexpro start --mode handoff\n```\n\nThen you run execution locally:\n\n```bash\ncodexpro execute-handoff --agent codex --yes\ncodexpro watch-handoff --agent codex --yes\n```\n\n`handoff_to_agent` is planning-only over MCP. CodexPro does not expose arbitrary local agent execution as a remote ChatGPT tool.\n\n## Troubleshooting\n\nRun:\n\n```bash\ncodexpro doctor\n```\n\nCommon fixes:\n\n- Quick tunnel URL changed: rerun `codexpro start` and update the ChatGPT app Server URL.\n- Stable URL does not respond: check the tunnel provider first, then the CodexPro token.\n- ChatGPT cannot call tools in one model/chat: switch to a ChatGPT surface that supports Developer Mode app actions.\n- Local port is busy: start another repo with `--port 8788`.\n- Tool list looks stale: create a new ChatGPT app entry or change the connector URL token.\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm run smoke\nnpm run stress\n```\n\nUseful release checks:\n\n```bash\nnpm run release:check\ngit diff --check\n```\n\nRelease only from the CodexPro project root. Do not use `npm --prefix` with\n`npm pack` or `npm publish`: npm packs the current directory in that case.\nThe release scripts verify the root, package identity, canonical repository,\nand tarball before publishing:\n\n```bash\ncd /path/to/codexpro\nnpm run release:publish\n```\n\n## Docs\n\n- [Website](https://rebel0789.github.io/codexpro/)\n- [FAQ](FAQ.md)\n- [Security](SECURITY.md)\n- [Stable URL guide](DOMAIN_SETUP.md)\n- [Changelog](CHANGELOG.md)\n","readmeFilename":"README.md"}