Velt Chat SDK Adapter Best Practices
Comprehensive guide for building bots that integrate with Velt comment threads via the Chat SDK Adapter (@veltdev/chat-sdk-adapter). The adapter bridges the cross-platform Chat SDK with Velt's comment threading system, so a single bot can run on Velt, Slack, Discord, and other Chat SDK-compatible platforms.
When to Apply
Reference these guidelines when:
- Building a bot that responds to @-mentions in Velt comment threads
- Setting up webhook routes to receive Velt comment/reaction events
- Configuring
createVeltAdapterwith proper credentials and user resolution - Handling reactions (read on managed Velt, write requires self-hosting)
- Deploying a Velt bot to Vercel, other serverless platforms, or a Node.js server
- Building an AI agent that streams LLM replies into Velt threads
Core Architecture
The adapter is server-side only — it runs in your API routes, not in the browser. There is no VeltProvider or authProvider involved (those are client-side patterns for the Velt React SDK). The adapter authenticates via VELT_API_KEY and auto-generates auth tokens scoped to each organization.
The flow:
- User @-mentions the bot in a Velt comment thread
- Velt sends a webhook to your API endpoint
- The adapter verifies the signature, parses the event, and dispatches to your handler
- Your handler calls
thread.post()to reply (the adapter posts via Velt's REST API)
Required packages:
npm install @veltdev/chat-sdk-adapter chat @chat-adapter/state-memory
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Core | CRITICAL | core- |
| 2 | Webhook | CRITICAL | webhook- |
| 3 | Events | HIGH | events- |
| 4 | Users | HIGH | users- |
| 5 | Reactions | MEDIUM | reactions- |
| 6 | Deployment | MEDIUM | deployment- |
Quick Reference
1. Core (CRITICAL)
core-setup-overview- server-side only, lazygetChat()singleton, Chat SDK to Velt mappingcore-adapter-creation-createVeltAdapteroptions and env-var fallbacks; optionalVELT_AUTH_TOKEN
2. Webhook (CRITICAL)
webhook-route-setup- Node.js runtime,force-dynamic,waitUntil; raw body for non-Fetch frameworkswebhook-required-events-comment.add,comment_annotation.add,comment.reaction_add,comment.reaction_deletewebhook-version-config- Advanced v2 (whsec_..., default) vs Basic v1 (webhookVersion: "v1")
3. Events (HIGH)
events-on-new-mention-thread.subscribe()thenthread.post(), streamed AI repliesevents-on-subscribed-message- follow-ups filtered bymessage.isMention, thread history viafetchMessagesevents-on-reaction- read-onlyonReactionevent fields
4. Users (HIGH)
users-bot-config- stable, uniquebotUserId;Chat.userNamematchesbotUserNameusers-resolve-pattern- index-alignedresolveUserswithundefinedfor unknown IDs
5. Reactions (MEDIUM)
reactions-read-only- reading reactions needs only the webhook eventsreactions-write-self-hosted-selfHostingConfig.reactionsServicefrom@veltdev/nodesdk.selfHosting.getReactions()
6. Deployment (MEDIUM)
deployment-dev-tunnel- public tunnel in development, production URL, persistent statedeployment-env-vars- credentials in environment variables
How to Use
Read individual rule files for detailed explanations and code examples:
rules/shared/core/core-setup-overview.md
rules/shared/webhook/webhook-route-setup.md
rules/shared/events/events-on-new-mention.md
Each rule file contains:
- Brief explanation of why it matters
- Incorrect and correct code examples
- Verification checklist
- Source pointers to official docs
Compiled Documents
AGENTS.md— Compressed index of all rules with file paths (start here)AGENTS.full.md— Full verbose guide with all rules expanded inline