assistant-ui Cloud
SkillFiles & storageGuide for assistant-cloud persistence and authorization. Use when setting up thread persistence, file uploads, or authentication.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the assistant-ui Cloud skill
What this skill tells your AI
The instructions your AI receives, as published by utopusc/livinity-io in .agents/skills/cloud/SKILL.md and read by ahel’s review.
Always consult assistant-ui.com/llms.txt for latest API.
Cloud persistence for threads, messages, and files.
References
- ./references/persistence.md -- Thread and message persistence
- ./references/authorization.md -- Authentication patterns
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
cloudto runtime - Check authentication
Auth errors
- Verify
authTokenreturns valid token - Check
baseUrlis correct
Signals
- GitHub stars
- 74
- Forks
- 3
- Last commit
- Aug 2026
- Hacker News mentions
- 20
ahel recommends instead
Advanced
- Catalog kind
- skill
- Gateway key
cloud-utopusc- Source
- github.com/utopusc/livinity-io