Connector

A connector implements one of five capability interfaces: payment, storage, notification, auth-provider, or mailbox. Once approved, every Vincia site that needs that capability can install your connector. The flag value auth-provider is what the CLI expects; on the marketplace and in user-facing copy, the capability is called sign-in.

Files in a connector

A minimal payment connector

import { defineConnector } from '@vincia/sdk/connector';
import type { PaymentProvider } from '@vincia/sdk/connector';

export default defineConnector<PaymentProvider>({
  id: 'my-payment',
  capability: 'payment',
  version: '0.1.0',
  implementation: {
    async charge(ctx, params) {
      const res = await ctx.outbound.fetch('https://api.example.com/charge', {
        method: 'POST',
        body: JSON.stringify(params),
      });
      return await res.json();
    },
    async refund(ctx, params) {
      // ...
    },
  },
});

Manifest

{
  "id": "my-payment",
  "version": "0.1.0",
  "tier": "T1",
  "capability": "payment",
  "scopes_required": ["outbound.fetch:api.example.com"],
  "resource_budget": { "cpu_ms": 5000, "memory_mb": 64 }
}

The manifest is your declaration of intent — what scopes you need, what caps you'll respect. The LLM gate verifies your code actually stays inside them.

Develop and publish

vincia test
vincia dev
vincia publish --dry-run
vincia publish

What gets reviewed

Next