runner
run your server's tasks on this machine
Run your Coder server's tasks on your own machine, reached through any tunnel.
runner add <kind> [--name <name>] [--scope <scope>] [--field <field>] [--server <server>] [--yes] [--json]
connect a runner
Connect a runner. Secret fields read environment variables with key=env:VARIABLE. Adding local prints a pairing command.
<kind>the runner kind, such as local or http--name <name>runner display name--scope <scope>personal or workspace--field <field>repeat for each field, use env:VARIABLE for secrets--server <server>act on your Coder server, in the saved workspace--yesconnect to a server used for the first time without asking--jsonJSON output
runner default <id> [--server <server>] [--yes] [--json]
set the default in its scope
Use this runner by default within its scope.
<id>the runner--server <server>act on your Coder server, in the saved workspace--yesconnect to a server used for the first time without asking--jsonJSON output
runner test <id> [--server <server>] [--yes] [--json]
check a runner connection
Check the runner connection.
<id>the runner--server <server>act on your Coder server, in the saved workspace--yesconnect to a server used for the first time without asking--jsonJSON output
runner serve [--url <url>] [--token <token>] [--runner-url <runner-url>] [--port <port>] [--name <name>] [--workspace] [--server <server>] [--yes] [--json] [--cwd <cwd>]
run your server's tasks on this machine
Run tasks on this machine with its own claude and codex logins. Expose the port with any tunnel (cloudflared, ngrok, Tailscale Funnel or a public VS Code port) and pass the tunnel's URL; each start registers the current URL, so a changing tunnel URL is fine. Choose a default with coder runner default. Tasks use their named runner, the agent setting, your default, the workspace default, then the server default.
--url <url>the HTTPS address the server reaches this runner at--token <token>one-use pairing token, --url is the Coder server--runner-url <runner-url>public tunnel address when pairing, or CODER_RUNNER_URL--port <port>local port the tunnel forwards to (default 4100)--name <name>shown in the dashboard (default: this machine's hostname)--workspacerun every member's tasks, not only yours (owners and admins)--server <server>act on your Coder server, in the saved workspace--yesconnect to a server used for the first time without asking--jsonJSON output--cwd <cwd>workspace directory; default current
cloudflared tunnel --url http://localhost:4100 # expose the port in one terminal
coder runner serve --url https://abc.trycloudflare.com # then serve through it
runner list [--server <server>] [--yes] [--json]
list your runners and the workspace's
--server <server>act on your Coder server, in the saved workspace--yesconnect to a server used for the first time without asking--jsonJSON output
runner rename <id> <name> [--server <server>] [--yes] [--json]
rename a runner
<id>the runner<name>its new name--server <server>act on your Coder server, in the saved workspace--yesconnect to a server used for the first time without asking--jsonJSON output
runner remove <id> [--server <server>] [--yes] [--json]
remove a runner
<id>the runner--server <server>act on your Coder server, in the saved workspace--yesconnect to a server used for the first time without asking--jsonJSON output