Skip to main content
The widget’s look and behavior are set on the agent’s Appearance tab and delivered at runtime, so your hosted page and every embed key inherit the same appearance, live, with no change to the script tag on your site. A small set of visual basics can also be overridden inline on the script tag.

Where config comes from

Config is merged in this precedence (later wins):
The displayed identity is the exception. A named Karta always uses its Karta name; otherwise the widget uses the underlying agent’s name. Appearance and inline theme values cannot rename that server-resolved identity. The richer color, type, layout, and icon fields, and all behavior, come from the Appearance tab only; the inline path covers the basics under Inline overrides. If the runtime config fetch is unavailable, the widget falls back to defaults + data-* and never throws into your page.

Theme presets

Start from a preset on the Appearance tab - Karta (the default), Moss, or Cobalt. Each preset is a complete look (a full color set plus type and layout), so selecting one fills every field below. Override individual fields afterward to fine-tune, or keep the preset as is.

Theme fields

Set these on the Appearance tab. The fields marked (inline) can also be set with data-theme-* on the script tag (camelCase becomes kebab-case) or in karta("init", { theme: {...} }). Colors Shape & type Layout Content & chrome Icons. Each chrome glyph is customizable on the Appearance tab: iconSend, iconLauncher, iconExpand, iconCollapse (shrink), iconClose, and iconMenu. Each falls back to a default when unset.

Thinking animation

The active-turn footer can use:
  • The animated Karta mark.
  • Six Karta activity motions: Reading, Coding, Executing, Connecting, Coordinating, and Building.
  • Six tuned orb styles: Working, Searching, Solving, Listening, Composing, and Shaping.
  • A custom animated image.
These are visual branding choices rather than inferred agent state. Selecting Coding does not claim that the current activity is editing a file; the transcript’s activity rows remain the source of truth.
The dashboard clamps size to 16-32 CSS pixels and speed to 0.5-2. Set type: "custom" and customUrl to use an HTTP(S) animated GIF, WebP, or APNG; the asset controls its own playback speed. Invalid or failed custom assets fall back to the Karta mark. Animation is deliberately limited to a live foreground turn. Completed turns do not animate, and a finished turn with background tasks uses a static mark. With prefers-reduced-motion: reduce, every style (including custom animated images) becomes a static Karta mark.

Inline overrides

For a quick change without the dashboard, set the basics on the script tag. Inline data-theme-* attributes cover accent, accentForeground, position, colorScheme, launcherIcon, agentName, agentAvatar, greeting, suggestedPrompts, and showPoweredBy (plus consent); the init call accepts the same keys.
The richer color, layout, and icon fields, and all behavior, are set on the Appearance tab - they are not inline-overridable.

Behavior

Behavior is configured on the Appearance tab; it has no inline override.
  • Display modes. Whether the widget opens as a popup, full-size, or both (the visitor can expand a popup to full-size). The hosted chat page renders in the configured mode.
  • Transcript detail. Show or hide the agent’s reasoning, and choose how its tool activity appears: compact status rows, full details, or hidden. When tool activity is shown, you can independently include the raw tool input and the raw tool output. Final answers always show, so hiding these gives end users an answer-only view.
  • Sessions. Whether the widget reopens the visitor’s newest conversation when it loads (on by default). The resume runs only when the chat panel first opens, so a page view alone starts nothing. Turn it off to give every load a fresh conversation. Continuity follows the end-user identity your page provides (soft or verified); a visitor with no identity starts fresh.
  • Approvals. Show or hide the tool-approval prompt. When shown (the default), the visitor gets an Allow / Deny prompt each time the agent asks to run a tool that requires permission. When hidden, the visitor is not prompted: a tool that requires approval ends the turn with a brief notice after the hidden-approval timeout (default 30s). Hiding the prompt suppresses the question; it does not grant the tool. To let a tool run without prompting, pre-authorize it in the agent’s permissions and redeploy.

The embed key

Each pk_live_... key is managed on the Embed tab. The key ships in your page’s HTML; its blast radius is fenced by configuration, not secrecy. At mount the loader fetches the key’s appearance and limits from the runtime origin, gated by the browser’s real Origin. It returns the theme and feature flags only - never the allowed-origins list - so you can recolor the widget or change the greeting from the dashboard and it takes effect on the next load, with no code change on your site. Show an optional pre-chat disclosure before the first message - for example, to tell users the chat is AI-assisted and link your privacy policy. Configure it in the theme’s consent object, or inline on the script tag.
or via the theme object:
The disclosure is associated with the composer for screen readers (aria-describedby). See Security & privacy for what you should disclose.

Localization

Override the widget’s built-in strings with a locale map on the theme. Every key is optional and falls back to its English default, so you can localize only the strings you need.

Next

Command API & events

Drive the configured widget from your page.

Security & privacy

Origin allowlist, spend cap, and the data path in depth.