Where config comes from
Config is merged in this precedence (later wins):
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 withdata-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.
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. Inlinedata-theme-* attributes cover accent, accentForeground, position,
colorScheme, launcherIcon, agentName, agentAvatar, greeting,
suggestedPrompts, and showPoweredBy (plus consent); the
init call accepts the same keys.
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
Eachpk_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.
Pre-chat consent
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’sconsent object, or inline on the script tag.
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 alocale 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.

