cloud

Cloud persistence for threads, messages, and files with flexible authentication. Supports three authentication modes: JWT tokens (recommended), API keys for server-side use, and anonymous access for public applications Provides thread operations (list, create, update, delete) and message retrieval through a unified cloud API Includes presigned URL generation for secure file uploads with public URL access Integrates directly with assistant-ui runtime via the AssistantCloud class and AssistantChatTransport

INSTALLATION
npx skills add https://github.com/assistant-ui/skills --skill cloud
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

assistant-ui Cloud

Always consult assistant-ui.com/llms.txt for latest API.

Cloud persistence for threads, messages, and files.

References

Installation

npm install assistant-cloud

Quick Start

import { AssistantCloud } from "assistant-cloud";

import { useChatRuntime, AssistantChatTransport } from "@assistant-ui/react-ai-sdk";

import { AssistantRuntimeProvider } from "@assistant-ui/react";

import { Thread } from "@/components/assistant-ui/thread";

import { ThreadList } from "@/components/assistant-ui/thread-list";

const cloud = new AssistantCloud({

  baseUrl: process.env.NEXT_PUBLIC_ASSISTANT_BASE_URL,

  authToken: async () => getAuthToken(),

});

function Chat() {

  const runtime = useChatRuntime({

    transport: new AssistantChatTransport({ api: "/api/chat" }),

    cloud,

  });

  return (

    <AssistantRuntimeProvider runtime={runtime}>

      <ThreadList />

      <Thread />

    </AssistantRuntimeProvider>

  );

}

Authentication Options

// JWT Token (recommended)

const cloud = new AssistantCloud({

  baseUrl: process.env.NEXT_PUBLIC_ASSISTANT_BASE_URL,

  authToken: async () => session?.accessToken,

});

// API Key (server-side)

const cloud = new AssistantCloud({

  baseUrl: process.env.ASSISTANT_BASE_URL,

  apiKey: process.env.ASSISTANT_API_KEY,

  userId: user.id,

  workspaceId: user.workspaceId,

});

// Anonymous (public apps)

const cloud = new AssistantCloud({

  baseUrl: process.env.NEXT_PUBLIC_ASSISTANT_BASE_URL,

  anonymous: true,

});

Cloud API

// Thread operations

const threads = await cloud.threads.list();

await cloud.threads.create({ title: "New Chat" });

await cloud.threads.update(threadId, { title: "Updated" });

await cloud.threads.delete(threadId);

// Message operations

const messages = await cloud.threads.messages(threadId).list();

// File uploads

const { signedUrl, publicUrl } = await cloud.files.generatePresignedUploadUrl({

  filename: "document.pdf",

});

await fetch(signedUrl, { method: "PUT", body: file });

Environment Variables

NEXT_PUBLIC_ASSISTANT_BASE_URL=https://api.assistant-ui.com

ASSISTANT_API_KEY=your-api-key  # Server-side only

Common Gotchas

Threads not persisting

  • Pass cloud to runtime
  • Check authentication

Auth errors

  • Verify authToken returns valid token
  • Check baseUrl is correct
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card