@keenable/convex installs into a Convex app’s convex.config.ts and exposes search and fetch as component actions behind a typed client. Both env vars are optional, so registering the component is the whole setup — no key, no env wiring before the first call.
→ @keenable/convex on npm
Install
Install the package
Register the component
Call it from your own action
Wrap the component in an app-owned action rather than exposing it directly — that wrapper is where your auth and rate limiting belong.toContext renders results as numbered sources and drops whole sources at the budget rather than cutting one mid-page. keenable.fetch(ctx, { url }) returns the page as markdown with a truncated flag, so a caller can tell a whole page from one the budget cut.
Add a key to lift the rate limit
The component cannot readprocess.env — Convex passes env vars in through the app, so declare the key on the app and bind it:
Binding a key removes the hourly request cap. Without one, calls run on the shared public tier at lower rate limits.
Parameters
search takes site, publishedAfter / publishedBefore, acquiredAfter / acquiredBefore, snippetMaxLength (default 1000) and maxResults. fetch takes contentMaxLength (default 10000).