payload-agent

Beta

Manage your Payload content straight from chat.

An AI agent inside your Payload instance - your team queries, edits, and translates content from Slack, Telegram and more.

View on GitHub

Integrations

Plug in any channel.
Bring any model.

Chat SDK carries the conversation; TanStack AI supplies the brain. Swap either side without rewriting your agent.

Chat SDK

Lives where your team works

Telegram
WhatsApp
Slack
Discord
Microsoft Teams
Google Chat
iMessage
Messenger

Plus GitHub, Linear, and custom adapters.

TanStack AI

Bring your own model

OpenAI
Anthropic
Gemini
Grok
Groq
Ollama
OpenRouter

Plus 300+ models via OpenRouter.

Code Mode

Most agents call tools one by one. payload-agent writes TypeScript.

Code Mode by Tanstack AI gives the model a typed API and ability to write TypeScript. It runs in a sandbox against your real schema, so multi-step work finishes in one turn instead of a round-trip per call.

MCP · tool calls
3 / 19
external_find · products · draft
18 docs · back to model
external_update · #1
ok · back to model
external_update · #2
ok · back to model
external_update · #3
ok · back to model
+ 15 more calls …
19 Round-trips 19 model passes
TanStack AI · code-mode
done
const drafts = await external_find({
collection: "products" ,
where: { _status: "draft" },
})
18 docs
await Promise.all(drafts.docs.map((p) =>
external_update({
collection: "products" ,
id: p.id, data: { _status: "published" } })))
18 published · one turn
1 Execution one model pass

Better performance, one model pass instead of nineteen - faster replies, a fraction of the tokens, and the types keep every call safe.

payload.config.ts
import { anthropicText } from "@tanstack/ai-anthropic";
import { createTelegramAdapter } from "@chat-adapter/telegram";
import { payloadAgentPlugin } from "payload-agent";

export default buildConfig({
  plugins: [
    payloadAgentPlugin({
      adapters: { telegram: createTelegramAdapter() },
      agent: {
        adapter: anthropicText("claude-sonnet-4-6"),
        systemPrompt: "Be concise. No emojis.",
      },
    }),
  ],
});