{
  "manifest_version": "1",
  "slug": "codex",
  "title": "Codex",
  "headline": "Run Codex on a remote server",
  "description": "Codex is already installed on exe.dev. One setup command, a Git project, and a coding session that keeps going when you close your laptop.",
  "category": "ai-agents",
  "tags": [
    "codex",
    "openai",
    "chatgpt",
    "remote development",
    "ai coding agent",
    "tmux"
  ],
  "url": "https://exe.dev/deploy/codex",
  "markdown_url": "https://exe-staging.dev/deploy/codex.md",
  "upstream": {
    "website": "https://openai.com/codex/",
    "source": "https://github.com/openai/codex",
    "docs": "https://learn.chatgpt.com/docs/codex/cli",
    "license": "Apache-2.0"
  },
  "example_vm_name": "my-codex",
  "time": "2 minutes",
  "stack": [
    {
      "name": "Codex",
      "detail": "preinstalled; connected to exe.dev's LLM integration",
      "data": "~/.codex"
    },
    {
      "name": "Your project",
      "detail": "a Git repository",
      "data": "~/project"
    },
    {
      "name": "tmux",
      "detail": "keeps your terminal session running when you disconnect"
    }
  ],
  "access": [
    {
      "url": "ssh my-codex.exe.xyz",
      "who": "private",
      "what": "your terminal"
    }
  ],
  "delivers": [
    "Codex connected to a model, with no API key or sign-in",
    "A Git repository at `~/project` on persistent disk",
    "A `codex` tmux session that survives disconnects"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe-staging.dev/new?prompt=Set%20up%20Codex%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe-staging.dev%2Fdeploy%2Fcodex.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-codex.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-codex.%20Skip%20the%20step%20that%20creates%20the%20VM%3B%20you%20are%20on%20it.%0A%0AYou%20are%20done%20when%20all%20of%20these%20are%20true.%20Check%20each%20one%20yourself%3A%0A-%20Codex%20connected%20to%20a%20model%2C%20with%20no%20API%20key%20or%20sign-in%0A-%20A%20Git%20repository%20at%20%60~%2Fproject%60%20on%20persistent%20disk%0A-%20A%20%60codex%60%20tmux%20session%20that%20survives%20disconnects%0A%0AUse%20the%20preinstalled%20Codex.%20Run%20the%20VM-side%20setup%20in%20%22Start%20coding%22.%0ACreate%20tmux%20detached%20%28%60tmux%20new%20-d%20-s%20codex%20-c%20~%2Fproject%60%29%20rather%20than%0Aattaching.%20Reuse%20the%20session%20if%20it%20already%20exists.%20Do%20not%20launch%0Ainteractive%20Codex.%20If%20%60exeuntu%20configure%20codex%60%20reports%20%60existing%20user%0Aconfig%60%2C%20leave%20%60~%2F.codex%2Fconfig.toml%60%20alone%20and%20do%20not%20sign%20in%20or%20out%20of%0AChatGPT%3B%20ask%20the%20owner%20if%20this%20prevents%20setup.%20Verify%20from%20~%2Fproject%20with%0A%60codex%20exec%20-m%20gpt-6-luna%20%22Reply%20with%20exactly%3A%20OK%22%20%3C%2Fdev%2Fnull%60%20and%20check%0A%60tmux%20has-session%20-t%20codex%60.%20Skip%20the%20later%20optional%20instructions%20and%20FAQ.%0AFinish%20with%20the%20SSH%20command%20from%20%22Take%20a%20break%22%2C%20using%20this%20VM%27s%20name%2C%0Aand%20tell%20the%20owner%20to%20run%20%60codex%60%20inside%20it.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe-staging.dev/deploy/codex/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Codex on this VM by following the exe.dev recipe at https://exe-staging.dev/deploy/codex.md from top to bottom.\n\nThe recipe's example VM name is my-codex. This VM's name is the output of `hostname`: use it wherever the recipe writes my-codex. Skip the step that creates the VM; you are on it.\n\nYou are done when all of these are true. Check each one yourself:\n- Codex connected to a model, with no API key or sign-in\n- A Git repository at `~/project` on persistent disk\n- A `codex` tmux session that survives disconnects\n\nUse the preinstalled Codex. Run the VM-side setup in \"Start coding\".\nCreate tmux detached (`tmux new -d -s codex -c ~/project`) rather than\nattaching. Reuse the session if it already exists. Do not launch\ninteractive Codex. If `exeuntu configure codex` reports `existing user\nconfig`, leave `~/.codex/config.toml` alone and do not sign in or out of\nChatGPT; ask the owner if this prevents setup. Verify from ~/project with\n`codex exec -m gpt-6-luna \"Reply with exactly: OK\" \u003c/dev/null` and check\n`tmux has-session -t codex`. Skip the later optional instructions and FAQ.\nFinish with the SSH command from \"Take a break\", using this VM's name,\nand tell the owner to run `codex` inside it.\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe-staging.dev/deploy/codex/prompt.txt"
  },
  "updated": "2026-10-17",
  "verified": "2026-10-17",
  "related": [
    "opencode",
    "claude-code",
    "code-server",
    "openclaw",
    "hermes-agent",
    "pi-durable"
  ]
}
