ellmer
ellmer stopped being a chat wrapper and started shipping the parts production LLM code needs
A side-by-side editorial comparison of btw and LibreChat — release velocity, themes, recent moves, and the top alternatives to consider.
btw is turning into an agentic R harness that no longer needs you to be in R
btw assembles context about an R session — packages, documentation, files, data frames — and hands it to an LLM through ellmer, with btw_app() as a chat interface. Over the last year it has grown well past context assembly: LLMs can document, check, test and measure coverage of a package, read CLAUDE.md and AGENTS.md as project context, fetch skills from packages or GitHub, and inspect the source of any installed namespace. Much of this is now reachable from a terminal CLI rather than only from an R prompt.
LibreChat's agents stop being fire-and-forget: you can now interrupt, steer, and answer them mid-run.
LibreChat is a self-hosted chat front-end that has spent three consecutive releases turning itself into an agent platform. v0.8.6 introduced Agent Skills and subagents, v0.8.7 added skill authoring and an agent marketplace, and v0.8.8-rc1 now makes agent runs interactive — interruptible, steerable, and able to pause for batched questions or approval before resuming. Alongside that sit experimental Agent Plugins bundling deployment Skills, MCP servers and opt-in command hooks, stateful Code Interpreter sessions, and agent-managed memory with per-agent isolation.
btw assembles context about an R session — packages, documentation, files, data frames — and hands it to an LLM through ellmer, with btw_app() as a chat interface. Over the last year it has grown well past context assembly: LLMs can document, check, test and measure coverage of a package, read CLAUDE.md and AGENTS.md as project context, fetch skills from packages or GitHub, and inspect the source of any installed namespace. Much of this is now reachable from a terminal CLI rather than only from an R prompt.
The direction is from describing a session to operating on it, and from inside R to outside it. Each release adds either a tool group that lets a model do something (document, check, test, cover; read namespace source; fetch skill resources) or a CLI command that removes the need to start R first. The 1.2.0 tool renaming — session becoming sessioninfo, search becoming cran, files_read_text_file becoming files_read — reads as the naming cleanup you do when you expect a lot more tools to follow.
The CLI has been absorbing one tool family per release (skills, then pkg desc and pkg src) while the R-side tool groups stay ahead of it, so the next releases likely continue exposing existing tool groups as terminal commands rather than adding new capabilities.
LibreChat is a self-hosted chat front-end that has spent three consecutive releases turning itself into an agent platform. v0.8.6 introduced Agent Skills and subagents, v0.8.7 added skill authoring and an agent marketplace, and v0.8.8-rc1 now makes agent runs interactive — interruptible, steerable, and able to pause for batched questions or approval before resuming. Alongside that sit experimental Agent Plugins bundling deployment Skills, MCP servers and opt-in command hooks, stateful Code Interpreter sessions, and agent-managed memory with per-agent isolation.
The releases are moving up the stack from capability to control. The earlier work answered what an agent can do; this one answers what a human does while it runs — approve a tool call, answer four questions at once, redirect a run in progress, or queue the next message. The other consistent thread is neutrality on models: GPT-5.6, Claude Opus 5 and Sonnet 5, and three Gemini variants land in the same release, as they did in 0.8.7.
The pieces flagged experimental here — Agent Plugins, stateful Code Interpreter sessions, command hooks — are the obvious candidates to stabilize in the 0.8.8 final or 0.8.9. The human-in-the-loop scaffolding is explicitly labeled a first slice, so further approval surfaces are the likeliest next increment.
Other ai-assistants products tracked by Sparkpulse, ranked by recent ship velocity. Each card links to a full editorial trajectory and lets you pivot into a head-to-head comparison with either btw or LibreChat.
ellmer stopped being a chat wrapper and started shipping the parts production LLM code needs
tfevents logs TensorBoard events from R, and this release only changes who maintains it.
safetensors for R changes hands with no code change to show for it.
torchdatasets ships custodial work as mlverse gathers its torch satellites under one maintainer.
A curated catalogue of published hyperparameter search spaces, now reaching deep neural networks
Hyperband tuning for mlr3, now built on an asynchronous backend it treats as mandatory
See all btw alternatives → · See all LibreChat alternatives →
Latest ship moves from both products, interleaved chronologically. ⚡ = editorial spark.
They serve adjacent needs but don't currently overlap on shipped themes. LibreChat is currently shipping more aggressively (velocity 6.3 vs 2.5), with 1 editorial sparks in the last 30 days against 0. See the at-a-glance table above for a side-by-side breakdown of velocity, recent sparks, and editorial themes.
Sparkpulse doesn't pick a winner — we score release velocity, not feature parity. LibreChat is currently shipping more aggressively (velocity 6.3 vs 2.5), with 1 editorial sparks in the last 30 days against 0. For your specific use case, the alternatives sections above list other ai-assistants products to evaluate alongside.
Top btw alternatives in ai-assistants are ranked by recent ship velocity. Browse the "btw alternatives" section above for the current picks, or visit /alternatives/btw-r for the full list with editorial commentary on each.
Top LibreChat alternatives in ai-assistants are ranked by recent ship velocity. Browse the "LibreChat alternatives" section above for the current picks, or visit /alternatives/librechat for the full list with editorial commentary on each.