1. Choose the implementation source

BuiltInNative      - first-party CLR adapter
DeclarativeBundle  - manifest interpreted by the declarative engine
AuthoredComponent  - Wasm Component Model artifact compiled from project source

2. Build the implementation

vadyl connector build declarative --manifest connectors/stripe.json

{
  "implementationId": "impl_123",
  "surfaceKind": "GovernedConnectionAdapter",
  "artifactHash": "sha256:..."
}

3. Run conformance

vadyl connector conformance run --implementation impl_123

{
  "passed": true,
  "checks": [
    { "id": "wit.contract", "state": "passed" },
    { "id": "host-imports.closed-set", "state": "passed" },
    { "id": "secret-redaction", "state": "passed" }
  ]
}

4. Bind it to a project

vadyl connector binding create stripe \
  --implementation impl_123 \
  --secret STRIPE_SECRET_KEY=secret:STRIPE_SECRET_KEY \
  --allowed-host api.stripe.com

{
  "alias": "stripe",
  "state": "active"
}

5. Invoke through governed connection APIs

const charge = await ctx.connections.stripe.createCharge({
  amount: 2999,
  currency: "usd",
  customer: "cus_123",
  idempotencyKey: "charge:ord_123",
});