Provider Support
Oxid works with ALL Terraform providers out of the box. It uses the same tfplugin5/6 gRPC protocol, so every provider in the Terraform registry is compatible.
How Providers Work
Terraform providers are standalone binaries that implement a gRPC interface (tfplugin5 or tfplugin6 protocol). Oxid communicates with these providers using the exact same protocol - no compatibility layer, no translation. If a provider works with Terraform, it works with Oxid.
Oxid ──gRPC──→ terraform-provider-aws Oxid ──gRPC──→ terraform-provider-google Oxid ──gRPC──→ terraform-provider-azurerm Oxid ──gRPC──→ terraform-provider-kubernetes Oxid ──gRPC──→ (any Terraform provider)
Declaring Providers
Providers are declared in your .tf files using the standard required_providers block:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
google = {
source = "hashicorp/google"
version = "~> 5.0"
}
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.0"
}
}
}Provider Download
During oxid init, providers are downloaded from registry.terraform.io and cached locally:
$ oxid init Initializing Oxid workspace... Downloading hashicorp/aws v5.67.0 for darwin_arm64... Downloading hashicorp/google v5.12.0 for darwin_arm64... Providers cached in .oxid/providers/ Oxid initialized successfully.
Provider Caching
Provider binaries are cached in the .oxid/providers/ directory, organized by registry, namespace, and version:
.oxid/providers/
registry.terraform.io/
hashicorp/
aws/
5.67.0/
terraform-provider-aws
google/
5.12.0/
terraform-provider-google
integrations/
github/
6.0.0/
terraform-provider-githubOn subsequent runs, Oxid reuses cached providers and only downloads when the version changes or the binary is missing.
Supported Providers
Oxid supports every provider in the Terraform registry. Here are some commonly used ones:
Cloud providers
- AWS -
hashicorp/aws - Google Cloud -
hashicorp/google - Azure -
hashicorp/azurerm - DigitalOcean -
digitalocean/digitalocean - Hetzner -
hetznercloud/hcloud
Infrastructure
- Kubernetes -
hashicorp/kubernetes - Helm -
hashicorp/helm - Docker -
kreuzwerker/docker
Services
- GitHub -
integrations/github - Cloudflare -
cloudflare/cloudflare - Datadog -
DataDog/datadog - PagerDuty -
PagerDuty/pagerduty
Provider Configuration
Configure providers with the standard provider block:
provider "aws" {
region = "us-west-2"
profile = "production"
}
provider "google" {
project = "my-gcp-project"
region = "us-central1"
}Providers also read their standard environment variables (e.g., AWS_ACCESS_KEY_ID, GOOGLE_CREDENTIALS, ARM_SUBSCRIPTION_ID).
Protocol Details
Oxid supports both major versions of the Terraform plugin protocol:
- tfplugin5 - Used by most existing providers (AWS, GCP, Azure, etc.)
- tfplugin6 - Newer protocol used by some recent providers
Protocol negotiation is automatic - Oxid detects which protocol a provider uses and communicates accordingly.
proto/tfplugin5.proto and proto/tfplugin6.proto during the Oxid build process.