Cheap Labor
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cheap LaborPlan and implement a feature to export data as CSV."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Abstract
Cheap Labor exists because Codex usage is a limited pool — and most of what a coding agent does is not writing code. Reading files, exploring the repo, planning, and reviewing diffs all burn the Codex allowance without ever writing code.
Then came the key realization: ChatGPT and Codex usage are counted separately — two independent allowances. So we decided to split the work: ChatGPT does all the thinking on its own allowance, and Codex is spent only on real implementation.
That's the whole idea — a local MCP server joined over a Secure MCP Tunnel: ChatGPT on the web drives a Codex CLI on your machine, over your local repo, with a single @cheap-labor trigger.
Built With
Cheap Labor is built with a deliberately small, cross-platform stack:
Runtime: Node.js (>= 20) — bridge server runtime
Language: TypeScript — all bridge code
Protocol: MCP SDK (
@modelcontextprotocol/sdk) — stdio MCP server + clientValidation: zod — tool argument schemas
Executor: Codex CLI (
codex mcp-server) — spawned child MCP client for exploration and implementationConnectivity: Secure MCP Tunnel (
tunnel-client) — private, outbound-only link between ChatGPT web and the local server
Related MCP server: Kontrol
Prerequisites
macOS or Linux with Node.js >= 20 + npm
git
A paid ChatGPT account with developer mode
Codex CLI, logged in (
codex login)tunnel-client— installed during setup: macOS via Homebrew; Linux via the GitHub releases binary (linux-amd64/arm64) on your PATHA Secure MCP Tunnel + runtime API key from the OpenAI platform (the installer points you to the right pages)
Installation
Jump to: 1. Clone & install → 2. Use it
Clone the repo and move into it:
git clone https://github.com/psrisuphan/cheap-labor.git cd cheap-laborRun the installer — it installs deps, builds the bridge, writes your tunnel profile, validates all 23 tools, and walks you through connecting the app to ChatGPT web:
./scripts/install.sh
Use It
Start the tunnel — keep it running while you use cheap-labor:
./scripts/tunnel.sh start # stop: ./scripts/tunnel.sh stopOpen a new ChatGPT chat and type
@cheap-labor— the same app name you added from the tools menu — then mention the project.Confirm the project directory when asked — the session is armed.
Uninstall
./scripts/uninstall.shCleans up everything the script can reach: legacy MCP registration, the tunnel daemon, .codex-bridge/ state in every initialized project, the tunnel profile and stored API key, and the build artifacts. Three prompts (press Enter for the recommended answer, n to keep). Afterwards it prints a manual cleanup guide for the parts only you can reach: the ChatGPT app connection, the Platform tunnel, the runtime API key, and the project folder.
How It Works
The bridge is dormant until armed. While dormant, the server ships only a two-line "ignore these tools" notice as its instructions, so unrelated prompts are answered without the bridge ever being considered. The full workflow rules live in the init tool's return payload and enter the conversation only after arming.
The trigger is the invocation itself — no prompt monitoring, no tag syntax, no phrase scanning:
The user invokes cheap-labor by typing
@cheap-labor. That's the only trigger.ChatGPT asks which project you want, resolves it (
find_projectsfor fuzzy names,create_projectfor new directories), confirms the exact path with you, then arms the session —init(project)(orcreate_projectdirectly for a brand-new directory) and receives asession_token.Every other tool refuses to run without a valid
session_token— a hard backstop that also blocks accidental use outside the workflow.
The Workflow
Arm the session —
@cheap-labor+ confirm the project →initreturns the token.Understand —
git_status,list_tree,read_file,grep(all free).Plan in detail — ChatGPT writes
PLAN.md/SPEC.md/TASKS.mdinto the repo's.codex-bridge/folder withplan_write. The plan is exact step-by-step instructions: which files to create/edit, what each change should be, which commands to run, and how to verify.Small edits, done directly —
write_file/edit_filehandle one-file changes for free.Delegate heavy work —
implementhands the plan to Codex, which executes the steps literally, runs builds/tests, fixes what breaks, and returnsIMPLEMENTATION COMPLETE.Review — ChatGPT reads the returned
git diffand sends targeted corrections back through the same loop.
Features
One-Trigger Activation:
@cheap-laborin any ChatGPT chat is the only trigger; the bridge stays dormant (zero model attention) until invoked — no prompt monitoring, no tag syntax, no phrase scanning.Risk-Gated Execution: commands classified read-only vs. risky; risky work goes through Codex auto-review and your veto.
Built-In Safety Rails: project path scoping, secret redaction, checkpoints before every heavy run, and local-only commits that never push.
Cross-Platform: macOS and Linux, no public ports, outbound-only tunnel.
Tools Reference
Free bridge tools (deterministic local I/O, no Codex cost):
Tool | Purpose |
| Arm the session for a project (the single entry point); returns the |
| Directory structure, depth-limited |
| File contents, line-ranged, size-capped, secrets redacted |
| Regex search with include/exclude globs |
| Repo state + the review loop (untracked files surfaced) |
| Risk-gated verification commands (tests, build) |
| Create a new file directly (refuses to overwrite) |
| Exact-match edit of an existing file (content-based stale guard) |
| Batch edits/writes, all-or-nothing (no partial state) |
| Snapshot HEAD + working tree for rollback (auto before |
| Restore to a checkpoint (user-confirmed; itself undoable) |
| Stage + commit locally with a user-approved message (never pushes) |
| List recorded checkpoints |
| Resolve fuzzy names to candidate paths (shallow, well-known locations) |
| Create a new project directory (no git init); returns a |
| Manage |
Codex-backed tools (spend the Codex pool):
Tool | Purpose |
| Read-only Codex session for questions free tools can't answer |
| Workspace-write Codex on the current plan; returns summary + |
| Continue a session by thread id (approval veto loop, follow-ups) |
Safety Model
implement/deep_explorealways pass an explicit sandbox (workspace-write/read-only) — neverdanger-full-access.Fixed Codex model — every Codex call pins
gpt-5.6-lunawithmediumreasoning and Fast Mode off, passed as per-call overrides. The bridge never writes to~/.codex/config.toml. The one exception:deep_exploreaccepts a stronger model, but only after you confirm the change in chat.Auto-safe approvals — Codex shell approvals surface as MCP elicitations: read-only commands are auto-approved; anything risky (writes, network, git mutations) is declined and recorded so ChatGPT relays it to you for a veto. The veto is executed with
codex_reply.run_commandruns executables directly (no shell). Risky commands are delegated to Codex's auto-review — never full access, nothing risky runs unprompted.write_fileonly creates new files;edit_fileonly edits existing ones via exact-match replacement (stale/ambiguous matches write nothing);edit_packbatches all-or-nothing. All cap sizes and refuse binary files.Ship mode —
checkpointsnapshots HEAD + working tree (taken automatically before everyimplement);rollbackrestores a checkpoint (itself undoable);git_commitcommits locally with a user-approved message. Push/pull/reset/rebase/checkout are never exposed.Bridge tools refuse paths outside the session-approved project directory.
read_file/git_diffredact known secret patterns by default.
Project Structure
cheap-labor/
├── assets/ # Logo / icons
├── scripts/ # Installer, uninstaller, tunnel control, setup
│ ├── install.sh # All-in-one installer
│ ├── uninstall.sh # Clean uninstaller
│ ├── tunnel-setup.sh # Writes the tunnel-client profile
│ ├── tunnel.sh # start / stop / restart / status / logs the tunnel daemon
│ └── setup.mjs # Prerequisite check
├── src/ # Bridge MCP server
│ ├── index.ts # Server entry, tool registration, server instructions
│ ├── safety.ts # Project scoping, redaction, risk classification
│ ├── projects.ts # Session approvals, ledger, find/create
│ ├── planstore.ts # .codex-bridge/ I/O
│ ├── approvals.ts # Auto-safe policy
│ └── tools/ # context, command, codexCommand, codex, deepExplore,
│ # implement, edit, plans, ship
├── tests/ # Node test suite
├── dist/ # Build output (gitignored)
└── package.jsonTesting
To run the unit test suites:
npm run typecheck # tsc --noEmit
npm test # node --test (tsx)Local Data & Logs
Cheap Labor stores its tunnel profile, runtime API key, and daemon logs locally, outside the project directory:
macOS / Linux:
~/.config/tunnel-client/
Inside this directory you will find:
cheap-labor.yaml— thetunnel-clientprofile (contains the tunnel id).cheap-labor.key— the runtime API key, chmod 600, never committed.cheap-labor.log— the tunnel daemon log.
Plans and handoff files are written into each project's .codex-bridge/ folder at runtime (gitignored). Codex's own configuration and auth live in ~/.codex/.
License
This project is licensed under the MIT License. See the LICENSE file for the full license text.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityAmaintenanceAn MCP server that provides AI coding agents with AST-accurate, context-budget-aware codebase querying, safety gates, and team policy integration via structured tools and a local plugin layer.5724MIT
- Alicense-qualityBmaintenanceA self-hosted MCP server that enables AI coding agents to read, edit, search, and run code in local projects with human review loops and policy controls.MIT
- AlicenseAqualityAmaintenanceMCP server that enables a coordinator AI agent to spawn, control, and supervise local coding agents with interactive gating for high-risk operations.10381MIT
- Alicense-qualityCmaintenanceLocal MCP server enabling Codex and ChatGPT to read/write files, execute commands, manage processes, use Git, and inspect images on the user's machine with full privileges.Apache 2.0
Related MCP Connectors
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
An MCP server that gives your AI access to the source code and docs of all public github repos
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/psrisuphan/cheap-labor'
If you have feedback or need assistance with the MCP directory API, please join our Discord server