Agents like Claude Codex and Codex run in your terminal. From that strategic vantage point they can wield system tools (awk, bash, curl, git, python) as well as MCP tools. Here’s how that looks in the terminal.
⏺ Bash(awk -F’T’ ‘/2026-07-23T05:/’ /Users/jonudell/bram/resources/bram-traces/bram-trace.log | grep -E “describe-patch|heartbeat-batch|reason\”:\”subscribe” | tail -12 | cut -c1-195)
In What is the terminal? I wrote:
These agents are maestros of the underlying command shell; they wield its powers far more effectively than most of us can. If you care to, this is a great way to learn by doing. Don’t take a course or watch a video to learn about git, just watch how agents use it in all its glorious complexity.
Earlier versions of Bram displayed tool calls and results in its webview. That was a more readable and scannable version of what you see in the terminal, but otherwise added little value. What is Claude Code doing when it reaches for awk?
Now that same tool call appears in a coherent narrative.
Bash (awk, grep, tail, cut) — Filter trace log for 05:00+ describe-patch, heartbeat-batch, and subscribe events
Bash (grep, tail, cut) — Check trace logs for describe-patch, heartbeat-batch, and projected-turns events after 05:00
Bash (grep, tail, cut) — Show latest iframe trace events from 05:03 onwards
Bash (grep, tail, cut) — Find describe-patch and heartbeat-batch iframe events from 05:00 UTC
Bash (sleep, true, grep, tail) — Check for new describe-patch and heartbeat events from live trace
Bash (cat, echo, ls, awk) — Verify bram process and binary timestamps to confirm recent startup
Bash (grep, cut, head, sort) — Inspect describe call timing and subkind distribution in live trace events
This feature builds on the method I described in Small models can solve big problems. There I showed how the community calendar uses Anthropic’s Haiku model to categorize events. Here Bram also uses Haiku, in this case to convert cryptic commands into statements of intent. Watching agent transcripts unfold feels completely different now that agents narrate their work in human terms.
For some, agentic activity is just background noise. Just let them churn, then evaluate the final result. In “Doctor, it hurts when agents create unreviewable PRs.” “Don’t do that.” I wrote:
I dislike the phrase “human in the loop” because it cedes authority to the machines. Let’s flip the narrative. It’s our loop, we work the same way we always have, now we recruit agents to join the team. An agent-assisted process need not be a black box that takes in prompts and emits features.
Bram started as a way to embed agents in a workflow that helps people organize and manage what agents do. It’s now also a better way to observe and understand what happens in the terminal as they do that work. In the digital era, the practice of narrating work to make it observable traces back to the early blogosphere. In a 2002 review of Radio UserLand I quoted Dave Winer on how his team’s internal blogging became a way to narrate their work.
We’ve been using this tool since November, internally at UserLand. We shipped Radio 8 with it. When we switched over our workgroup productivity soared. All of a sudden people could narrate their work. Watch Jake as he reports his progress on the next project he does. We’ve gotten very formal about how we use it. I can’t imagine an engineering project without this tool.
In a talk at the Open Education Conference I cited open source software development as a model for observable work. Because the processes and products yield digital artifacts, anyone can learn how the work is done and — if motivated — become a participant. AI-assisted software development can erode the transparency that sustains that architecture of participation. For human participants, narrating the work always was — and remains — the best way to foster effective teamwork. As agents join our teams the same principle applies. They are uniquely qualified to do a good job of work narration, and the right kind of harness can elicit that crucial behavior. The latest release of Bram unlocks that latent capability and it’s transformative. Give it a try and see if you agree.