Quickstart
Get up and running with Harness SDK
Install
pnpm add harness-sdk @harness-sdk/react @assistant-ui/react-harness-sdk @assistant-ui/reactReact + assistant-ui
"use client";
import { useHarnessRuntime } from "@assistant-ui/react-harness-sdk";
import { HarnessWebsocketTransport } from "harness-sdk";
import { AssistantRuntimeProvider } from "@assistant-ui/react";
import { Thread } from "@/components/assistant-ui/thread";
export default function Page() {
const runtime = useHarnessRuntime({
transport: HarnessWebsocketTransport({
url: "ws://localhost:8787/ws?userId=demo",
}),
});
return (
<AssistantRuntimeProvider runtime={runtime}>
<Thread />
</AssistantRuntimeProvider>
);
}React (without assistant-ui)
"use client";
import { useHarness } from "@harness-sdk/react";
import { HarnessWebsocketTransport } from "harness-sdk";
export default function Page() {
const harness = useHarness({
transport: HarnessWebsocketTransport({
url: "ws://localhost:8787/ws?userId=demo",
}),
});
return (
<div>
<p>Status: {harness.state.status}</p>
{harness.state.messages.map((msg) => (
<div key={msg.id}>
<strong>{msg.role}:</strong> {msg.content}
</div>
))}
<button onClick={() => harness.send({ type: "submit", prompt: "Hello!" })}>
Send
</button>
</div>
);
}Vanilla (no framework)
import { Harness, HarnessWebsocketTransport } from "harness-sdk";
const harness = new Harness({
transport: HarnessWebsocketTransport({
url: "ws://localhost:8787/ws?userId=demo",
}),
});
harness.subscribe(() => {
console.log(harness.state);
});
harness.send({ type: "submit", prompt: "Hello!" });