RSSAmplifier

Blog

Mario Alberto Chávez - Ruby on Rails, AI Tools & former CTO

Ruby on Rails architect and AI toolmaker from Colima, México. Creator of Rails MCP Server, former fintech CTO, and author of Aprendiendo Ruby on Rails. Exploring the convergence of Rails and AI.

mariochavez.ioRSS feed ↗10 posts

Latest posts

Merging the Sources Into One Digest

After Part 6 the workflow produces three JSON files, one per source, each a list of classified items. That is not a briefing. The same newsletter can arrive in two accounts, the payments are scattered across the files, the meetings are not in order, and there is no narrative tying anything together. I want one digest.json that is the whole picture, and a short inbox-digest.md for the terminal. The…

The Sandbox and Permission Seams in Nexo

I have been saying the source agents write their output into “the :local sandbox” without explaining what that is. It is time to, because the sandbox and permissions are the two things Nexo genuinely adds on top of ruby_llm , and they are what make “read-only email tool” an enforced property instead of a promise in a prompt. The two seams answer two different questions. The sandbox is where an…

Running the Inbox Agents Concurrently, With a Bound

The workflow from Part 4 runs the three sources one after another. Each source spends almost all of its time waiting on the model to think, so running them in sequence means the total time is roughly the sum of three model conversations. There is no reason for that. The three inboxes are independent; they should run at the same time. This is the kind of thing that is easy to get wrong by hand.…

Turning Three Inboxes Into One Nexo Workflow

At this point the source catalog has three inboxes, each read by an agent. But nothing runs them together, there is no single result, and if one of them fails I find out by reading a stack trace. A triage run is really a job: read what is available, record what happened, and produce one output. That is what Nexo::Workflow is for. A workflow is the second thing Nexo adds on top of ruby_llm . Where…

Adding Gmail and HEY With Custom Ruby Tools

Apple Mail was reachable over MCP, so Part 1 attached it with the mcp macro and never wrote a line of integration code. Gmail and HEY are different. Gmail I want to read over IMAP with an app password, without OAuth or a Google SDK. HEY has a command line client and no public API. Neither speaks MCP. For those, Nexo uses its other tool shape: a plain RubyLLM::Tool . You write a small Ruby class…

Moving Triage Rules Out of Ruby and Into a Skill

At the end of the previous post the agent could read an Apple Mail inbox and produce a digest, but the triage policy lived in a Ruby heredoc. That has two practical problems. Changing the policy, for example treating anything from my accountant as Action, means editing code and redeploying. And three sentences of instruction are not enough for a small local model to classify consistently. Nexo…

Green Tests Are Not Evidence the Screens Work

bin/ci was green. The screen was broken. Not dramatically. A record that should have been scoped to one account was reachable from another, and every test in the suite passed, because every test in the suite ran with one account in the fixtures. Seeing this kind of error more than once had me keep this rule: Green tests are not evidence the screens work. bin/ci green is necessary and not…

A First Agent That Reads One Inbox Over MCP

In the last post I set up Nexo and ran a five-line agent on a local model. It could reason about text I handed it, but it could not reach anything real. In this post I connect it to my Apple Mail inbox and have it produce a first triage. The agent will be able to read and search the inbox, and it will be unable to send, delete, or move any message. That restriction comes from the permission gate,…

Agent is Model plus Harness: Getting to Know Nexo

Nexo shipped this week. The announcement covers what it is in one sitting: a harness for Ruby AI agents, composed on top of the RubyLLM ecosystem instead of reinventing it, with two real additions, a sandbox and permissions seam, and a workflow lifecycle for jobs you need to watch, resume, or schedule rather than just chat with. What that post does not cover is what building with it actually feels…

Testing GLM-5.2 on a Real Rails Upgrade

Every few weeks, a new open-source model appears with claims that it matches the frontier. I’ve watched this pattern long enough to be skeptical — the charts are fine for YouTube content, but they don’t tell you how a model behaves on a codebase that hasn’t been touched in years, with deprecated gems, a Node-dependent asset pipeline, and data that needs to move between databases. When GLM-5.2 from…