249.md
July 11, 2026 · View on GitHub
This video features Christopher David demonstrating the development of the OpenAgents user interface, specifically focusing on the visualization and management of "sub-agents."
00:00 - 01:59: Initial UI Comparison
[Screen Description] Christopher is using a split-screen layout. On the left is a terminal-based view of a chat interface showing a "Untitled Codex chat" with various sub-agents listed on the right. On the right side of the screen, he pulls up the ChatGPT Codex desktop application to compare navigation.
[Transcription]
Christopher David: All right, let's dig into sub-agent UI. This is kind of like what Codex app has. They've got like a big ass right sidebar. Here's what we don't like: so in my... yeah, here. So here's my Codex chat. You know, this is a sub-agent: roadmap_audit. This is a sub-agent. I have no way of like easily checking in on those.
Claude Code at least gives me like some arrow keys I can go up and down and page through them, which is okay. I don't see any way to do that here. So just an example of what people have been saying. Like for the sub-agent UI, you gotta open the app. Let's just take a look and see how ChatGPT does. Let's see if I can find this same chat. Untitled Codex chat.
See now I've got this nice chronologically ordered list of all of my Codex chats. And I'm like, I would love to have that in my ChatGPT Codex thing. Can I sort by chronologically? It's pinned and it's projects. Do we see untitled chat? No. Like how do I get to this chat? Anyway, let me just click through these and find one with sub-agents.
02:00 - 05:29: Developing the OpenAgents Dashboard
[Screen Description] The screen switches to the custom "OpenAgents" desktop app. It has a dark blue theme.
- Left Sidebar: "Codex History" showing various tasks like
TERRASPRINT2,SOL MAIN,VIDEOEDITS, and several "Untitled Codex chat" entries with timestamps (e.g., 17m, 1h, 10h ago). - Main View: Shows a chat transcript with "You", "Assistant", and "Terminal" blocks.
- Right Sidebar: A list titled "Agents - 131" containing numerous "Subagent" entries, most marked "Completed".
[Transcription] Christopher David: So, I'm looking for untitled chat. Loading tasks... That's not good. Most of my stuff is in "work". Tasks, no tasks. That's not good.
So, I did a bunch of sub-agent stuff here. And what I want to figure out in this video is what is the ideal sub-agent chat? Like what do I actually want to see? So, when I'm here and it summons... where were we? What it does this, it says "Started a sub-agent". I want to be able to see that it started a sub-agent. Okay, I think I have a chat going for this.
05:30 - 07:17: Refining the Sub-agent Spawn Logic
[Screen Description] Christopher types a prompt into the OpenAgents interface: "Let's dial into sub-agent UI. Review the sub-agent docs that I put in the teardown folder, docs/teardowns. To remember how Codex does this... maybe you can reference Claude, but we're going to focus on Codex first. On right now I have this large right sidebar with the list of subagents."
[Transcription] Christopher David: Let's dial into sub-agent UI. Review the sub-agent docs that I put in the teardown folder. To remember how Codex does this and maybe you can reference Claude, but we're going to focus on Codex first.
So right now I have this large right sidebar with the list of subagents. Which I believe is how the Codex desktop app renders these. You can see the sub-agents on the right. One thing that I want is when a sub-agent gets spawned, it to pop out—like instead of just having a message that it spawned one, let me click into it from there. As well as show some of the like latest message of the sub-agent in that box. So from the parent thread I can kind of like see what the sub-agent is doing a little bit. Figure out where to document that and what to do about that and like just do it.
07:18 - 08:29: Architectural Teardowns on GitHub
[Screen Description]
Christopher navigates to the openagentsinc/openagents GitHub repository. He goes into docs/teardowns. He opens a README.md titled "Product Teardowns" which lists various agent runtimes:
- ChatGPT desktop app
- Claude desktop app
- Claude Code
- Codex agent runtime
- OpenCode desktop app
[Transcription]
Christopher David: While that works, let's check out this little research folder I made called docs/teardowns. A word from 5.6, thank you. All right, this directory holds point-in-time, read-only teardowns of installed products and commit-pinned open-source implementations that are close architectural references for OpenAgents.
The goal is not feature admiration or pixel copying. Each teardown separates observed evidence from inference then asks which boundaries, workflows, and failure modes should change OpenAgents' product decisions. Is it reverse engineering or is it something that seems kind of close to reverse engineering? Who cares.
Okay: ChatGPT desktop app, Claude desktop app, Claude Code, Codex agent runtime, Claude sub-agent histories—like looking at all the JSONL on my computer—OpenCode desktop app, OpenCode version 2, OpenCode effect architecture, and then like our analysis. So just doing super deep analyses of all of these codebases, the compiled binaries, what we can learn from them, any code I can get my hands on.
08:30 - 10:01: Adapting Runtime Designs
[Screen Description] Christopher opens the document: "What OpenAgents Should Adapt from the Desktop and Agent Runtime Teardowns." It lists key decisions:
- Web-capable desktop shell (not the agent engine).
- Real agent engine outside the renderer.
- Versioned query/command/event stream between UI and engine.
- Local tools, MCP, skills, plugins, and native capabilities.
- Separate isolation for untrusted code execution.
- Desktop/mobile continuity and remote steering.
- Independently updateable components.
- A workbench that grows beyond chat without making every conversation look like an IDE.
[Transcription] Christopher David: What OpenAgents should adapt from all of these, thought through, synergized, freaking synthesized. OpenAgents should adapt the shape all three desktop products converge on, while rejecting their least transparent trust choices.
Like for example, all three of these apps use Electron. So I'm not going to use something experimental—I was trying Electrobun, I've tried Tauri—like if OpenAI, Anthropic, and OpenCode have all converged on Electron for desktop app, like that's it, we're just going to do the same thing. We can get fancy or cute later on.
Aside from those general product things, super valuable. And then I've got docs specific to sub-agents. So I asked it for like, give me an analysis of what Codex renders where, when, why, about sub-agents.
10:02 - 12:59: Analyzing the Codex Sub-Agent Model
[Screen Description]
He reviews a document titled: "Codex Sub-Agents: Data Model, Protocol, and the TUI-vs-Desktop Rendering Gap."
The text explains that Codex has a "real first-class multi-agent system" where a parent thread can spawn_agent, send_input, etc. It highlights the "rendering gap" where the terminal TUI (Text User Interface) flattens the parent-child topology into a linear scrollback, which David finds insufficient.
[Transcription] Christopher David: Yeah I had Fable study OpenAI stuff and saw Fable study Claude stuff. Okay, subject: how OpenAI Codex models and renders sub-agents, why the terminal TUI under-renders them relative to the closed ChatGPT/Codex desktop app and the GPT 5.6-era model capability changes that landed in the last few days.
Executive summary: Codex has a real first-class multi-agent system. A parent thread can spawn agent, send input, send message, wait, resume agent, and close agent on child threads. Two generations coexist behind a multi-agent version. The runtime emits a rich event vocabulary. The core event message enum carries 10 collaboration-specific variants...
The gap is a rendering/topology gap, structural to a terminal. A terminal is a singular linear scrollback showing one thread's transcript at a time. Yeah I don't want to do that. Sub-agent structure is therefore flattened into three degraded forms. Yeah that sucks. Get the fuck out of the terminal. Give me an app like this. Give me buttons. I can do hotkeys, but let me like see what the fuck is going on, okay? Make it clicky. It's got to be clicky. It's got the feel like StarCraft. Can you see why we're making these design decisions? RTS.
13:00 - 16:32: Demonstrating the "Clicky" Agent UI
[Screen Description] The video shows the updated OpenAgents app.
- On the left sidebar, he selects different chats.
- In the main transcript, an "Agent message" appears saying "inter-agent handoff".
- In the right sidebar, the sub-agents are no longer just "Subagent" but have specific names: Pascal, Gibbs, Leibniz, Halley, Averroes.
- When he clicks an "Agent message" in the transcript, a detail view pops up on the right showing metadata like
agent_id,operation: sub_agent_activity, and thetask: /roadmap_audit.
[Transcription]
Christopher David: All right, I just rebooted my computer. Here's all I want to do to set up my development environment: run oa, boom, here's my development environment.
Okay, we got some progress on the agent. So there's a bunch of different like little agent messages that come from Codex. And I want to do custom components for each of these. So we've got custom components now for sub-agent and then that goes into his private chat, which consists of agent messages for inter-agent handoff, task assigned, terminal terminal terminal terminal.
So yeah, I guess Codex auto-gives your agents these little random funny names: Pascal, Gibbs, Leibniz, Halley, Averroes. Definitely looking a lot better. 131 agents. We got Archimedes, we got Hubble, we got Kepler, we got Cicero, Huygens, Laplace, Carson, Nietzsche, Heisenberg... Heisenberg delegating to Sagan.
Okay, well I think this is a good stopping point. We have a lot more clarity about what sub-agents are actually doing, at least the ability to inspect them. The next question is like what information do I actually want from these agents? I think the next thing to be able to feel more about what I want from these sub-agents in the course of a chat is to next get the full streaming hooking up. I want to get clicky with it, you know? I got my hotkeys going now and just see how far we can take this into StarCraft land. See you soon.