Getting Started

Go from zero to a working AI chat widget in under a minute.

There are two ways to use Kody: hosted (we run the server) or self-hosted (you run everything). Both require your own AI API key.

Hosted (quickest)

Sign up, create a site in the dashboard, copy the script tag. No server to manage.

Sign Up Free

Self-Hosted

Recommended

Full control, unlimited sites, MIT license. Requires running the Kody server yourself.

Self-Hosting Guide

Hosted: 3 Steps

1. Create an account

Sign up with your email and verify it. You'll get access to the Dashboard where you can create and manage sites.

2. Create a site

In the dashboard, click Create Site. Enter a site ID, your website URL as an allowed origin, your AI provider details (base URL, API key, model), and configure the topics your assistant should cover.

3. Copy the embed code

After creating the site, copy the script tag from the site details page and paste it into your website:

<script
  src="https://api.kody.codai.app/widget.js"
  data-site-id="your-site-id"
  async
></script>

That's it. The widget will appear as a chat bubble on your site.

Self-Hosted: Quick Overview

Follow the Self-Hosting guide to deploy the Kody server, then create a site through the built-in admin dashboard at http://your-server:3456/admin or via the API:

# Log in
curl -X POST http://localhost:3456/api/admin/login \
  -H "Content-Type: application/json" \
  -c cookies.txt \
  -d '{"email": "admin@example.com", "password": "your-password"}'

# Create a site
curl -X POST http://localhost:3456/api/admin/sites \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{
    "siteId": "my-site",
    "allowedOrigins": ["https://example.com"],
    "ai": {
      "baseUrl": "http://localhost:11434/v1",
      "apiKey": "ollama",
      "model": "llama3"
    },
    "guardrails": {
      "allowedTopics": ["general"],
      "topicDescription": "General questions about our product"
    }
  }'

Then embed the widget pointing at your own server:

<script
  src="https://your-server.com/widget.js"
  data-site-id="my-site"
  async
></script>

Client-Side Overrides

For more control, set window.KodyConfig before the script loads to override branding values on the current page:

<script>
  window.KodyConfig = {
    siteId: "my-site",
    position: "bottom-left",
    name: "Support Bot",
    primaryColor: "#10b981"
  };
</script>
<script src="https://api.kody.codai.app/widget.js" async></script>

Widget Features

  • Shadow DOM isolation — widget styles never leak to or from your page
  • Agent mode — your assistant can call tools, search knowledge, and create tickets autonomously
  • RAG retrieval — automatic chunking and vector search for accurate answers from large knowledge bases
  • Smart page scraping — Playwright-powered CSR rendering extracts content from JavaScript-heavy pages
  • Markdown rendering — bold, italic, inline code, code blocks, links, and lists
  • SSE streaming — responses stream in real-time
  • Output scrubbing — AI provider names are replaced with your configured assistant name
  • Ticket creation — via agent tool or widget form, integrated with Jira, GitHub, Linear, email, and webhooks
  • Mobile optimized — fullscreen on mobile with iOS keyboard handling, safe area insets, and swipe-to-close
  • Auto-growing textarea — input field expands as users type
Auto-detection: Kody probes your AI backend to detect support for tool calling and embeddings. Agent mode, RAG, and context stuffing are selected automatically based on what your backend supports — no manual configuration needed beyond enabling the features.

Next Steps

  • Configuration — full schema reference for branding, AI, guardrails, and more
  • Agent Tools — enable tool calling, custom tools, and autonomous ticket creation
  • Knowledge Sources — give your assistant context with RAG and smart scraping
  • Ticket Providers — connect Jira, GitHub, Linear, or a webhook
  • Security — how guardrails and prompt injection protection work