@upstash/agentkit-ai-sdk has 7,993 recorded weekly downloads on npm, a decrease of 33.6% over the past 30 days.
It ranks #979 of 2,256 tracked npm listings by weekly downloads.
Over 90 days, weekly downloads changed by +114086%.
PluginStats has 121 daily observations since Jun 19, 2026; the latest is from Oct 17, 2026.
About @upstash/agentkit-ai-sdk
@upstash/agentkit-ai-sdk
Vercel AI SDK adapter for Upstash AgentKit — drop-ins for generateText / streamText. redis defaults to Redis.fromEnv(), so you import only from this package.
| Import | Feature |
| createChatHistory | Durable chat history on Redis Search — save, list, and $smart-search a user's transcripts. | | createMemoryTools | recall_memory + save_memory tools so the model reads and writes long-term memory. | | createSearchTools | search / aggregate / count tools over a Redis Search index (this is how you do RAG). | | createRateLimit | A configured Upstash Ratelimit to call before the model. | | cachedTools | Memoize a map of AI SDK tools' results in Redis. |
Chat history
A Redis-backed ChatHistory, the durable source of truth for your conversations. userId comes from your auth session; chatId is the useChat id that the client posts. Save the full transcript from your route's onFinish:
To load a chat, take chatId from the page route and userId from the session, then seed useChat:
Config & how it's stored
Each chat is one JSON doc at agentkit:chat:: (keyed per user, so two users can't collide on a sessionId), indexed over userId + sessionId (filters) and userMessages + modelMessages ($smart fuzzy text); the raw messages array rides along unindexed. saveChat overwrites the whole array (no delta merge) — useChat sends the full conversation. Other methods: getChat / deleteChat ({ userId, sessionId }), listChats / searchChats ({ userId }).
Security: userId is the tenant boundary
Every method takes a single object; userId is required, non-empty, and may not contain :. Derive it from a verified server-side auth source — the subject/user id from your auth provider (Clerk, Auth.js/NextAuth, Supabase Auth, Auth0, …) — and **never from a client-supplied header, query param, or body** (read it from the session in your route, not the request the browser controls). A chat can't be read or overwritten under a different userId.
Agent memory
recall_memory and save_memory tools so the model reads and writes its own long-term memory.
Options & the userId tenant boundary
• userId _(required)_ — a string, or (input, options) => string. • redis — defaults to Redis.fromEnv(). • topK — max memories recall returns. • minScore — BM25 relevance floor. • recallToolName / saveToolName — override the tool names.
userId is the only tenant boundary (required, non-empty, no :). **Derive it from a verified server-side auth source** (Clerk, Auth.js/NextAuth, Supabase Auth, Auth0, …) — never a client-supplied value. Memories are stored at agentkit:memory::.
Search tools
search / aggregate / count over an Upstash Redis Search index; the model-facing descriptions are generated from your schema. Use these over your own documents for RAG.
Options
• schema _(required)_ — built with s from @upstash/redis. • redis — defaults to Redis.fromEnv(). • indexName — defaults to "agentkit:search". • prefix — key prefix for indexed JSON docs (defaults to ":"). • defaultLimit — default page size for search (10).
The index is created (and waitIndexing-ed) reactively on first use — no setup step.
Rate limiting
A configured Upstash Ratelimit. Call .limit(identifier) before the model and short-circuit when over the limit.
Options
• limiter _(required)_ — e.g. Ratelimit.slidingWindow(20, "1 m") or fixedWindow(...). • redis — defaults to Redis.fromEnv(). • prefix — base key prefix; keys are : (default agentkit:rateLimit).
There is no model wrapper; pass a per-user identifier to .limit() to throttle per user.
Tool cache
Memoize a map of AI SDK tools' results in Redis. Each tool is cached under its map key, scoped to userId.
Options
Pass tools built with the AI SDK's tool() (so each keeps full input/output inference). Second arg:
• userId _(required)_ — a string, or (input, options) => string; scopes every entry to this user. • redis — defaults to Redis.fromEnv(). • ttlSeconds — default per-result TTL for every tool.
Cache keys are agentkit:toolCache::: — the toolName is the map key, so you never pass a name yourself.
Telemetry
The SDK reports its name and version to Upstash as a header on the requests made by the redis client, so we know which SDK versions are in use. No personal data, keys or identifiers are collected. The header looks like @upstash/redis@1.38.0,@upstash/agentkit-sdk@0.2.0,@upstash/agentkit-ai-sdk@0.2.0.
Opt out with enableTelemetry: false on any helper:
or by setting the UPSTASH_DISABLE_TELEMETRY environment variable. Disabling telemetry on the redis client itself also disables it here.
Testing
Tests run against a real Upstash Redis (only LLM calls are mocked). Set UPSTASH_REDIS_REST_URL / UPSTASH_REDIS_REST_TOKEN (suites skip when absent).
License
MIT
Description from the npm listing.
- upstash
- ai-sdk
- vercel
- ai
- agent
- memory
- rag
- llm
- cache
- tools
Where @upstash/agentkit-ai-sdk sits in the listing
Each band is one page of 20. Weekly downloads on a log scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.
Charts
Images: 30d · 1y · all time · 1600×900 dark
Adoption over time
7/30/90-day growth
Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.
Recent observations
Full history (121)Similar npm AI SDKs plugins
Data source
Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.
Listing: https://www.npmjs.com/package/@upstash/agentkit-ai-sdk. First seen Oct 16, 2026; last successful collection Oct 19, 2026. See the methodology.