Skip to content

Extensions

Extensions connect Kiket to your tools and processes. Build custom integrations in any language, host them anywhere, and publish to the marketplace.

The Federated Model

Unlike traditional integrations that run inside the platform, Kiket extensions run on your infrastructure:

graph LR
    subgraph "Kiket Platform"
        A[Event Engine] -->|Signed Webhook| B((Your Extension))
    end

    subgraph "Your Infrastructure"
        B --> C[Your Database]
        B --> D[External APIs]
        B --> E[Internal Services]
    end

    B -->|API Calls| A

    style A fill:#7C3AED,stroke:#fff,color:#fff
    style B fill:#F59E0B,stroke:#fff,color:#000

Why federated?

  • Data sovereignty — Sensitive data stays in your network
  • No vendor lock-in — Your code runs on your infrastructure
  • Any language — Python, Node.js, Ruby, Go, Java, .NET, or anything that speaks HTTP
  • Any hosting — AWS Lambda, Vercel, Cloud Run, Kubernetes, or bare metal

How Extensions Work

sequenceDiagram
    participant Kiket as Kiket Platform
    participant Ext as Your Extension
    participant API as External API

    Note over Kiket: Event occurs (issue.created)
    Kiket->>Ext: POST /webhook (signed payload)
    Ext->>Ext: Verify signature
    Ext->>API: Sync to external system
    API-->>Ext: Response
    Ext->>Kiket: API call (update issue)
    Kiket-->>Ext: 200 OK
  1. Events trigger webhooks — Issue changes, comments, transitions, etc.
  2. Your extension processes — Verify signature, handle business logic
  3. Call back to Kiket — Update issues, add comments, trigger workflows

Quick Start

1. Create the Manifest

Every extension starts with a manifest:

# extension.yaml
manifest_version: 2
extension:
  key: my-sync
  name: My Sync Extension
  version: 1.0.0
  runtime: external

triggers:
  - event: issue.created
    handler: /webhook/issue-created

settings:
  - key: api_key
    label: API Key
    type: secret
    required: true

2. Build the Handler

from kiket_sdk import Extension, verify_webhook

ext = Extension()

@ext.webhook("/webhook/issue-created")
async def handle_issue_created(event):
    issue = event.issue
    # Your logic here
    return {"status": "ok"}
import { Extension } from '@kiket/sdk';

const ext = new Extension();

ext.webhook('/webhook/issue-created', async (event) => {
  const { issue } = event;
  // Your logic here
  return { status: 'ok' };
});
require 'kiket_sdk'

class MyExtension < Kiket::Extension
  webhook '/webhook/issue-created' do |event|
    issue = event.issue
    # Your logic here
    { status: 'ok' }
  end
end

3. Deploy & Register

# Package your extension
kiket extensions package

# Register with Kiket
kiket extensions register

# Install in your project
kiket extensions install my-sync

SDKs

Official SDKs handle signature verification, API calls, and common patterns:

pip install kiket-sdk
npm install @kiket/sdk
gem install kiket_sdk
go get github.com/kiket-dev/sdk-go
<dependency>
  <groupId>dev.kiket</groupId>
  <artifactId>kiket-sdk</artifactId>
</dependency>
dotnet add package Kiket.Sdk

CLI Commands

# Install the CLI
gem install kiket-cli

# Authenticate
kiket auth login

# Scaffold a new extension
kiket extensions scaffold

# Development commands
kiket extensions lint      # Validate manifest
kiket extensions test      # Run tests
kiket extensions replay    # Replay webhooks locally
kiket extensions package   # Build for deployment

# Publishing
kiket extensions register  # Register with Kiket
kiket extensions publish   # Publish to marketplace

In This Section

  • Manifest Reference

    Complete specification for extension.yaml

    Manifest

  • Setup Wizard

    Guided configuration for extension users

    Setup wizard

  • Secret Store

    Secure credential management

    Secrets

  • Packaging & Sandbox

    Build and test your extension

    Packaging

  • Delivery Contract

    Webhook format and guarantees

    Contract

  • Marketplace

    Publish and distribute extensions

    Marketplace


Advanced Topics

  • Custom Data Modules

    Extend Kiket's data model with custom fields

    Custom data

  • Federation Model

    Deep dive into the federated architecture

    Federation

  • Version Lifecycle

    Versioning, deprecation, and upgrades

    Versioning

  • Publishing Workflow

    From development to production

    Publishing


Get Help