Skip to main content

Install

npm install @polpo-ai/sdk @polpo-ai/react

Setup

import { PolpoProvider } from "@polpo-ai/react";

const root = createRoot(document.getElementById("root")!);

root.render(
  <PolpoProvider
    baseUrl={import.meta.env.VITE_POLPO_URL}
    apiKey={import.meta.env.VITE_POLPO_API_KEY}
  >
    <App />
  </PolpoProvider>
);

Chat with an agent

The useChat hook handles streaming, session management, tool call tracking, and abort in a single hook:
import { useState } from "react";
import { useChat } from "@polpo-ai/react";

export function Chat() {
  const [input, setInput] = useState("");
  const { messages, sendMessage, isStreaming, abort, newSession } = useChat({
    agent: "assistant",
  });

  const send = () => {
    if (!input.trim()) return;
    sendMessage(input);
    setInput("");
  };

  return (
    <div>
      {messages.map((m, i) => (
        <div key={i} className={m.role}>{m.content}</div>
      ))}
      <input value={input} onChange={e => setInput(e.target.value)} onKeyDown={e => e.key === "Enter" && send()} />
      <button onClick={send} disabled={isStreaming}>Send</button>
      <button onClick={abort} disabled={!isStreaming}>Stop</button>
      <button onClick={newSession}>New chat</button>
    </div>
  );
}

Live task dashboard

import { useTasks, useStats } from "@polpo-ai/react";

export function Dashboard() {
  const { tasks, isLoading } = useTasks();
  const { stats } = useStats();

  if (isLoading) return <div>Loading...</div>;

  return (
    <div>
      <div>
        <span>{stats?.pending ?? 0} pending</span>
        <span>{stats?.inProgress ?? 0} running</span>
        <span>{stats?.done ?? 0} done</span>
      </div>
      <ul>
        {tasks.map(t => (
          <li key={t.id}>{t.title}{t.status}</li>
        ))}
      </ul>
    </div>
  );
}

Environment variables

# .env
VITE_POLPO_URL=https://{project}.polpo.cloud
VITE_POLPO_API_KEY=sk_live_...
Never expose API keys in client-side code in production. Use a backend proxy or session-based auth to inject the key server-side.

Templates

Get started faster with pre-built templates. Browse all available templates at ui.polpo.sh/examples — these are also available in the polpo create wizard.