Skip to content

@slop-ai/client

@slop-ai/client is the main entry point for browser applications. It creates a provider, manages browser transports, and publishes descriptors registered by your framework adapter or vanilla code.

Terminal window
bun add @slop-ai/client
import { createSlop } from "@slop-ai/client";
const slop = createSlop({
id: "my-app",
name: "My App",
});
OptionTypeDescription
idstringunique provider id
namestringhuman-readable provider name
schemaobjectoptional typed schema for path inference
transports("postmessage" | "websocket")[]explicit transport list
desktopUrlboolean | stringconvenience alias for WebSocket publishing
websocketUrlboolean | stringenable a WebSocket transport and optionally provide the URL
postmessageDiscoverbooleancontrol <meta name="slop"> discovery for postMessage
websocketDiscoverbooleancontrol discovery metadata for WebSocket

Once created, the returned client exposes the provider API you use from adapters and direct integrations:

  • register(path, descriptor)
  • unregister(path)
  • scope(prefix)
  • flush()
  • stop()
  • asyncAction(...)

The package also exports:

  • createPostMessageTransport()
  • createWebSocketTransport()

Use these if you need manual transport composition instead of the defaults from createSlop().

const slop = createSlop({
id: "notes-app",
name: "Notes App",
transports: ["postmessage", "websocket"],
websocketUrl: true,
});
slop.register("notes", {
type: "collection",
props: { count: notes.length },
items: notes.map((note) => ({
id: note.id,
props: { title: note.title, pinned: note.pinned },
})),
});