## Description hetzner-linux template allows CAX (ARM) instances but hardcodes coder agent to amd64 causing the wrong coder-agent to be pulled on CAX instance causing provisioning failure. Adding `architecture` to server_types response and mapping this to correct agent arch, with defaults back to amd64 for if this fails. No Fix, CAX Instance ``` Jan 25 16:03:48 coder-test-nofix-dev systemd[1]: Starting coder-agent.service - Coder Agent... Jan 25 16:03:53 coder-test-nofix-dev systemd[1]: Started coder-agent.service - Coder Agent. Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + trap waitonexit EXIT Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2101]: + mktemp -d -t coder.XXXXXX Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + BINARY_DIR=/tmp/coder.6oHHHW Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + BINARY_NAME=coder Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + BINARY_URL=https://coder.domain/bin/coder-linux-amd64 Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + cd /tmp/coder.6oHHHW Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + : Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + status= Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + command -v curl Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + curl -fsSL --compressed https://coder.domain/bin/coder-linux-amd64 -o coder Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + break Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + chmod +x coder Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + [ -n ] Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + export CODER_AGENT_AUTH=token Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + export CODER_AGENT_URL=https://coder.domain/ Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2133]: + ./coder --version Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2134]: + head -n1 Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2133]: /opt/coder/init: 90: ./coder: Exec format error Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + output= Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2136]: + echo Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2137]: + grep -q Coder Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + echo ERROR: Downloaded agent binary returned unexpected version output Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: ERROR: Downloaded agent binary returned unexpected version output Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + echo coder --version output: "" Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: coder --version output: "" Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + exit 2 Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + waitonexit Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + echo === Agent script exited with non-zero code (2). Sleeping 24h to preserve logs... Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: === Agent script exited with non-zero code (2). Sleeping 24h to preserve logs... Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + sleep 86400 ``` Fix, CAX Instance ``` Jan 25 16:08:55 coder-ARM64TEST-dev systemd[1]: Starting coder-agent.service - Coder Agent... Jan 25 16:09:00 coder-ARM64TEST-dev systemd[1]: Started coder-agent.service - Coder Agent. Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + trap waitonexit EXIT Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2046]: + mktemp -d -t coder.XXXXXX Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + BINARY_DIR=/tmp/coder.4j7W57 Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + BINARY_NAME=coder Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + BINARY_URL=https://coder.domain/bin/coder-linux-arm64 Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + cd /tmp/coder.4j7W57 Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + : Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + status= Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + command -v curl Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + curl -fsSL --compressed https://coder.domain/bin/coder-linux-arm64 -o coder Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + break Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + chmod +x coder Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + [ -n ] Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + export CODER_AGENT_AUTH=token Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + export CODER_AGENT_URL=https://coder.domain/ Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2069]: + ./coder --version Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2070]: + head -n1 Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + output=Coder v2.29.2+b5360a9 Wed Jan 21 15:45:58 UTC 2026 Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2076]: + echo Coder v2.29.2+b5360a9 Wed Jan 21 15:45:58 UTC 2026 Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2077]: + grep -q Coder Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + exec ./coder agent Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: 2026-01-25 16:09:13.467 [info] agent is starting now ``` ## Type of Change - [ ] New module - [ ] New template - [x] Bug fix - [ ] Feature/enhancement - [ ] Documentation - [ ] Other ## Template Information <!-- Delete this section if not applicable --> **Path:** `registry/Excellencedev/templates/hetzner-linux` ## Testing & Validation - [] Tests pass (`bun test`) - [] Code formatted (`bun fmt`) - [x] Changes tested locally ## Related Issues <!-- Link related issues or write "None" if not applicable -->
Coder Registry
Registry Site • Coder OSS • Coder Docs • Official Discord
Coder Registry is a community-driven platform for extending your Coder workspaces. Publish reusable Terraform as Coder Modules for users all over the world.
Note
The Coder Registry repo will be updated to support Coder Templates in the coming weeks. You can currently find all official templates in the official coder/coder repo, under the
examples/templatesdirectory.
Overview
Coder is built on HashiCorp's open-source Terraform language to provide developers an easy, declarative way to define the infrastructure for their remote development environments. Coder-flavored versions of Terraform allow you to mix in reusable Terraform snippets to add integrations with other popular development tools, such as JetBrains, Cursor, or Visual Studio Code.
Simply add the correct import snippet, along with any data dependencies, and your workspace can start using the new functionality immediately.
More information about Coder Modules can be found here, while more information about Coder Templates can be found here.
Getting started
The easiest way to discover new modules and templates is by visiting the official Coder Registry website. The website is a full mirror of the Coder Registry repo, and it is where .tar versions of the various resources can be downloaded from, for use within your Coder deployment.
Note that while Coder has a baseline set of requirements for allowing an external PR to be published, Coder cannot vouch for the validity or functionality of a resource until that resource has been flagged with the verified status. All modules under the Coder namespace are automatically verified.
Getting started with modules
To get started with a module, navigate to that module's page in either the registry site, or the main repo:
In both cases, the main README contains a Terraform snippet for integrating the module into your workspace. The snippet for Cursor looks like this:
module "cursor" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/cursor/coder"
version = "1.0.19"
agent_id = coder_agent.main.id
}
Simply include that snippet inside your Coder template, defining any data dependencies referenced, and the next time you create a new workspace, the functionality will be ready for you to use.
Contributing
We are always accepting new contributions. Please see our contributing guide for more information.
For Maintainers
Guidelines for maintainers reviewing PRs and managing releases. See the maintainer guide for more information.
