@tarunspandit/codexflow 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/AGENTS.example.md +18 -0
  2. package/CHANGELOG.md +311 -0
  3. package/CHATGPT_PROMPT.md +12 -0
  4. package/CODEX_PROMPT.md +12 -0
  5. package/CONTRIBUTING.md +51 -0
  6. package/DOMAIN_SETUP.md +241 -0
  7. package/FAQ.md +327 -0
  8. package/FAQ_ZH.md +279 -0
  9. package/LICENSE +21 -0
  10. package/NOTICE +9 -0
  11. package/PUBLIC_LAUNCH_CHECKLIST.md +111 -0
  12. package/README.md +287 -0
  13. package/README_ZH.md +461 -0
  14. package/SECURITY.md +145 -0
  15. package/config.example.env +31 -0
  16. package/dist/analysis/cache.js +27 -0
  17. package/dist/analysis/cache.js.map +1 -0
  18. package/dist/analysis/classify.js +102 -0
  19. package/dist/analysis/classify.js.map +1 -0
  20. package/dist/analysis/extract.js +139 -0
  21. package/dist/analysis/extract.js.map +1 -0
  22. package/dist/analysis/graph.js +22 -0
  23. package/dist/analysis/graph.js.map +1 -0
  24. package/dist/analysis/impact.js +167 -0
  25. package/dist/analysis/impact.js.map +1 -0
  26. package/dist/analysis/index.js +215 -0
  27. package/dist/analysis/index.js.map +1 -0
  28. package/dist/analysis/inventory.js +51 -0
  29. package/dist/analysis/inventory.js.map +1 -0
  30. package/dist/analysis/providers.js +24 -0
  31. package/dist/analysis/providers.js.map +1 -0
  32. package/dist/analysis/rank.js +27 -0
  33. package/dist/analysis/rank.js.map +1 -0
  34. package/dist/analysis/types.js +8 -0
  35. package/dist/analysis/types.js.map +1 -0
  36. package/dist/bashOps.js +233 -0
  37. package/dist/bashOps.js.map +1 -0
  38. package/dist/capabilitiesOps.js +365 -0
  39. package/dist/capabilitiesOps.js.map +1 -0
  40. package/dist/codexSessions.js +379 -0
  41. package/dist/codexSessions.js.map +1 -0
  42. package/dist/config.js +289 -0
  43. package/dist/config.js.map +1 -0
  44. package/dist/fsOps.js +286 -0
  45. package/dist/fsOps.js.map +1 -0
  46. package/dist/gitOps.js +79 -0
  47. package/dist/gitOps.js.map +1 -0
  48. package/dist/guard.js +198 -0
  49. package/dist/guard.js.map +1 -0
  50. package/dist/http.js +1671 -0
  51. package/dist/http.js.map +1 -0
  52. package/dist/proContext.js +274 -0
  53. package/dist/proContext.js.map +1 -0
  54. package/dist/profileStore.js +89 -0
  55. package/dist/profileStore.js.map +1 -0
  56. package/dist/projectCatalog.js +134 -0
  57. package/dist/projectCatalog.js.map +1 -0
  58. package/dist/redact.js +73 -0
  59. package/dist/redact.js.map +1 -0
  60. package/dist/searchOps.js +186 -0
  61. package/dist/searchOps.js.map +1 -0
  62. package/dist/server.js +2502 -0
  63. package/dist/server.js.map +1 -0
  64. package/dist/stdio.js +36 -0
  65. package/dist/stdio.js.map +1 -0
  66. package/dist/toolCardWidget.js +1155 -0
  67. package/dist/toolCardWidget.js.map +1 -0
  68. package/dist/workspaceOps.js +229 -0
  69. package/dist/workspaceOps.js.map +1 -0
  70. package/docs/.nojekyll +1 -0
  71. package/docs/favicon.svg +5 -0
  72. package/docs/index.html +638 -0
  73. package/docs/og.png +0 -0
  74. package/docs/script.js +80 -0
  75. package/docs/star.svg +11 -0
  76. package/docs/styles.css +1229 -0
  77. package/docs/zh.html +436 -0
  78. package/package.json +94 -0
  79. package/scripts/analysis-cli-smoke.mjs +81 -0
  80. package/scripts/analysis-smoke.mjs +179 -0
  81. package/scripts/clean.mjs +6 -0
  82. package/scripts/cli-smoke.mjs +168 -0
  83. package/scripts/codexflow.mjs +4375 -0
  84. package/scripts/doctor-smoke.mjs +90 -0
  85. package/scripts/execute-handoff-smoke.mjs +1110 -0
  86. package/scripts/http-smoke.mjs +812 -0
  87. package/scripts/pro-apply.mjs +141 -0
  88. package/scripts/pro-bundle.mjs +121 -0
  89. package/scripts/pro-smoke.mjs +95 -0
  90. package/scripts/settings-smoke.mjs +756 -0
  91. package/scripts/smoke.mjs +1194 -0
  92. package/scripts/stress.mjs +835 -0
@@ -0,0 +1,638 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>CodexFlow — One command. Every project. Any chat.</title>
7
+ <meta
8
+ name="description"
9
+ content="CodexFlow gives ChatGPT Codex-style access to synchronized local projects through one MCP broker and tunnel, with per-chat project routing, skills, files, git, and terminal tools."
10
+ />
11
+ <meta property="og:title" content="CodexFlow" />
12
+ <meta property="og:description" content="Use ChatGPT like a local coding agent across synchronized projects through one token-protected broker." />
13
+ <meta property="og:image" content="https://raw.githubusercontent.com/tarunspandit/codexflow/main/docs/og.png" />
14
+ <meta name="theme-color" content="#080a0c" />
15
+ <link rel="alternate" hreflang="zh-CN" href="./zh.html" />
16
+ <link rel="icon" href="./favicon.svg" type="image/svg+xml" />
17
+ <link rel="stylesheet" href="./styles.css?v=2" />
18
+ </head>
19
+ <body>
20
+ <a class="skip-link" href="#quickstart">Skip to start</a>
21
+ <header class="site-header">
22
+ <a class="brand" href="#top" aria-label="CodexFlow home">
23
+ <img class="brand-mark" src="./favicon.svg" width="34" height="34" alt="" aria-hidden="true" />
24
+ <span>CodexFlow</span>
25
+ </a>
26
+ <nav aria-label="Primary navigation">
27
+ <a href="#quickstart">Start</a>
28
+ <a href="#modes">Modes</a>
29
+ <a href="#reference">Tools</a>
30
+ <a href="#faq">FAQ</a>
31
+ <a href="#stop">Stop</a>
32
+ <a href="./zh.html">中文</a>
33
+ <a class="nav-star" href="https://github.com/tarunspandit/codexflow"><img src="./star.svg" alt="" aria-hidden="true" />Star on GitHub</a>
34
+ </nav>
35
+ </header>
36
+
37
+ <main id="top">
38
+ <section class="hero">
39
+ <div class="hero-copy">
40
+ <p class="launch-pill"><img src="./star.svg" alt="" aria-hidden="true" />Local-first coding infrastructure</p>
41
+ <p class="eyebrow">One broker · every local project · independent chats</p>
42
+ <h1>One command. Every project. <em>Any chat.</em></h1>
43
+ <p class="hero-lede">
44
+ Turn ChatGPT on the web into a project-aware coding agent for your local machine. One broker discovers your projects, one tunnel connects them, and every conversation keeps its own workspace—without invoking the Codex CLI.
45
+ </p>
46
+ <div class="install-line" role="group" aria-label="Install command">
47
+ <code>npm install -g @tarunspandit/codexflow
48
+ codexflow</code>
49
+ <button class="copy-button" data-copy="npm install -g @tarunspandit/codexflow&#10;codexflow">Copy</button>
50
+ </div>
51
+ <p class="eyebrow">Independent open-source project; not affiliated with or endorsed by OpenAI.</p>
52
+ <div class="hero-proof" aria-label="Core capabilities">
53
+ <span>many projects</span>
54
+ <span>independent chat routing</span>
55
+ <span>token-protected URL</span>
56
+ <span>safe bash default</span>
57
+ <span>repo-backed context</span>
58
+ </div>
59
+ <div class="hero-actions">
60
+ <a class="button primary" href="#quickstart">Install CodexFlow</a>
61
+ <a class="button secondary star-button" href="https://github.com/tarunspandit/codexflow"><img src="./star.svg" alt="" aria-hidden="true" />Star on GitHub</a>
62
+ <a class="button secondary" href="https://www.npmjs.com/package/@tarunspandit/codexflow">View npm package</a>
63
+ </div>
64
+ </div>
65
+
66
+ <div class="hero-visual" aria-label="CodexFlow connection model">
67
+ <div class="workspace-demo blueprint">
68
+ <div class="demo-status">
69
+ <span class="status-dot" aria-hidden="true"></span>
70
+ <div class="status-label">
71
+ <strong>Synchronized local projects</strong>
72
+ <small>one broker · one tunnel · independent chats</small>
73
+ </div>
74
+ <span class="status-badge">bounded</span>
75
+ </div>
76
+ <div class="connection-map" aria-label="Connection flow">
77
+ <div>
78
+ <span>01</span>
79
+ <strong>Project picker</strong>
80
+ <p>Configured roots plus recent local Codex project folders.</p>
81
+ </div>
82
+ <div>
83
+ <span>02</span>
84
+ <strong>CodexFlow</strong>
85
+ <p>Routes each chat to its selected folder and advertises local skills and plugins.</p>
86
+ </div>
87
+ <div>
88
+ <span>03</span>
89
+ <strong>ChatGPT app</strong>
90
+ <p>Read, search, edit, review, verify, or hand off through Developer Mode.</p>
91
+ </div>
92
+ </div>
93
+ <div class="trust-row">
94
+ <div><span>Not a model proxy</span><strong>uses your own ChatGPT account</strong></div>
95
+ <div><span>Not a quota bypass</span><strong>product limits still apply</strong></div>
96
+ <div><span>Not an OS sandbox</span><strong>keep roots scoped to the repo</strong></div>
97
+ </div>
98
+ </div>
99
+ <div class="floating-note">
100
+ <span>That is the setup</span>
101
+ <strong>codexflow</strong>
102
+ <small>Run it from anywhere. Projects are discovered automatically.</small>
103
+ </div>
104
+ </div>
105
+ </section>
106
+
107
+ <section class="strip" aria-label="Core workflow">
108
+ <div>
109
+ <span>01</span>
110
+ <strong>Install</strong>
111
+ <p>Run <code>npm install -g @tarunspandit/codexflow</code> once.</p>
112
+ </div>
113
+ <div>
114
+ <span>02</span>
115
+ <strong>Run</strong>
116
+ <p>Type <code>codexflow</code> from anywhere.</p>
117
+ </div>
118
+ <div>
119
+ <span>03</span>
120
+ <strong>Paste</strong>
121
+ <p>Paste the copied Server URL when creating the ChatGPT plugin.</p>
122
+ </div>
123
+ </section>
124
+
125
+ <section class="section value-section">
126
+ <div>
127
+ <p class="eyebrow">Use the account you already have</p>
128
+ <h2>Give ChatGPT a real local workspace, not another paste buffer.</h2>
129
+ <p>
130
+ CodexFlow is for builders who already pay for ChatGPT and want that subscription to do more than answer questions. It gives ChatGPT a local workspace bridge: file reads, exact edits, source writes, search, git status, git diff, and allowlisted verification commands.
131
+ </p>
132
+ <p>
133
+ Codex and ChatGPT are different product surfaces. If one workflow is unavailable and another surface you already have access to is still available, CodexFlow lets you work against the same local repo without changing either product's limits.
134
+ </p>
135
+ <p>
136
+ If your ChatGPT account exposes a stronger model in the web app, and that model surface can call Developer Mode apps, CodexFlow lets it work against your local repo through MCP. Some model surfaces cannot call connectors or MCP tools directly. CodexFlow does not provide, proxy, resell, or unlock models; it gives compatible ChatGPT sessions local coding tools and repo context.
137
+ </p>
138
+ </div>
139
+ <div class="value-matrix">
140
+ <div>
141
+ <small>ChatGPT web can see</small>
142
+ <strong>AGENTS.md, .ai-bridge, git state, source files, and selected Codex-style context</strong>
143
+ </div>
144
+ <div>
145
+ <small>Normal coding mode can</small>
146
+ <strong>read, write, edit, search, and verify directly in the workspace</strong>
147
+ </div>
148
+ <div>
149
+ <small>Pro planning mode can</small>
150
+ <strong>export a durable context bundle for sessions where MCP tools are unavailable</strong>
151
+ </div>
152
+ <div>
153
+ <small>Best account fit</small>
154
+ <strong>ChatGPT account with Apps / Developer Mode access. OpenAI lists Developer Mode for Pro, Plus, Business, Enterprise, and Education on web; Free and Go do not expose this app flow in current testing.</strong>
155
+ </div>
156
+ </div>
157
+ </section>
158
+
159
+ <section id="execute" class="section two-col">
160
+ <div>
161
+ <p class="eyebrow">Planner to executor</p>
162
+ <h2>Let ChatGPT plan, then run a local agent on your machine.</h2>
163
+ <p>
164
+ Handoff mode keeps ChatGPT planning-only. ChatGPT writes <code>.ai-bridge/current-plan.md</code>, then you decide whether to run a local implementation agent from your terminal.
165
+ </p>
166
+ <p>
167
+ <code>codexflow execute-handoff</code> runs the saved plan through OpenCode, Pi, Codex, or a custom command, then collects status, stdout/stderr excerpts, and the final git diff back into <code>.ai-bridge</code> for ChatGPT review.
168
+ </p>
169
+ </div>
170
+ <div class="command-stack">
171
+ <div>
172
+ <small>Preview first</small>
173
+ <pre><code>codexflow execute-handoff --agent opencode --model provider/model --dry-run</code></pre>
174
+ </div>
175
+ <div>
176
+ <small>Run locally</small>
177
+ <pre><code>codexflow execute-handoff --agent opencode --model provider/model</code></pre>
178
+ </div>
179
+ <div>
180
+ <small>Custom agent</small>
181
+ <pre><code>codexflow execute-handoff --agent custom --command "my-agent --task-file {{plan_file}}"</code></pre>
182
+ </div>
183
+ <div>
184
+ <small>Result files</small>
185
+ <pre><code>.ai-bridge/agent-status.md
186
+ .ai-bridge/implementation-diff.patch
187
+ .ai-bridge/execution-log.jsonl</code></pre>
188
+ </div>
189
+ </div>
190
+ </section>
191
+
192
+ <section class="section two-col">
193
+ <div>
194
+ <p class="eyebrow">Compared with generic workspace bridges</p>
195
+ <h2>CodexFlow is the ChatGPT-first local coding loop.</h2>
196
+ <p>
197
+ CodexFlow runs one local MCP broker and tunnel for many repositories. Every ChatGPT MCP connection keeps its own selected project, so parallel chats can work in different folders without launching another broker.
198
+ </p>
199
+ <p>
200
+ That means automatic project discovery, explicit safety modes, repo-backed context files, reviewable diffs, compact cards, and no model proxying, account pooling, quota bypassing, third-party Pro scraping, or OS sandbox claims.
201
+ </p>
202
+ </div>
203
+ <div class="value-matrix">
204
+ <div>
205
+ <small>Product loop</small>
206
+ <strong>Install once, save a projects root, paste one Server URL, then select a folder per chat.</strong>
207
+ </div>
208
+ <div>
209
+ <small>Control surface</small>
210
+ <strong>Bash, write/edit, tool mode, Codex session reads, and handoff execution are separate switches.</strong>
211
+ </div>
212
+ <div>
213
+ <small>Context model</small>
214
+ <strong>AGENTS.md and .ai-bridge keep durable project memory in files you can review.</strong>
215
+ </div>
216
+ <div>
217
+ <small>Trust model</small>
218
+ <strong>Your ChatGPT account, your local repo, your explicit tunnel and token.</strong>
219
+ </div>
220
+ </div>
221
+ </section>
222
+
223
+ <section id="quickstart" class="section two-col">
224
+ <div>
225
+ <p class="eyebrow">Quick start</p>
226
+ <h2>Install once. Type CodexFlow. Done.</h2>
227
+ <p>
228
+ The bare command discovers projects from local Codex metadata, starts normal coding mode with safe bash, opens a Cloudflare quick tunnel, copies the connection URL, and waits for ChatGPT.
229
+ </p>
230
+ </div>
231
+ <div class="steps">
232
+ <div class="step">
233
+ <span>1</span>
234
+ <div>
235
+ <strong>Install globally</strong>
236
+ <pre><code>npm install -g @tarunspandit/codexflow</code></pre>
237
+ </div>
238
+ </div>
239
+ <div class="step">
240
+ <span>2</span>
241
+ <div>
242
+ <strong>Start everything</strong>
243
+ <pre><code>codexflow</code></pre>
244
+ </div>
245
+ </div>
246
+ <div class="step">
247
+ <span>3</span>
248
+ <div>
249
+ <strong>Turn on Developer Mode</strong>
250
+ <p>In ChatGPT, open Settings -> Security and login. Turn on Developer mode and keep Enforce CSP in developer mode enabled, then go to Settings -> Plugins and create the connection.</p>
251
+ </div>
252
+ </div>
253
+ <div class="step">
254
+ <span>4</span>
255
+ <div>
256
+ <strong>Create a ChatGPT plugin</strong>
257
+ <p>Name it CodexFlow. Use Connection: Server URL. Paste the copied URL. Set Authentication to No Authentication / None.</p>
258
+ </div>
259
+ </div>
260
+ <div class="step">
261
+ <span>5</span>
262
+ <div>
263
+ <strong>Use CodexFlow in chat</strong>
264
+ <p>Activate CodexFlow, choose a project in the picker, then ask ChatGPT to inspect, edit, and verify. Each chat keeps its own project selection.</p>
265
+ </div>
266
+ </div>
267
+ </div>
268
+ </section>
269
+
270
+ <section class="section">
271
+ <div class="section-heading">
272
+ <p class="eyebrow">Tunnel choices</p>
273
+ <h2>Pick the URL strategy that matches your workflow.</h2>
274
+ </div>
275
+ <div class="compare-grid">
276
+ <article>
277
+ <span class="tag">Fastest</span>
278
+ <h3>Cloudflare quick tunnel</h3>
279
+ <p>No account flow. Good for demos. The URL changes every restart, so you must update the ChatGPT app Server URL each time.</p>
280
+ <pre><code>codexflow</code></pre>
281
+ </article>
282
+ <article>
283
+ <span class="tag">Recommended</span>
284
+ <h3>ngrok free dev domain</h3>
285
+ <p>Best simple stable URL. Create a free ngrok account, use the assigned dev domain, and keep the same ChatGPT app URL across restarts.</p>
286
+ <pre><code>codexflow ngrok --hostname your-name.ngrok-free.dev</code></pre>
287
+ </article>
288
+ <article>
289
+ <span class="tag">Custom</span>
290
+ <h3>Cloudflare named tunnel</h3>
291
+ <p>Use your own domain, such as <code>codexflow.example.com</code>, and keep one ChatGPT URL.</p>
292
+ <pre><code>codexflow stable --hostname codexflow.example.com --tunnel-name codexflow</code></pre>
293
+ </article>
294
+ <article>
295
+ <span class="tag">Tailnet</span>
296
+ <h3>Tailscale Funnel</h3>
297
+ <p>Use your device's <code>.ts.net</code> hostname when your tailnet already allows public Funnel HTTPS.</p>
298
+ <pre><code>codexflow tailscale --hostname your-device.your-tailnet.ts.net</code></pre>
299
+ </article>
300
+ </div>
301
+ </section>
302
+
303
+ <section id="ngrok" class="section two-col">
304
+ <div>
305
+ <p class="eyebrow">ngrok setup</p>
306
+ <h2>Use ngrok's free dev domain for a fixed ChatGPT connector URL.</h2>
307
+ <p>
308
+ ngrok free accounts include a dev domain. Find it in the ngrok dashboard under Universal Gateway -> Domains, save it once in CodexFlow, and future starts from the same repo are just <code>codexflow</code>.
309
+ </p>
310
+ <p>
311
+ That means users do not need to change ChatGPT settings every time they restart CodexFlow.
312
+ </p>
313
+ </div>
314
+ <div class="command-stack">
315
+ <div>
316
+ <small>One-time ngrok auth</small>
317
+ <pre><code>ngrok config add-authtoken YOUR_NGROK_TOKEN</code></pre>
318
+ </div>
319
+ <div>
320
+ <small>Save the CodexFlow workspace profile</small>
321
+ <pre><code>codexflow settings set --tunnel ngrok --hostname your-name.ngrok-free.dev</code></pre>
322
+ </div>
323
+ <div>
324
+ <small>Daily start</small>
325
+ <pre><code>codexflow</code></pre>
326
+ </div>
327
+ </div>
328
+ </section>
329
+
330
+ <section id="cloudflare" class="section two-col reverse">
331
+ <div class="command-stack">
332
+ <div>
333
+ <small>Quick tunnel</small>
334
+ <pre><code>codexflow --tunnel cloudflare</code></pre>
335
+ </div>
336
+ <div>
337
+ <small>Named tunnel with your domain</small>
338
+ <pre><code>cloudflared tunnel login
339
+ cloudflared tunnel create CodexFlow
340
+ cloudflared tunnel route dns CodexFlow codexflow.example.com</code></pre>
341
+ </div>
342
+ <div>
343
+ <small>Daily stable start</small>
344
+ <pre><code>codexflow stable --hostname codexflow.example.com --tunnel-name codexflow</code></pre>
345
+ </div>
346
+ </div>
347
+ <div>
348
+ <p class="eyebrow">Cloudflare setup</p>
349
+ <h2>Start instantly with quick tunnels or keep a custom domain with named tunnels.</h2>
350
+ <p>
351
+ CodexFlow can install <code>cloudflared</code> into <code>~/.codexflow/bin</code> when it is missing. No sudo, Homebrew, apt, or winget step is required for the default path.
352
+ </p>
353
+ <p>
354
+ Quick tunnels are disposable. If you own a domain, use a Cloudflare named tunnel and route DNS to a hostname such as <code>codexflow.example.com</code>. The hostname stays the same across restarts, so the ChatGPT app Server URL does not need to change.
355
+ </p>
356
+ </div>
357
+ </section>
358
+
359
+ <section id="modes" class="section">
360
+ <div class="section-heading">
361
+ <p class="eyebrow">Modes</p>
362
+ <h2>Use the right level of control for the task.</h2>
363
+ </div>
364
+ <div class="mode-row">
365
+ <div>
366
+ <strong>Normal coding</strong>
367
+ <p>Default. ChatGPT can inspect, write, edit, search, and verify inside the workspace.</p>
368
+ </div>
369
+ <div>
370
+ <strong>Handoff</strong>
371
+ <p>Planning-only. ChatGPT writes <code>.ai-bridge/current-plan.md</code> and Codex executes locally.</p>
372
+ </div>
373
+ <div>
374
+ <strong>Pro planning</strong>
375
+ <p>Exports a durable context file for models or surfaces that cannot call connectors or MCP tools directly.</p>
376
+ </div>
377
+ </div>
378
+ </section>
379
+
380
+ <section id="reference" class="section reference-section">
381
+ <div class="section-heading">
382
+ <p class="eyebrow">Complete setup data</p>
383
+ <h2>Everything needed to install, connect, use, and stop CodexFlow.</h2>
384
+ <p>
385
+ This page keeps the high-signal details in one place: commands, ChatGPT app fields, tunnel choices, tools, saved settings, safety defaults, and useful links.
386
+ </p>
387
+ </div>
388
+
389
+ <div class="reference-grid">
390
+ <article>
391
+ <small>Install</small>
392
+ <h3>Install globally once</h3>
393
+ <pre><code>npm install -g @tarunspandit/codexflow</code></pre>
394
+ <p>This gives users the simple <code>codexflow</code> command everywhere.</p>
395
+ </article>
396
+ <article>
397
+ <small>First run</small>
398
+ <h3>Automatic start</h3>
399
+ <pre><code>codexflow</code></pre>
400
+ <p>The bare command needs no saved workspace profile. Advanced tunnel and safety overrides remain available as optional flags.</p>
401
+ </article>
402
+ <article>
403
+ <small>Daily start</small>
404
+ <h3>Reuse saved profile</h3>
405
+ <pre><code>codexflow</code></pre>
406
+ <p>Every run refreshes the Codex project catalog automatically.</p>
407
+ </article>
408
+ <article>
409
+ <small>ChatGPT settings path</small>
410
+ <h3>Enable plugins once</h3>
411
+ <dl>
412
+ <div><dt>Open</dt><dd>ChatGPT Settings</dd></div>
413
+ <div><dt>Go to</dt><dd>Security and login</dd></div>
414
+ <div><dt>Enable</dt><dd>Developer mode</dd></div>
415
+ <div><dt>Keep on</dt><dd>Enforce CSP in developer mode</dd></div>
416
+ <div><dt>Then</dt><dd>Plugins -> Create</dd></div>
417
+ </dl>
418
+ <p>This is a one-time ChatGPT setting. CodexFlow widgets work with CSP enabled.</p>
419
+ </article>
420
+ <article>
421
+ <small>Create Plugin fields</small>
422
+ <h3>Paste the copied URL</h3>
423
+ <dl>
424
+ <div><dt>Name</dt><dd>CodexFlow</dd></div>
425
+ <div><dt>Description</dt><dd>Local workspace bridge for ChatGPT coding</dd></div>
426
+ <div><dt>Connection</dt><dd>Server URL</dd></div>
427
+ <div><dt>Server URL</dt><dd>Paste copied CodexFlow URL</dd></div>
428
+ <div><dt>Authentication</dt><dd>No Authentication / None</dd></div>
429
+ </dl>
430
+ <p>The copied Server URL already includes the private CodexFlow token. Do not paste the token separately unless your ChatGPT UI supports custom headers.</p>
431
+ </article>
432
+ <article>
433
+ <small>Doctor</small>
434
+ <h3>Preflight checks</h3>
435
+ <pre><code>codexflow doctor</code></pre>
436
+ <p>Checks Node, build output, saved profile, port availability, tunnel prerequisites, clipboard support, and browser-open support.</p>
437
+ </article>
438
+ <article>
439
+ <small>Runtime status</small>
440
+ <h3>Check a running connector</h3>
441
+ <pre><code>codexflow status
442
+ codexflow status --json</code></pre>
443
+ <p>Shows whether this workspace has an active launcher, the token-free Server URL, process id, and local health state.</p>
444
+ </article>
445
+ <article>
446
+ <small>Settings</small>
447
+ <h3>Manage saved profiles</h3>
448
+ <pre><code>codexflow settings
449
+ codexflow settings set --tunnel ngrok --hostname your-name.ngrok-free.dev
450
+ codexflow settings delete --yes</code></pre>
451
+ <p>Use settings to switch providers, reuse another repo setup, or delete a workspace preference.</p>
452
+ </article>
453
+ <article>
454
+ <small>Controls</small>
455
+ <h3>Terminal keys</h3>
456
+ <dl>
457
+ <div><dt>Enter</dt><dd>Open ChatGPT connector settings</dd></div>
458
+ <div><dt>c</dt><dd>Copy Server URL again</dd></div>
459
+ <div><dt>o</dt><dd>Open local admin dashboard</dd></div>
460
+ <div><dt>q</dt><dd>Stop CodexFlow</dd></div>
461
+ </dl>
462
+ </article>
463
+ <article>
464
+ <small>Local admin</small>
465
+ <h3>Setup, profile, and status</h3>
466
+ <p>Press <code>o</code> to open the token-protected admin dashboard. It shows install/start commands, ChatGPT connection steps, saved profile settings, modes, allowed roots, and advanced restart shortcuts.</p>
467
+ </article>
468
+ </div>
469
+
470
+ <div class="tool-reference">
471
+ <div>
472
+ <p class="eyebrow">Default standard tools</p>
473
+ <h3>Focused local repo actions exposed through MCP.</h3>
474
+ </div>
475
+ <div class="tool-list">
476
+ <span>CodexFlow</span>
477
+ <span>server_config</span>
478
+ <span>codexflow_self_test</span>
479
+ <span>list_projects</span>
480
+ <span>select_project</span>
481
+ <span>open_current_workspace</span>
482
+ <span>open_workspace</span>
483
+ <span>tree</span>
484
+ <span>search</span>
485
+ <span>read</span>
486
+ <span>write</span>
487
+ <span>edit</span>
488
+ <span>bash</span>
489
+ <span>show_changes</span>
490
+ <span>read_handoff</span>
491
+ <span>wait_for_handoff</span>
492
+ <span>export_pro_context</span>
493
+ <span>handoff_to_agent</span>
494
+ </div>
495
+ </div>
496
+
497
+ <div class="reference-grid compact">
498
+ <article>
499
+ <small>Multi-project routing</small>
500
+ <h3>One tunnel, independent chats</h3>
501
+ <p><code>list_projects</code> synchronizes allowed folders and recent Codex project metadata. <code>select_project</code> binds only the current ChatGPT MCP connection; later tools route there automatically.</p>
502
+ </article>
503
+ <article>
504
+ <small>Safety defaults</small>
505
+ <h3>Blocked paths</h3>
506
+ <p><code>.env</code>, private keys, <code>.git</code>, <code>node_modules</code>, generated build/cache folders, paths outside the workspace, and symlink escapes are refused.</p>
507
+ </article>
508
+ <article>
509
+ <small>Safe bash</small>
510
+ <h3>Verification without full shell</h3>
511
+ <p>Safe mode allows common repo inspection, git, tests, lint, typecheck, and build commands. Use full bash only for trusted local repos.</p>
512
+ </article>
513
+ <article>
514
+ <small>No surprise shell</small>
515
+ <h3>Disable or target bash</h3>
516
+ <p>Use <code>codexflow --no-bash</code>, or keep bash enabled with <code>--bash-session main --require-bash-session</code>. Session labels target this local CodexFlow server, not a Codex app chat.</p>
517
+ </article>
518
+ <article>
519
+ <small>Codex sessions</small>
520
+ <h3>Opt-in local history browser</h3>
521
+ <p><code>--codex-sessions metadata</code> lists local Codex session ids, titles, cwd paths, and resume commands. <code>read</code> mode adds bounded transcript reads; neither mode attaches to a live Codex chat.</p>
522
+ </article>
523
+ <article>
524
+ <small>Visual widgets</small>
525
+ <h3>Compact cards for every tool</h3>
526
+ <p>The project picker is always interactive. Other tools can render compact v10 cards when tool cards are enabled; skills, git, tree, terminal output, and raw diffs stay folded or bounded.</p>
527
+ </article>
528
+ <article>
529
+ <small>Stable URL rule</small>
530
+ <h3>One URL needs one reserved hostname</h3>
531
+ <p>Cloudflare quick tunnels change on restart. Use an ngrok free dev domain, Cloudflare named tunnel, or Tailscale Funnel when you want one ChatGPT app URL.</p>
532
+ </article>
533
+ <article>
534
+ <small>Local web admin</small>
535
+ <h3>Edit next-run profile defaults</h3>
536
+ <p>The token-protected local page can save tunnel, hostname, port, mode, bash, Codex sessions, write/tool mode, widget origin, and tunnel config paths for the next <code>codexflow</code>. Raw tunnel tokens, account switching, and background services stay out of the browser.</p>
537
+ </article>
538
+ <article>
539
+ <small>Local executor</small>
540
+ <h3>Execution stays on your machine</h3>
541
+ <p><code>execute-handoff</code> is a terminal command, not a remote MCP tool. Use <code>--dry-run</code> before running unfamiliar agents or custom commands.</p>
542
+ </article>
543
+ </div>
544
+
545
+ <div class="link-row" aria-label="Documentation links">
546
+ <a class="star-link" href="https://github.com/tarunspandit/codexflow"><img src="./star.svg" alt="" aria-hidden="true" />Star the GitHub repo</a>
547
+ <a href="https://www.npmjs.com/package/@tarunspandit/codexflow">npm package</a>
548
+ <a href="https://github.com/tarunspandit/codexflow/blob/main/DOMAIN_SETUP.md">Stable URL guide</a>
549
+ <a href="https://github.com/tarunspandit/codexflow/blob/main/FAQ.md">FAQ</a>
550
+ <a href="https://github.com/tarunspandit/codexflow/blob/main/SECURITY.md">Security notes</a>
551
+ </div>
552
+ </section>
553
+
554
+ <section id="faq" class="section">
555
+ <div class="section-heading">
556
+ <p class="eyebrow">FAQ</p>
557
+ <h2>The questions users will ask before installing.</h2>
558
+ <p>Short answers for account requirements, setup, URLs, safety, and what ChatGPT can actually access.</p>
559
+ </div>
560
+ <div class="faq-grid">
561
+ <article>
562
+ <h3>Which ChatGPT account should I use?</h3>
563
+ <p>Use a ChatGPT account with Apps / Developer Mode access. OpenAI lists Developer Mode for Pro, Plus, Business, Enterprise, and Education accounts on web. Current testing shows free and Go accounts do not expose the app flow needed for CodexFlow. A specific model surface may still be unable to call connectors; use Pro context fallback for those sessions.</p>
564
+ </article>
565
+ <article>
566
+ <h3>Does CodexFlow bypass rate limits?</h3>
567
+ <p>No. It does not bypass, avoid, increase, pool, resell, or modify ChatGPT, Codex, OpenAI, or third-party model limits. Every request still runs through your own ChatGPT session and whatever limits that account has.</p>
568
+ </article>
569
+ <article>
570
+ <h3>Why install globally?</h3>
571
+ <p>Global install gives users one command: <code>codexflow</code>. It avoids long <code>npx</code> commands and makes daily startup simply <code>codexflow</code>.</p>
572
+ </article>
573
+ <article>
574
+ <h3>What URL should I use?</h3>
575
+ <p>Use Cloudflare quick tunnel for demos. Use an ngrok free dev domain, Cloudflare named tunnel, or Tailscale Funnel when you want one ChatGPT app URL that survives restarts.</p>
576
+ </article>
577
+ <article>
578
+ <h3>Can ChatGPT see my Codex context?</h3>
579
+ <p>It can read explicit context files such as <code>AGENTS.md</code>, <code>.ai-bridge</code>, git status/diff, and selected source files. It cannot read hidden Codex runtime memory.</p>
580
+ </article>
581
+ <article>
582
+ <h3>Should CSP stay enabled?</h3>
583
+ <p>Yes. In Settings -> Security and login, turn on Developer mode and keep Enforce CSP in developer mode enabled. Create and manage the connection under Settings -> Plugins.</p>
584
+ </article>
585
+ </div>
586
+ </section>
587
+
588
+ <section id="stop" class="section two-col">
589
+ <div>
590
+ <p class="eyebrow">Start and stop</p>
591
+ <h2>Keep the terminal running while ChatGPT uses the connector.</h2>
592
+ <p>
593
+ CodexFlow owns the local MCP server and the tunnel process. Stop it when the session is over.
594
+ </p>
595
+ </div>
596
+ <div class="rules">
597
+ <div>
598
+ <strong>Start</strong>
599
+ <p>Run <code>codexflow</code> in the target repo. The Server URL is copied automatically.</p>
600
+ </div>
601
+ <div>
602
+ <strong>Open</strong>
603
+ <p>Press Enter in the terminal to open ChatGPT connector settings.</p>
604
+ </div>
605
+ <div>
606
+ <strong>End</strong>
607
+ <p>Press <code>q</code> or Ctrl+C. Quick tunnel URLs stop working. Stable hostnames stay reserved.</p>
608
+ </div>
609
+ </div>
610
+ </section>
611
+
612
+ <section class="section safety">
613
+ <div>
614
+ <p class="eyebrow">Safety boundary</p>
615
+ <h2>This is a local developer bridge, not an OS sandbox.</h2>
616
+ </div>
617
+ <ul>
618
+ <li>Public tunnels are token-protected by default.</li>
619
+ <li><code>.env</code>, private keys, <code>.git</code>, <code>node_modules</code>, and symlink escapes are blocked.</li>
620
+ <li>Safe bash allows common inspection and test commands, not arbitrary shell control.</li>
621
+ <li><code>--no-bash</code> disables all ChatGPT-triggered shell commands.</li>
622
+ <li><code>--bash-session</code> with <code>--require-bash-session</code> requires explicit session targeting before bash runs.</li>
623
+ <li>Use handoff mode when you want ChatGPT to plan and Codex to edit.</li>
624
+ </ul>
625
+ </section>
626
+ </main>
627
+
628
+ <footer class="site-footer">
629
+ <span>CodexFlow</span>
630
+ <a class="star-link" href="https://github.com/tarunspandit/codexflow"><img src="./star.svg" alt="" aria-hidden="true" />Star on GitHub</a>
631
+ <a href="https://www.npmjs.com/package/@tarunspandit/codexflow">npm</a>
632
+ <a href="./zh.html">中文</a>
633
+ <a href="https://github.com/tarunspandit/codexflow/blob/main/SECURITY.md">Security</a>
634
+ </footer>
635
+
636
+ <script src="./script.js?v=2"></script>
637
+ </body>
638
+ </html>
package/docs/og.png ADDED
Binary file