Resources
Changelog
What changed in Telem, newest first: the API, the SDKs, the agent plugins, the installer and the MCP server, with the version that ships each change.
This page starts with the state each package was in when this documentation site launched. Earlier changes live in the project’s git history.
2026-11
Section titled “2026-11”Installer: a private deployment’s MCP url
Section titled “Installer: a private deployment’s MCP url”The installer takes --mcp-url, the MCP url of a private deployment, next to
--base-url, its REST url. Codex, Grok Build, Muse, VS Code, Cursor, Devin Desktop,
the copy-paste snippet and the Claude Code plugin then point at it instead of
https://mcp.telem.ai/mcp. Both urls are saved in ~/.telem/credentials.json, so a
later run keeps them: --base-url is now saved on a run that keeps your saved key, too.
See API keys.
The installer also installs the OpenClaw plugin on OpenClaw 2026.10 and later, which
asks for capability consent: it passes --accept-capabilities when OpenClaw knows the
flag. When a tool’s own install fails, the installer now shows that tool’s reason.
In @telemai/create 0.1.31.
API: a monitor create without agent says it got the agent
Section titled “API: a monitor create without agent says it got the agent”A POST /v1/monitors that does not send agent makes a monitor with an agent, the
default, and its answer now says so: a notice with the code agent_default, the
header Telem-Notice: agent_default, and a Link to Monitors.
Send agent to choose: true or false answers with notice set to null.
Claude and ChatGPT: sign in with your Telem account
Section titled “Claude and ChatGPT: sign in with your Telem account”The hosted MCP server now takes a sign-in with your Telem account. Add
https://mcp.telem.ai/mcp as a custom connector in Claude, or as a custom MCP server in
ChatGPT, sign in, and select Allow. Telem creates a key for the connection, so
there is no key to copy. A key in the Authorization header still works as before.
See Claude, ChatGPT and
Sign in instead of a key.
On the hosted server, with no package to update.
Python and JavaScript SDKs: monitors have an agent by default
Section titled “Python and JavaScript SDKs: monitors have an agent by default”In telem-sdk 0.4.0 and @telemai/sdk 0.5.0, monitors.create() makes a monitor
with an agent unless you pass agent=False (agent: false), and that monitor needs a
ttl, at most "30d": without one, create() fails before sending (ValueError; in
JavaScript a TelemError, invalid_request). update() takes ttl to renew a monitor,
a create’s answer has agent_note (agentNote), and poll() is deprecated and warns
once: read the agent’s changes with iter_changes() or iterateChanges(). See
Monitors.
Switch the default search and fetch to Telem
Section titled “Switch the default search and fetch to Telem”The installer’s question about your agent’s built-in web search now asks whether to
switch its default web search and fetch to Telem, for Claude Code, Codex, Grok Build
and Muse. For Claude Code, a yes now adds "WebFetch" as well as "WebSearch" to
permissions.deny, so page reads go through Telem too. If an earlier install added only
"WebSearch", run the installer again: it asks about "WebFetch". The flags keep their
names, such as --claude-disable-web-search. See
Claude Code.
In @telemai/create 0.1.30.
The installer asks less
Section titled “The installer asks less”- A saved key that works is used with no question. To use a different key, run
the installer with
--login. It now gives the new key to the agents on your computer, not only to~/.telem/credentials.json. - Paste a key, or create one. With no key that works, the installer asks whether to paste a key you already have or create a new one. For a new one, it opens the console, then asks for the key. A new key starts with no searches, sessions or monitors of its own.
- No questions about search options. The installer turns on
auto-routing, unless
~/.telem/telem.jsonalready sets it, and leaves the rest at Telem’s defaults.--auto-routingstill sets it. - No question about a project file. Add
--projectto write one. - With one agent on your computer, no menu. The installer sets up that agent and
says so.
--clientnow works in a terminal too. - A key that works but cannot pay is kept. The installer tells you to add funds in the console.
In @telemai/create 0.1.30. See Quickstart.
Claude Code: Telem search and page reads without a prompt
Section titled “Claude Code: Telem search and page reads without a prompt”- No prompt for Telem search and page reads. The installer adds
mcp__plugin_telem_telem__telem_searchandmcp__plugin_telem_telem__telem_fetchtopermissions.allowin~/.claude/settings.json. Your owndenyoraskrule for those tools wins. The monitor tools get no rule. - The plugin has a folder of its own. The installer copies it to
~/.telem/plugins/claude-plugin-telem, and Claude Code runs it from there, so it no longer disappears when the npm cache is cleaned. Run the installer again to move an older install there. Your key stays. - A broken options file is named. If a
telem.jsonis not valid JSON, you see one line that names it. Claude does not see it.
In @telemai/create 0.1.30 and the Claude Code plugin 0.1.16. See
Claude Code.
Python and JavaScript SDKs: read what the monitor agent finds
Section titled “Python and JavaScript SDKs: read what the monitor agent finds”client.monitors.agent(monitor_id) gives a monitor’s agent, and
client.monitors.changes(monitor_id) one page of what the agent found.
client.monitors.iter_changes(monitor_id) gives all of it, page by page, until you
are caught up. A monitor now has agent_state. In JavaScript, the same reads are
telem.monitors.agent(), changes() and iterateChanges() (read it with
for await), and a monitor has agentState. See
Read what the agent finds.
In telem-sdk 0.3.0 and @telemai/sdk 0.4.0.
VS Code
Section titled “VS Code”The installer’s GitHub Copilot choice is now VS Code (--client vscode). It sets up
the same files as before, for VS Code’s agent in the Copilot and Local session targets
and for Copilot CLI. --client copilot still works. The console now names these
searches vscode. A setup from 0.1.28 sends copilot until you run the installer
again. See VS Code.
In @telemai/create 0.1.29.
GitHub Copilot, Cursor and Devin Desktop
Section titled “GitHub Copilot, Cursor and Devin Desktop”The installer now sets up Telem in the agents of three more editors: pick the editor,
or pass its --client name. Each gets the hosted MCP server with your key, the Telem
skill, and a hook that sends your .telem/telem.json options and keeps each chat’s
searches together in the console.
- GitHub Copilot in VS Code (
--client copilot): the Chat view’s Copilot and Local session targets, and Copilot CLI. See VS Code. - Cursor (
--client cursor): Cursor’s agent. The hook also sends the model’s reasoning. See Cursor. - Devin Desktop, formerly Windsurf (
--client devin): Devin Local and the Devin CLI. The hook also sends the model’s reasoning. See Devin Desktop.
In @telemai/create 0.1.28.
2026-10
Section titled “2026-10”Muse CLI and the Muse app
Section titled “Muse CLI and the Muse app”The installer now sets up Telem in Muse CLI: pick Muse CLI, or pass --client muse.
It adds the hosted MCP server with your key to Muse’s settings, and a hook that sends
your .telem/telem.json options and records why Muse searched, when the model gives
reasoning summaries. It also asks whether to turn off Muse’s own web search; with no
prompts, pass --muse-disable-web-search. The Muse app connects Telem as a custom
connector. See Muse.
In @telemai/create 0.1.27.
Grok Build
Section titled “Grok Build”The installer now sets up Telem in Grok Build: pick Grok Build, or pass --client grok.
It adds the hosted MCP server with your key to ~/.grok/config.toml, and a hook that
sends your .telem/telem.json options and records why Grok searched, when the model
gives its reasoning. It also asks whether to turn off Grok’s own web search, and
whether to let Grok run Telem searches and page reads without asking. With no prompts,
pass --grok-disable-web-search and --grok-allow-telem. See
Grok Build.
In @telemai/create 0.1.26.
The Telem skill asks for a reason on every search
Section titled “The Telem skill asks for a reason on every search”The Telem skill in the Codex and Claude Code plugins now tells the model to send
context with every telem_search: one or two sentences on why it makes that search
and what it needs from it. context stays optional. Telem stores it with the call, and
the console shows it as the agent’s reasoning. See MCP server.
In the Codex plugin 0.1.13 and the Claude Code plugin 0.1.13. New installs
through the installer get them from @telemai/create 0.1.25. After you update
the Codex plugin by hand, Codex asks you once to approve the hook again. See
Codex.
DeepSeek Harness plugin 0.1.1
Section titled “DeepSeek Harness plugin 0.1.1”@telemai/dsh-plugin 0.1.1 has the same code as 0.1.0-rc.4. It has a plain
version number, so a plain install and @latest now get the current plugin. Before,
they could get an older release candidate. The plugin stays experimental, because
DSH’s own plugin APIs are still prerelease. See
DeepSeek Harness.
In @telemai/dsh-plugin 0.1.1.
The provider list marks the auto-routed providers
Section titled “The provider list marks the auto-routed providers”GET /v1/preprocessors has a new field on each provider, auto_routed: whether
auto-routing can choose it when you send no provider list. The SDKs read it as
ProviderInfo.auto_routed (Python) and ProviderInfo.autoRouted (JavaScript). On the
hosted MCP server, telem_providers marks those providers (auto-routed), next to
(default), and leaves out the router’s built-in entries. See
Search parameters.
Live on the router and the hosted MCP server since 2026-10-29. In telem-sdk 0.2.3 and @telemai/sdk 0.3.3.
Codex searches carry only their own reasoning
Section titled “Codex searches carry only their own reasoning”The Codex plugin sends the reasoning that led to each search. With Codex 0.164, every search in a turn sent all the reasoning since the turn began, so later searches repeated the reasoning of the earlier ones. Now each search carries only the reasoning since the search before it. When the plugin refuses a search, its message also ends with one period, not two.
In the Codex plugin 0.1.12. After you update it by hand, Codex asks you once to approve the hook again. See Codex.
Codex keeps the Telem hook after an installer update
Section titled “Codex keeps the Telem hook after an installer update”Codex runs a plugin’s hook only while the plugin’s files match what you approved. The installer now approves the hook for the plugin files it installs, the way Codex does. When you update the plugin by running the installer again, Codex keeps running the hook with no prompt. An update through Codex itself still asks you to approve the hook once. See Codex.
In @telemai/create 0.1.24.
The model can say why it searches
Section titled “The model can say why it searches”telem_search on the hosted MCP server takes an optional context: one or two
sentences on why the model makes this search. Telem stores it with the call. It does
not change the results yet. See MCP server.
Live on the hosted MCP server since 2026-10-28.
The response names the providers you pinned
Section titled “The response names the providers you pinned”Search and fetch responses have a new field, pinned_providers: the providers
that you named for the call, or null when Telem chose them. See
Search parameters and
Fetch parameters.
Live since 2026-10-28.
Codex runs the Telem search tools without asking
Section titled “Codex runs the Telem search tools without asking”The hosted MCP server now gives each tool a title and marks the search and read tools
read-only. Codex runs them without an approval prompt, and codex exec no longer
refuses them. The monitor tools that create, delete or read new results still ask
first. See Codex.
Live on the hosted MCP server since 2026-10-27.
Fetch settings headers on the MCP server
Section titled “Fetch settings headers on the MCP server”The hosted MCP server reads three more connection headers, X-Telem-Fetch-Providers,
X-Telem-Fetch-Tier and X-Telem-Fetch-No-Cache, and applies them to every
telem_fetch, so any MCP client can set the fetch options. See
MCP server.
Live on the hosted MCP server since 2026-10-27.
One rule when include and exclude name the same provider
Section titled “One rule when include and exclude name the same provider”Every surface now handles a provider in both providersInclude and
providersExclude the same way: the exclude list wins. When other providers are
left, they run, with a warning. When none is left, the search is refused before
anything is sent, and the message says which list to edit. Before, most plugins ran
the default providers instead, and OpenClaw and the SDKs got a 400. See
When include and exclude name the same provider.
In telem-sdk 0.2.3, @telemai/sdk 0.3.3, @telemai/opencode-plugin 0.2.13, @telemai/pi-telem 0.2.12,
@telemai/openclaw-plugin 0.2.15, @telemai/dsh-plugin 0.1.0-rc.4, the Claude Code
plugin 0.1.12 and the Codex plugin 0.1.11.
Provider names in MCP search results
Section titled “Provider names in MCP search results”On the hosted MCP server, which Claude Code, Codex and other MCP clients use, each
telem_search result now names the provider that found it, and a provider that
failed gets a line of its own. Before, a failed provider looked the same as an empty
result.
Live on the hosted MCP server since 2026-10-27.
Page-fetch settings in OpenCode
Section titled “Page-fetch settings in OpenCode”The OpenCode plugin’s telem_fetch now sends fetchProviders, fetchTier and
fetchNoCache from its options object, .telem/telem.json or the TELEM_FETCH_*
variables. See Pinning the fetch provider.
In @telemai/opencode-plugin 0.2.13.
Page-fetch settings in OpenClaw
Section titled “Page-fetch settings in OpenClaw”The OpenClaw plugin takes fetchProviders, fetchTier and fetchNoCache in its
plugin entry, with the TELEM_FETCH_* variables below them, and its telem_fetch
sends them. Before, OpenClaw refused to load the plugin if its config had one of
these keys. See Pinning the fetch provider.
In @telemai/openclaw-plugin 0.2.15.
Fetch options in the JavaScript SDK
Section titled “Fetch options in the JavaScript SDK”telem.fetch() now takes tier and noCache, next to providers. When you leave
them out, it uses the TELEM_FETCH_PROVIDERS, TELEM_FETCH_TIER and
TELEM_FETCH_NO_CACHE variables. See
Pinning the fetch provider.
In @telemai/sdk 0.3.3.
Fetch options in the Python SDK and Hermes
Section titled “Fetch options in the Python SDK and Hermes”fetch() in the Python SDK now takes tier and no_cache, next to providers.
When you leave them out, it uses the TELEM_FETCH_PROVIDERS, TELEM_FETCH_TIER and
TELEM_FETCH_NO_CACHE variables. The new telem.resolve_fetch_options() also reads
fetchProviders, fetchTier and fetchNoCache from .telem/telem.json, when you
ask for it. The Hermes plugin’s telem_fetch sends them. See
Pinning the fetch provider.
In telem-sdk 0.2.3, which the Hermes plugin uses.
Page-fetch settings in DeepSeek Harness
Section titled “Page-fetch settings in DeepSeek Harness”The DeepSeek Harness plugin’s telem_fetch now sends fetchProviders, fetchTier
and fetchNoCache from its plugin config, .telem/telem.json or the TELEM_FETCH_*
variables. See Pinning the fetch provider.
In @telemai/dsh-plugin 0.1.0-rc.4.
Page-fetch settings in Pi
Section titled “Page-fetch settings in Pi”The Pi extension’s telem_fetch and the Pi skill’s fetch.mjs now send
fetchProviders, fetchTier and fetchNoCache from .telem/telem.json or the
TELEM_FETCH_* variables. See Pinning the fetch provider.
In @telemai/pi-telem 0.2.12.
Page-fetch settings in Claude Code and Codex
Section titled “Page-fetch settings in Claude Code and Codex”The Claude Code and Codex plugins now send fetchProviders, fetchTier and
fetchNoCache from .telem/telem.json with every telem_fetch, so you can pin the
fetch provider, set the fetch tier, or skip the saved copy. See
Pinning the fetch provider.
In the Claude Code plugin 0.1.11 and the Codex plugin 0.1.10.
The installer can turn off Claude Code’s built-in web search
Section titled “The installer can turn off Claude Code’s built-in web search”When it installs the Claude Code plugin, @telemai/create now asks whether to send
Claude Code’s web searches through Telem. Yes adds "WebSearch" to
permissions.deny in your Claude Code settings. With no prompts, pass
--claude-disable-web-search. Codex already had this step.
In @telemai/create 0.1.24.
Date window in the Pi skill’s search script
Section titled “Date window in the Pi skill’s search script”The Pi skill’s scripts/search.mjs now takes --published-after and
--published-before, so a search from the script can keep only results from a date
window, like the Pi tools.
In @telemai/pi-telem 0.2.12.
Clear messages for Hermes versions that cannot run the plugin
Section titled “Clear messages for Hermes versions that cannot run the plugin”@telemai/create 0.1.23 stops the Hermes install with a clear message when
Hermes cannot run the Telem plugin: Hermes older than 0.21.6, or Hermes installed
with Homebrew. The plugin needs Hermes 0.21.6 or newer from the official Hermes
installer.
Auto-routing off in the Claude Code and Codex plugins
Section titled “Auto-routing off in the Claude Code and Codex plugins”@telemai/create 0.1.23 installs the Claude Code plugin 0.1.10 and the
Codex plugin 0.1.9. When your configuration sets autoRouting to off,
searches through the hosted MCP server now run without auto-routing. Before, that
setting had no effect there.
Auto-routing header for MCP clients
Section titled “Auto-routing header for MCP clients”@telemai/create 0.1.22 writes your auto-routing answer as the
X-Telem-Auto-Routing header in the Codex table and in the printed MCP snippet.
So clients that connect with only a URL and headers get the same routing.
Search by domain, and monitors that search
Section titled “Search by domain, and monitors that search”telem-sdk 0.2.2 and @telemai/sdk 0.3.2:
- A search takes
include_domains: only results from these domains and their subdomains. See Domains. - A monitor’s
frequencyis optional. If you leave it out, the monitor runs once a day. A monitor can also run every12h. - A monitor takes
search: it also searches the web for the query on each run. See Monitors. - A monitor takes
include_domains: only results from these sites.
Monitors that expire
Section titled “Monitors that expire”telem-sdk 0.2.1 and @telemai/sdk 0.3.1 add ttl to a monitor create:
Telem deletes the monitor after this time, for example 7d. A monitor has
expires_at. See Monitors.
Monitors without sources
Section titled “Monitors without sources”telem-sdk 0.2.0 and @telemai/sdk 0.3.0 change monitors. A create
takes only the query, the frequency, metadata and webhook_url. A monitor has
one status: active or paused. The providers and provider_overrides
fields are removed, so code that sends them must change. See Monitors.
Monitor webhooks
Section titled “Monitor webhooks”telem-sdk 0.1.13 and @telemai/sdk 0.2.6 add webhook_url to monitors
and a function that checks each webhook request (verify_webhook,
verifyWebhook). See Get results by webhook.
Monitors in the SDKs
Section titled “Monitors in the SDKs”telem-sdk 0.1.12 and @telemai/sdk 0.2.5 add monitors. A monitor
watches the web for a query, and you poll it for the results that are new since
your last poll. See Monitors.
Publication date window
Section titled “Publication date window”Two new search options, published_after and published_before, get only results
published in a date window. See Publication date. Each value is a date or a date and time in ISO 8601
format. A result with no known publication date is kept. Set them per search: there
is no configuration file key and no environment variable for them.
telem-sdk0.1.11:published_after=andpublished_before=onsearch(). They take a string, adateor adatetime. Adatetimewith no time zone is local time.@telemai/sdk0.2.4:publishedAfterandpublishedBefore. They take a string or aDate. The Vercel AI SDK tools take them from the model.@telemai/opencode-plugin0.2.12,@telemai/pi-telem0.2.11,@telemai/openclaw-plugin0.2.14 and@telemai/dsh-plugin0.1.0-rc.3: the model can set both options ontelem_search. The Hermes, OpenAI and LangChain tools intelem-sdkcan do this too.
The agent also sees each result’s publication date. The tools add a line
Published: <date> to a result when its date is known.
Auto-routing on by default in the installer
Section titled “Auto-routing on by default in the installer”@telemai/create 0.1.21 turns on auto-routing (accuracy) by default:
- The installer question starts on Yes. A run with
--yesand no--auto-routingflag writes"autoRouting": "accuracy"to~/.telem/telem.json. - Answering No, or passing
--auto-routing off, writes"autoRouting": "off". Later runs keep that answer. - A configuration file that already has
autoRoutingdoes not change. A file without the key keeps its meaning: no routing. Run the installer again to turn routing on.
Every surface now accepts "off", in any case, from the configuration file or from
TELEM_AUTO_ROUTING, and sends no routing for it. Before this release, "off" made
every search fail. This applies to:
@telemai/opencode-plugin0.2.11@telemai/pi-telem0.2.10@telemai/openclaw-plugin0.2.13@telemai/dsh-plugin0.1.0-rc.2- the Claude Code and Codex plugins
@telemai/sdk0.2.3telem-sdk0.1.10
The SDKs and the OpenClaw plugin do not route by default. To turn on routing there,
set autoRouting to accuracy: in the plugin settings for OpenClaw, or as a client
option or TELEM_AUTO_ROUTING for the SDKs.
2026-09
Section titled “2026-09”DeepSeek Harness plugin 0.1.0-rc.1
Section titled “DeepSeek Harness plugin 0.1.0-rc.1”@telemai/dsh-plugin 0.1.0-rc.1 is the first release of the
DeepSeek Harness integration, published under the
next dist-tag:
telem_searchandtelem_fetchas native DSH tools, registered globally so every agent preset sees them. Arguments are validated by DSH, and its cancellation, timeout and spill policies apply.- The same
.telem/telem.jsonpair that every other surface reads. DSH adds one level above it: the plugin’s own row in your profile patch. It is the only surface with no deprecated host-specific config file. - Lineage across in-process subagents: a spawned or forked child inherits the tools. Its searches include a frozen snapshot of the parent conversation.
- Experimental, and a release candidate on purpose. DSH’s plugin APIs are
prerelease and can change between release candidates. This release is built and
tested against
0.1.5-rc.2.
JavaScript SDK 0.2.0
Section titled “JavaScript SDK 0.2.0”@telemai/sdk 0.2.0 adds the Vercel AI SDK integration,
@telemai/sdk/vercel:
createTelemVercelToolsgives an AI SDK agenttelem_searchandtelem_fetchtools, with query lineage attached to every call. A subagent started inside one of those tools links to it by itself. No lineage data is built by hand.- Lineage data is sent incrementally, as the plugins send it: a subagent’s inherited context travels once, not on every call.
ai(version 5 or later) is an optional peer dependency used by the subpath only. The main entry still has no runtime dependencies.
2026-08
Section titled “2026-08”Plugins 0.2.0
Section titled “Plugins 0.2.0”@telemai/openclaw-plugin, @telemai/opencode-plugin, and @telemai/pi-telem all
shipped 0.2.0, packaged as registry-ready installs:
- Each package builds a
dist-only tarball with an explicitfileslist, rather than requiring a source checkout. - Install paths were verified end-to-end against a local Verdaccio registry, one clean install per surface. For current public npm availability, see the coming-soon note on each integration page.
@telemai/openclaw-pluginregisters thetelem-openclaw-setupbin entry point used by the OpenClaw install flow.
All three have the same normalized search work underneath. It includes a
search block resolved per call, results read from the router’s normalized
response, and session threading. See the OpenClaw,
OpenCode, and Pi pages.
telem-sdk 0.1.0
Section titled “telem-sdk 0.1.0”The Python SDK’s first version, 0.1.0:
- Normalized search response:
search()reads the router’s normalized response (results+by_provider, which keeps partial per-provider failures). See Python SDK. - Query batching:
search()accepts a sequence of queries. They batch into a single interaction and run concurrently on the server. See Multi-query batching. - MCP server: the
[mcp]extra addstelem-mcp, a stateless MCP stdio server that exposestelem_searchandtelem_providers. See MCP server.
telem-sdk 0.1.0 is on PyPI: pip install telem-sdk. See the
Python SDK page.