{"_id":"codexpro","_rev":"11-095a46abb70073f7358dc7d89aa28222","name":"codexpro","dist-tags":{"beta":"0.29.0-beta.1","latest":"0.30.2"},"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","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok","tailscale"],"license":"MIT","_id":"codexpro@0.30.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":"9cf1a07653fc5bd82180b71b589a860a578e426c","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.30.0.tgz","fileCount":100,"integrity":"sha512-7Dqri1TqXVM6cZRe2BaCfedrCCbXIc/UxBzf8PGzEP0cRI5K+MIPYP10PfAJ44o/Pyzb4fsjM2EzVC4K/g8h5g==","signatures":[{"sig":"MEQCIHh7msbQP16IqbPM3mfy/Z7+Ut9Nruypib3CKe9CIYq0AiB0dOMO0+1U6u2OkWhHLb4Klcv+zqEil9vU6rRNwZ19fQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3601592},"type":"module","engines":{"node":">=20"},"gitHead":"bdb7241607d919e1b176666ff1e938412ee27970","scripts":{"build":"tsc -p tsconfig.json","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","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.30.0_1786187894162_0.23784413040885988","host":"s3://npm-registry-packages-npm-production"}},"0.30.1":{"name":"codexpro","version":"0.30.1","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok","tailscale"],"license":"MIT","_id":"codexpro@0.30.1","maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"contributors":[{"url":"https://github.com/yuczzzzz","name":"yuczzzzz"}],"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":"70b1b8dd25a41de65e968f351893a0aa7a5d5f1a","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.30.1.tgz","fileCount":104,"integrity":"sha512-LxLb5vkadkYGa2dh6by75oCXpE/w0Ij94kzzIUoyzvruC8AHO4BL5pOwIEZ7a7NXG+7PPtE+y/KbqyNNyDNXdg==","signatures":[{"sig":"MEYCIQCHNKRc9k6ukr4Jv9yUB4UTRX15C1WvaQ2C1cZh8pMqGAIhAOa+CigUGYdI4uGRZav9TMgK2QP0OszPsy8dphnvuj6l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCGgg+bLcOfW4i5Ux4mBaEk1sZiv2hyenG9XuUyUxZmwwIgbrjUz7qv7bzXxRhk6Ndhr12SBqB1PnJqJVNmn3kDtME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3734306},"type":"module","engines":{"node":">=20"},"gitHead":"43480d12976fec0d6772d271f14b2668a4cc24f4","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/analysis-smoke.mjs && node scripts/analysis-cli-smoke.mjs && node scripts/bash-encoding-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","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":"11.12.1","description":"Local MCP server that connects ChatGPT Plugins to explicitly allowed repos on your machine.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.25.76","chardet":"^2.2.0","express":"^5.1.0","minimatch":"^10.0.1","iconv-lite":"^0.7.3","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/codexpro_0.30.1_1789914103136_0.1656878536766131","host":"s3://npm-registry-packages-npm-production"}},"0.30.2":{"_id":"codexpro@0.30.2","bin":{"codexpro":"scripts/codexpro.mjs","codexpro-mcp":"dist/stdio.js","codexpro-mcp-http":"dist/http.js"},"bugs":{"url":"https://github.com/rebel0789/codexpro/issues"},"dist":{"shasum":"56d68754a4b8fe47cd9f3c113ae1b75a10664633","tarball":"https://registry.npmjs.org/codexpro/-/codexpro-0.30.2.tgz","fileCount":108,"integrity":"sha512-imkaz1JlH2oRLGHaDM+RXmXdnobLnZS24OtynD2hWTlbU92GptgTPvLR/PT1IST9HL2R5nX+OwUgKOlHEg3K/g==","signatures":[{"sig":"MEUCIGQc7irvwIprQ4dZQbkcwrUKqC0/h8J+IjQIFCnXKExnAiEA38aU2ugMriMkg+B9qou/4igBphfhFGpxr31HEi5OeH4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFVsZhsCuH7Rf7YQU6wbmsvt742AuaSq0+sTSh2bZah5AiBTX8bm6+9LLNsFlqyXI8P2ttACa0guTCx2w+vebjuOWA=="}],"unpackedSize":3744157},"name":"codexpro","type":"module","engines":{"node":">=20"},"gitHead":"482d0035e0c08cceb5916958df652b325b4c52d8","license":"MIT","scripts":{"build":"tsc -p tsconfig.json","smoke":"node scripts/analysis-smoke.mjs && node scripts/analysis-cli-smoke.mjs && node scripts/bash-encoding-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","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","package:smoke":"node scripts/package-install-smoke.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 && npm run package:smoke","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"},"version":"0.30.2","_npmUser":{"name":"rebel0x","email":"janvarma@proton.me"},"homepage":"https://rebel0789.github.io/codexpro/","keywords":["mcp","chatgpt","codex","apps-sdk","codexpro","local-development","cloudflare-tunnel","ngrok","tailscale"],"repository":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"_npmVersion":"11.12.1","description":"Local MCP server that connects ChatGPT Plugins to explicitly allowed repos on your machine.","directories":{},"maintainers":[{"name":"rebel0x","email":"janvarma@proton.me"}],"_nodeVersion":"25.9.0","contributors":[{"url":"https://github.com/yuczzzzz","name":"yuczzzzz"}],"dependencies":{"zod":"^3.25.76","chardet":"^2.2.0","express":"^5.1.0","minimatch":"^10.0.1","iconv-lite":"^0.7.3","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","typescript":"^5.8.3","@types/node":"^24.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codexpro_0.30.2_1789916656130_0.2723369530496409"}}},"time":{"created":"2026-06-16T21:32:47.425Z","modified":"2026-09-20T15:04:16.464Z","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","0.30.1":"2026-09-20T14:21:43.286Z","0.30.2":"2026-09-20T15:04:16.321Z"},"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":{"url":"git+https://github.com/rebel0789/codexpro.git","type":"git"},"description":"Local MCP server that connects ChatGPT Plugins to explicitly allowed repos on your machine.","contributors":[{"url":"https://github.com/yuczzzzz","name":"yuczzzzz"}],"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  Give ChatGPT local coding tools for repos you explicitly allow.\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## What it is\n\nCodexPro is a local MCP server. It connects **your ChatGPT session** to **your machine** and **repos you allow**.\n\nChatGPT can read, search, edit, review, verify, import attachments, and write handoff plans. It stays inside those roots.\n\nIt is not a hosted SaaS product, model proxy, quota bypass, account pool, or remote shell service.\n\n## Install\n\nNeeds:\n\n- Node.js 20+\n- A ChatGPT account that can create custom MCP plugins\n- An HTTPS URL to your machine for ChatGPT web (tunnel or Tailscale Funnel)\n\n```bash\nnpm install -g codexpro\ncd /path/to/your/repo\ncodexpro setup\n```\n\n## Connect in ChatGPT\n\n1. `Settings -> Security and login` → turn **Developer mode** on (keep CSP enforcement on).\n2. `Settings -> Plugins` → Plugins tab → **+** beside Search plugins.\n3. Create a plugin named `CodexPro`.\n4. Connection: **Server URL** → paste the URL CodexPro copied.\n5. Authentication: **No Authentication / None** (change this if the form defaults to OAuth).\n\nCodexPro auth is the token already in that URL. Do not share the URL.\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\nIf plugin creation fails, run `codexpro connection-test` and check whether ChatGPT requests reach the local server.\n\n## What ChatGPT can do\n\nWith workspace write mode (the normal agent setup):\n\n- read, search, and inspect the repo with bounded code intelligence\n- edit with `write`, `edit`, or guarded `apply_patch`\n- import ChatGPT attachments with `import_file`\n- run allowlisted checks with `bash`\n- review diffs and likely impact with `show_changes`\n- write plans under `.ai-bridge`\n- export a context bundle for chats that cannot call tools\n\n### Built-in repository intelligence\n\nCodexPro does more than raw file search:\n\n- `inspect_workspace` maps languages, project types, entrypoints, areas, symbols, and internal relationships.\n- `search` supports targeted `symbol`, `references`, and `impact` intents as well as ordinary text and regex search.\n- `show_changes` identifies affected areas, likely dependents, related tests, risk signals, and relevant verification commands.\n- TypeScript/JavaScript, Python, Go, Rust, Swift, Java, C#, C, and C++ declarations are recognized. Other languages retain safe inventory and lexical search.\n\nAnalysis is local, bounded, and cached by a workspace fingerprint. It needs no model API key, language-server daemon, embedding service, or vector database. Coverage and inference strength are reported instead of presented as certainty.\n\n### Product focus\n\nCodexPro is optimized for a narrow loop: connect ChatGPT to explicitly allowed local repositories, make a reviewable change, verify it, and preserve a handoff record. The project prioritizes:\n\n- explicit workspace boundaries and separate controls for reads, writes, commands, sessions, and handoffs\n- useful code navigation without sending a repository to a separate indexing service\n- cross-platform installation and release checks on supported Node.js versions\n- compact, bounded tool results that remain usable in long ChatGPT sessions\n\nSee the [roadmap](ROADMAP.md) for the next reliability, code-navigation, and workflow improvements.\n\n## Multiple projects\n\nOne CodexPro process can allow more than one repo:\n\n```bash\ncodexpro settings set --project ~/code/web --project ~/code/api\ncodexpro settings show\ncodexpro start\n```\n\nAsk ChatGPT to `open_workspace` on an allowed project. `open_current_workspace` returns to the launch repo.\n\nFor two ChatGPT accounts or hard isolation, run two CodexPro processes on different ports and Server URLs.\n\n## Commands\n\n```bash\ncodexpro setup\ncodexpro start\ncodexpro start --root /path/to/repo\ncodexpro doctor\ncodexpro connection-test\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\ncodexpro start --headless\n```\n\nOpt-in tool cards:\n\n```bash\nCODEXPRO_TOOL_CARDS=1 codexpro start\n```\n\n## Public HTTPS options\n\nChatGPT web needs HTTPS:\n\n```bash\ncodexpro start --tunnel cloudflare          # quick demo URL (changes)\ncodexpro ngrok --hostname your.ngrok-free.dev\ncodexpro stable --hostname codexpro.example.com --tunnel-name codexpro\ncodexpro tailscale --hostname your-device.your-tailnet.ts.net\ncodexpro start --tunnel none                # local only\n```\n\nKeep a stable token for stable hostnames:\n\n```bash\nmkdir -p ~/.codexpro\nopenssl rand -hex 32 > ~/.codexpro/http-token\nchmod 600 ~/.codexpro/http-token\n```\n\nPrefer `Authorization: Bearer <token>` when the client supports headers. The `?codexpro_token=` query form is a personal compatibility fallback.\n\n## Safety defaults\n\n- Public tunnels require a CodexPro HTTP token (min 24 bytes)\n- Writes stay hidden unless write mode is `workspace`\n- Safe bash is the default\n- Blocked paths cover `.env`, keys, `.git`, build caches, and similar\n- Attachment import only accepts ChatGPT Apps SDK file objects from approved HTTPS hosts\n\nRead [SECURITY.md](SECURITY.md) before exposing a tunnel.\n\n## Update\n\n```bash\nnpm install -g codexpro@latest\ncodexpro --version\n```\n\nRestart `codexpro start` after updating. Saved profiles under `~/.codexpro` stay in place.\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm run smoke\nnpm run stress\nnpm run package:smoke\nnpm run release:check\n```\n\nPublish only from the CodexPro root:\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- [Roadmap](ROADMAP.md)\n- [Stable URL guide](DOMAIN_SETUP.md)\n- [Changelog](CHANGELOG.md)\n- [Contributors](CONTRIBUTORS.md)\n","readmeFilename":"README.md"}