Svelte components,
connected.

Build interactive flows with your own components. Typed connections, animated edges, and an editor that feels like part of your app.

Install in your Svelte 5 app
pnpm add kaykay
A little flow. A real editor.Svelte 5 + kaykay
Request
Transform
Response
Event log

Tab to a node, Enter to select, arrow keys to move. Escape to finish.

Svelte 5 native reactivity Typed ports compatible connections Zero external runtime dependencies

See what connects.

Different interfaces. The same canvas underneath.

Explore the playground

Your first connection.

Two files. Your Svelte component becomes a node; handles tell the canvas where connections belong.

  1. Install kaykay in a Svelte 5 app.
  2. Add both files in the same folder.
  3. Render App.svelte to see the flow.
Follow the full guide
HelloSvelte
<script lang="ts">
  import { Canvas } from 'kaykay';
  import type { FlowEdge, FlowNode, NodeTypes } from 'kaykay';
  import CustomNode from './CustomNode.svelte';

  const nodeTypes: NodeTypes = { custom: CustomNode };
  const nodes: FlowNode[] = [
    { id: 'source', type: 'custom', position: { x: 30, y: 80 },
      data: { label: 'Hello' } },
    { id: 'target', type: 'custom', position: { x: 250, y: 80 },
      data: { label: 'Svelte' } }
  ];
  const edges: FlowEdge[] = [{
    id: 'hello-svelte',
    source: 'source', source_handle: 'out',
    target: 'target', target_handle: 'in',
    color: '#806000',
    animated: true,
    animation: { pattern: 'dots', color: '#FFDC58', speed: 48 }
  }];
</script>

<div class="editor">
  <Canvas {nodes} {edges} {nodeTypes} />
</div>

<style>
  .editor { height: 360px; }
</style>

Make it your own.

Pick the part you want to build next.