{botName} is
diff --git a/app/src/components/approvals/waiting.tsx b/app/src/components/approvals/waiting.tsx
index eb3edd1229..217d61a72f 100644
--- a/app/src/components/approvals/waiting.tsx
+++ b/app/src/components/approvals/waiting.tsx
@@ -9,7 +9,7 @@ import {
import { useMutation, useQuery } from "@tanstack/react-query";
import { useNavigate } from "@tanstack/react-router";
import { Fragment, type ReactNode, useState } from "react";
-import { BotOrb } from "@/components/agents/bot-orb";
+import { BotKite } from "@/components/agents/kite/kite";
import { PageRows } from "@/components/layout/page-shell";
import { BoardRow } from "@/components/needs-you/board-row";
import { Button } from "@/components/ui/button";
@@ -360,7 +360,12 @@ function AnswerDialog({
{agent.title}
diff --git a/app/src/components/bots/bot-roster.tsx b/app/src/components/bots/bot-roster.tsx
index b3ad2cba60..7fff0b9f44 100644
--- a/app/src/components/bots/bot-roster.tsx
+++ b/app/src/components/bots/bot-roster.tsx
@@ -10,6 +10,7 @@ import { Fragment, useState } from "react";
import { AbstractAvatar } from "@/components/agents/abstract-avatar";
import {
attentionSummary,
+ kiteStateOf,
waitingOnYou,
} from "@/components/bot-profile/attention";
import {
@@ -201,7 +202,12 @@ function RosterRow({
size="sm"
>
{card.name}
diff --git a/app/src/components/onboarding/demos/welcome-demo.tsx b/app/src/components/onboarding/demos/welcome-demo.tsx
index 90b0a306fe..6919886864 100644
--- a/app/src/components/onboarding/demos/welcome-demo.tsx
+++ b/app/src/components/onboarding/demos/welcome-demo.tsx
@@ -1,6 +1,6 @@
import { IconArrowUp, IconMicrophone, IconPlus } from "@tabler/icons-react";
import { useEffect, useState } from "react";
-import { DemoOrb } from "@/components/onboarding/demo-orb";
+import { DemoKite } from "@/components/onboarding/demo-kite";
import { cn } from "@/lib/utils";
import { DemoStage } from "../demo-stage";
@@ -40,14 +40,14 @@ function useTyped(text: string, active: boolean): string {
}
/**
- * Welcome's picture: OpenBot's orb listening while a request is typed, then working on it.
+ * Welcome's picture: OpenBot's kite listening while a request is typed, then working on it.
*
* A DRAWING OF THE COMPOSER, NOT THE COMPOSER. The real one reads its text once, when it mounts,
* so it cannot be typed into from outside; and a live editor in a picture would be one more thing
* to tab to. This is its outline: the same card, the same buttons, and the words arriving.
*
* Three beats: typing, handed off and working, done. With reduced motion it is the typed request
- * with the orb listening.
+ * with the kite listening.
*/
export function WelcomeDemo() {
return (
@@ -80,7 +80,7 @@ function WelcomeScene({
const state = typing ? "listening" : beat === 1 ? "thinking" : "done";
return (
<>
- You can change your name later in Settings.