{"slug": "easl-sh-your-agents-diagrams-need-somewhere-to-live", "title": "Easl.sh – your agents diagrams need somewhere to live", "summary": "Developer t.waldin released easl, a free, MIT-licensed native Mac app that gives each repository one infinite board where coding agents run in real terminals and their diagrams, HTML pages, code tiles, call graphs, browsers and notes live beside them. easl lets users hold ⌃⌥⇧⌘ and click any diagram box, browser DOM element or note paragraph to add it to the next prompt as context, addressing the problem that chat transcripts only grow at the bottom and scroll artifacts out of view. The release follows Andrej Karpathy's October 2026 post arguing that as language models do more work, more human effort shifts to understanding their outputs.", "body_md": "❯ blog 2026-10-04-easl\n\n# your agent's diagrams need somewhere to live\n\nOn Friday Andrej Karpathy posted about something I’ve been thinking about a lot while using coding agents: as the models do more of the work, more of our own work moves toward understanding what they did.\n\n“We’ll be spending a lot more time trying to understand the outputs of language models.”\n\nHis suggestions move up the same ladder I’ve found myself climbing: ask for cleaner prose, then diagrams, then web pages (“Ask for output ‘in HTML’”), then explainer videos. His conclusion is that more of our work will “rise up the abstractions into oversight and understanding.”\n\nI think that’s right. For a long time now, I have been asking agents for diagrams and little HTML pages constantly. They’re often much better than another few paragraphs of explanation.\n\nThe problem is that the interfaces we use still treat them like tool calls/chat transcripts.\n\nA diagram appears in the transcript and starts scrolling away. An HTML explainer opens in a browser tab. The agent might have just spent ten minutes building me a much better representation of the system than prose could give me, but there’s nowhere for that representation to become part of the conversation.\n\nI can’t naturally point at one box and ask “why does this call this?”. I can’t put the implementation beside the diagram and ask the agent to keep them in sync. An hour later, when I need the same explanation again, I’m often back to asking for another one.\n\nThe better the artifacts get, the stranger this feels.\n\nIf diagrams, pages, code, traces and notes are going to become the things I use to understand an agent’s work, they need somewhere to live: somewhere both of us can see, change, and point at. They ARE the topic of discussion.\n\nAnd this philosophy should not only apply for HTML explainers or mermaid diagrams, but everything a human+agent pair needs. Every file in the git dir with lsp code nav, browsers that the agent is using for testing, browsers I am using to check linear, and anything else.\n\nThat’s what I built easl for.\n\n## the transcript is a log\n\nA chat transcript, in a GUI app or in a terminal, only grows at the bottom. It records what happened, in order, and everything I care about drifts up out of view as the session goes on.\n\nWhat I've understood and what I mean is state: the diagram I'll want again, the button we are fixing, the notes I wrote in a meeting that describe what that button should look like.\n\nI want that state on a surface that stays put, that the agent can read and add to, and that I can point at. Karpathy calls these artifacts \"discardable\", and most of them are. A few I want to keep, because I'll point at them again.\n\n## easl\n\neasl is my attempt at that surface. It's a native Mac app with one infinite board per repository. Your agents run in real terminals on the board: your own `claude`, `codex` or any CLI, logged in as you. What they make lands beside their terminal: code tiles at exact lines with your language server, call graphs it computes, a browser, notes, HTML pages they write, and full tldraw style drawing with shapes, arrows, etc.\n\nThen, the magic is how you can point at anything. Hold ⌃⌥⇧⌘ (I, and many of you, already rebind this to capslock, as ‘hyper’) and click a box in a diagram, a DOM element on a browser or a paragraph in a note. Whatever you point at, it gets added to your next prompt as context.\n\nIt's free and MIT: [github.com/twaldin/easl](https://github.com/twaldin/easl), and [easl.sh](https://easl.sh).\n\n## what I use it for\n\nMost of my day in easl is a browser tile showing my ticket board, with my active tickets, their status and their PRs, beside the agents working on them. When I want an agent on a ticket, a PR or a change, I ⌃⌥⇧⌘-click it on the board, and it goes with my next prompt.\n\n## how it works\n\nEach terminal is libghostty, with your Ghostty config if you have one, running in a [zmx](https://github.com/neurosnap/zmx) session, so quitting or crashing easl doesn't stop the agent. Inside a tile, `claude` and `codex` are small wrappers that easl puts first on the PATH. They run your real binary with easl's hooks and skill for that session only, and nothing goes in your global agent, shell or Ghostty config. The hooks tell easl when an agent is working, blocked on you or done, and deliver your clicks with the next prompt. Agents build on the board through the `easl` CLI, over a local socket with a JSON schema. The [docs](https://easl.sh/docs/) have the rest.\n\n## install\n\nmacOS 14 or later, Apple silicon only. ([read the script](https://easl.sh/install.txt))\n\n```\ncurl -fsSL https://easl.sh/install | sh\nbrew install neurosnap/tap/zmx oven-sh/bun/bun\n```\n\nThen press ⌘T and run `claude`, `codex` or any agent CLI. Bugs and ideas go in [GitHub issues](https://github.com/twaldin/easl/issues).", "url": "https://wpnews.pro/news/easl-sh-your-agents-diagrams-need-somewhere-to-live", "canonical_source": "https://tim.waldin.net/blog/2026-10-04-easl", "published_at": "2026-10-04 15:58:48+00:00", "updated_at": "2026-10-04 16:12:27.878601+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["easl", "Andrej Karpathy", "t.waldin", "libghostty", "Ghostty", "zmx", "tldraw", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/easl-sh-your-agents-diagrams-need-somewhere-to-live", "markdown": "https://wpnews.pro/news/easl-sh-your-agents-diagrams-need-somewhere-to-live.md", "text": "https://wpnews.pro/news/easl-sh-your-agents-diagrams-need-somewhere-to-live.txt", "jsonld": "https://wpnews.pro/news/easl-sh-your-agents-diagrams-need-somewhere-to-live.jsonld"}}