A Codex plugin that provisions a DigitalOcean droplet from the Codex Universal
image (id 251129059) and wires it up as a remote SSH workspace for the Codex
desktop app. It uses the plugin's bundled DigitalOcean MCP server, creates and
boots the droplet without doctl or API tokens, configures
local SSH access, and hands off to Codex. The user picks the region and size
interactively (with sensible defaults), and the droplet is billed hourly until
deleted.
droplet-workspace/
.codex-plugin/plugin.json # plugin manifest (name, version, skills/mcpServers paths)
.mcp.json # bundled DigitalOcean MCP server declaration
assets/ # logo and composer icons referenced by the manifest
skills/provision-droplet/
SKILL.md # the step-by-step workflow Codex follows
ssh_config.tmpl # ~/.ssh/config Host block template
scripts/
keygen.py # generates a unique name + ed25519 SSH key pair
configure_ssh.py # writes SSH config, scans host keys, waits for cloud-init
.mcp.json— declares the single bundled MCP server,https://mcp.digitalocean.com/mcp, referenced from the manifest'smcpServerskey. Authenticate the connection in Codex before running this plugin. It provides both the SSH key tools (key-create,key-list,key-delete) and the droplet tools (droplet-create,droplet-get,droplet-delete).SKILL.md— the orchestration guide. It drives the DigitalOcean MCP tools and the two scripts in order, prompts the user for region/size, and explains the one manual Codex step at the end.scripts/keygen.py— stdlib-only; mints a uniqueadjective-noun-hex4prefix, derives the droplet name / DO key label, and creates the local SSH key.scripts/configure_ssh.py— stdlib-only; rendersssh_config.tmplinto~/.ssh/config, refreshesknown_hosts, and probes SSH login until cloud-init finishes before printing theDROPLET READYhandoff.ssh_config.tmpl— theHostblock template ({{ALIAS}},{{IP}},{{USER}},{{IDENTITY_FILE}}).
There is no supported CLI to register a desktop remote SSH project in Codex (tracking: openai/codex#21554). After provisioning, add the host via Codex App → Settings → Connections → Add SSH Host → pick the alias → choose the remote folder.