Skip to content
Managed resources

Managed resources

Every resource the coderd Terraform provider supports is exposed as a managed resource. Each kind below is served twice: cluster-scoped under the group shown, and namespaced under the same group with .m. inserted — for example iam.coderd.crossplane.io and iam.coderd.m.crossplane.io.

All managed resource kinds are at v1alpha1; the ProviderConfig kinds are at v1beta1.

iam.coderd.crossplane.io

KindTerraform resource
Organizationcoderd_organization
OrganizationGroupSynccoderd_organization_group_sync
OrganizationSyncSettingscoderd_organization_sync_settings
Groupcoderd_group
Usercoderd_user

template.coderd.crossplane.io

KindTerraform resource
Templatecoderd_template

deployment.coderd.crossplane.io

KindTerraform resource
Licensecoderd_license
WorkspaceProxycoderd_workspace_proxy
ProvisionerKeycoderd_provisioner_key
OAuth2ProviderSettingscoderd_oauth2_provider_settings

agents.coderd.crossplane.io

KindTerraform resource
AIProvidercoderd_ai_provider
Modelcoderd_agents_model
DefaultModelcoderd_agents_default_model
SystemPromptcoderd_agents_system_prompt
MCPServercoderd_agents_mcp_server

Field schemas

This page is deliberately a map, not a reference. The complete, always-current field schema of every kind lives in the CRDs themselves:

kubectl explain organization.iam.coderd.crossplane.io --recursive

or read package/crds/ in the repository. For what each field means, the coderd Terraform provider documentation is the upstream source the schema is generated from.

Cross-resource references

Where a field takes the ID of another Coder object, the generated kind also accepts a reference to the managed resource that owns it, so Crossplane resolves the ID for you:

apiVersion: iam.coderd.crossplane.io/v1alpha1
kind: Group
metadata:
  name: platform
spec:
  forProvider:
    name: platform
    membersRefs:
      - name: alice
      - name: bob

membersRefs resolves against User resources. Which fields have a reference is decided in config/resources/resources.go.