t-kalinowski
Joined 3 years ago
Joined 3 years ago
(disclosure: I wrote it)
https://posit-dev.github.io/raghilda/
raghilda is deliberately narrower than LangGraph/Haystack/etc. It focuses on the RAG parts: document ingestion, chunking, embedding, storage, and retrieval. It’s meant to leave the pieces visible and replaceable rather than wrap the whole application in a framework.
It also composes well with the other parts of the Posit ecosystem: chatlas for LLM interaction, and Shiny for building interactive apps around the result.
My bias is that orchestration is often better hand-rolled for the specific application. Once the framework gets too far removed from the actual steps, it tends to bring in a lot of complexity you probably don’t need. In the end, most of these pieces are not that complicated.
Disclosure: I’m one of the authors of raghilda.
https://opensource.posit.co/blog/2026-05-21_in-defense-of-ya...
Scribes _feel_ good in the short-term, but it's not clear if they're actually good on longer time horizons.
We’ve been exploring a similar direction too, but with a plain REPL and a much thinner tool surface. In our case, it’s basically one tool for sending input, with interrupts and restarts handled through that same path. Marimo seems to expose much richer notebook structure and notebook-manipulation semantics, which is a pretty different point in the design space.
It seems like the tradeoff is between keeping the interaction model simple and the context small, versus introducing notebook structure earlier so the model works toward an artifact at the same time it iterates and explores. Curious how you think about that balance.
To avoid polling, you need to run the process with some knowledge of the internal interpreter state. Then a surprising number of edge cases start showing up once you start using it for real data science workflows. How do you support built-in debuggers? How do you handle in-band help? How do you handle long-running commands, interrupts, restarts, or segfaults in the interpreter? How do you deal with echo in multi-line inputs? How do you handle large outputs without filling the context window? Do you spill them to the filesystem somewhere instead of just truncating them, so the model can navigate them? What if the harness doesn’t have file tools? And so on.
Then there is sandboxing, which becomes another layer of complexity wrapped into the same tool.
I’ve been building a tool around this problem: `mcp-repl` https://github.com/posit-dev/mcp-repl
So tmux helps, but even with a skill and some shims, it does not really solve the core problem.
For example: https://packagemanager.posit.co/cran/2025-03-02
You can browse available snapshot dates here: https://packagemanager.posit.co/client/#/repos/cran/setup?sn...
This also works for PyPI and Python packages: https://packagemanager.posit.co/pypi/2025-03-04/simple
If you're interested in what motivated S7, you may enjoy this talk Hadley gave: https://www.youtube.com/watch?v=P3FxCvSueag (R7 was the working name for the package at the time)
Note for many R packages, the NAMESPACE file is autogenerated from roxygen docs: https://cran.r-project.org/web/packages/roxygen2/vignettes/n...