Buddy
v0.3.0 | MIT License
new: design previews deterministic sample qa

your ai
any website

a browser-side companion that points, clicks, talks, runs tours, and previews design changes on real pages. one script tag, any model.

press / to chat, ctrlV to talk, or ask buddy to restyle the page.

size (gzipped) ~63kb
framework agnostic
installation 1 line html
qa surface 4 app samples
try it live

one click. buddy takes over.

hit the button above and buddy walks through the page, previews a design change, and ends in the live customization playground.

primitive 01

contextual
live tours

hand buddy an array of selectors + copy. it spotlights each element in order — no heavy SaaS required.

primitive 02

spatial
context chat

the chat reads the page around the cursor and answers in context — it knows what the user is looking at.

primitive 03

voice
agent

talk to buddy with your voice. real-time streaming, natural interrupts, and it can act on what you say.

primitive 04

design
previews

ask for a calmer dashboard or a sharper checkout. buddy previews scoped css locally, then applies only when the user accepts.

any model

your ai, your rules.

plug in Claude, GPT, Gemini, Grok, or any streaming endpoint. keys stay server-side. buddy just renders.

design agent

restyle the page on demand.

buddy can preview css changes inside the browser, track the active style, and persist accepted changes locally. no extension required.

preview session-only css
before
noisy dashboard

dense cards, harsh alerts, heavy shadows

after
calmer dashboard

softer surfaces, clearer charts, readable risk states

agent-generated css, user-approved.

a server-side agent can propose the look, but buddy owns the DOM preview. the user sees the change first, then accepts, clears, or keeps iterating.

open sample apps
installation

drop it in.

copy the tiny html snippet, or paste the setup prompt into your coding agent and let it wire buddy into the app for you.

manual install

one script tag, one endpoint.

add the web component, point it at your server-side chat route, then register flows and page actions in your app code.

  1. add getbuddy with a script tag or package manager
  2. serve /api/chat from your backend
  3. register flows for tours, actions, and design previews
<!-- drop this anywhere -->
  <script type="module" src="https://unpkg.com/getbuddy"></script>

  <hey-buddy
    endpoint="/api/chat"
    accent="#ff6a3d"
    greeting="hey — need a hand?"
  ></hey-buddy>
# install
  bun add getbuddy

  # in your app
  import "getbuddy";

  const buddy = document.querySelector("hey-buddy");
  buddy.configure({
    endpoint: "/api/chat",
    tour: [
      { selector: "#pricing", body: "here's what it costs" },
    ]
  });
// works with react 19 custom elements
  import "getbuddy";

  export function Layout() {
    return (
      <hey-buddy
        endpoint="/api/chat"
        greeting="hey — need a hand?"
      />
    );
  }
one-click prompt

let your coding agent install buddy properly.

the prompt asks your agent to inspect the app first, choose native colors, add the component, create the chat route, register useful flows, and test the result.

01scan app structure, routes, design tokens
02install buddy and create server-side ai endpoint
03register onboarding flows, actions, and style previews
04run browser qa and verify the integration
any model

plug in any AI

buddy needs one streaming endpoint. here's a one-file route — swap the model line for any provider.

app/api/chat/route.ts
import { anthropic } from "@ai-sdk/anthropic";
import { streamText } from "ai";

export async function POST(req: Request) {
  const { messages, context } = await req.json();

  const result = streamText({
    model: anthropic("claude-sonnet-4-6"),
    system: `you're the friendly guide for ${context?.page}.`,
    messages,
  });

  return result.toDataStreamResponse();
}

key stays server-side — buddy just POSTs to /api/chat.

customize

make buddy yours. live.

tweak these controls — buddy in the corner reacts instantly. copy the snippet, paste into your html, done.

#ff6a3d
#ffffff
#ff6a3d
your-page.html