1. Docs
  2. Infrastructure as Code
  3. Guides
  4. Building & Extending
  5. Providers
  6. Direct provider implementation

Direct provider implementation

    This section covers implementing Pulumi providers directly using the generated gRPC bindings—Layer 2 in the provider architecture.

    When to use direct implementation

    Direct implementation gives you full control over provider behavior without SDK opinions. Choose this approach when your language lacks a higher-level SDK (such as Python or TypeScript), when you need precise control over Check/Diff/Update behavior, when you’re building something unusual that doesn’t fit standard patterns, or when you want to understand exactly how providers work at the protocol level.

    What you’ll need

    You’ll need gRPC bindings for your language (generated from provider.proto), a hand-written schema defining your resources and their properties, and implementations of the provider interface methods.

    Trade-offs

    AspectDirect implementationHigher-level SDK
    ControlFullFramework-guided
    BoilerplateMoreLess
    SchemaHand-written JSONInferred from code
    Learning curveProtocol knowledgeSDK patterns

    Guides

    • Protocol reference - Complete gRPC method documentation
    • Python - Implement a provider in Python
    • Go - Implement a provider in Go without the SDK
    • TypeScript - Implement a provider in TypeScript
      Neo just got smarter about infrastructure policy automation