The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw

Max Drake· tldraw18:51

Read the talk

The Spatial Harness: Bringing Agents to the Canvas

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 637 seconds
The Spatial Harness: Bringing Agents to the Canvas

Max Drake traces tldraw’s canvas agents from spatial perception, through autonomous navigation and visible multi-agent coordination, to dependency graphs and a desktop editor that agents can script against real files and applications.

From a talk by Max Drake

At a glance

Ideas worth remembering

  • Spatial agents need a harness that combines rendered appearance with structured canvas state, then translates model intent back into canvas actions.

  • Autonomy on an infinite canvas requires active perception: the agent must be able to move its viewport, inspect off-screen objects, create intermediate goals, and continue working toward them.

  • Visible agent identity and status are functional interface elements. Fairies let a person distinguish working, waiting, and idle agents without reading every chat transcript.

  • A dependency graph can serve as both project map and execution interface when task nodes let people launch coding agents and return progress or pull requests to the shared canvas.

  • Exposing the desktop editor to an existing coding agent avoids trapping the agent inside a canvas-specific harness and enables temporary spatial interfaces connected to files and desktop applications.

  • The opening agent retrieved the specification, but the requested fluid simulation remained unfinished within the talk. Successful retrieval and completed execution are separate milestones.

The canvas problem returns one layer up

Max Drake, a product engineer working on agents at tldraw, opens by giving an agent a job before the talk has properly begun: find a specification linked from an email and a Notion document, then build it in the local tldraw desktop app. The request quietly contains the whole challenge. The agent must cross applications, recover the right context, translate a written specification into spatial behavior, and keep working while the presentation continues. The result will return near the end—and it will not be a clean demo victory. 0:13

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 96 seconds
The canvas problem returns one layer up

tldraw is three things here: a free infinite-canvas whiteboard, the London company that makes it, and, most importantly for this story, the SDK underneath it. Selection, resizing, arrows, viewport behavior, and matrix math are difficult enough that teams building a slide designer, whiteboard, or other spatial product can spend their time rebuilding the canvas instead of their actual application. The SDK packages those mechanics so a product can begin above that layer. 1:20

LLM applications reproduced the same trap one level higher. A team could imagine an agent rearranging objects in space, yet still lack established ways to represent the scene, expose useful actions, or show what the agent was doing. tldraw already supplied multiplayer primitives—live synchronization, cursors, selections, and viewports—which suggested that a canvas built for human collaborators could also become a shared place for human and agent work. 3:19

Coding agents provide the contrast. Their prompts, source files, searches, and generated code are largely text, close to the medium on which language models were trained. Two-dimensional editing adds geometry and visual state: which objects exist, where they sit, what is currently visible, and how an action will alter the scene. Even a request to align interface elements can fail unless the surrounding harness translates between model-friendly representations and spatial operations. Drake calls the text-in/text-out account an oversimplification, but it explains why the canvas needs substantial extra engineering. 4:19

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:13 · section reference included

Teach gives the model two views of the same canvas

The first project, Teach, tackles perception and action before autonomy. The prompt is simple: “make the mouse blow out the candle.” The canvas does not contain a privileged semantic object called a mouse; it contains ordinary shapes arranged so that a person recognizes one. The system supplies both a screenshot and underlying canvas data, allowing the model to combine visual interpretation with structured information about the objects. 5:20

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 320 seconds
Teach gives the model two views of the same canvas

The observable change is small but instructive. The model interprets the drawn mouse and candle from the rendered scene and canvas data, then produces actions that add wind and smoke in the appropriate positions. The edit reads as the mouse blowing out the candle. This requires more than recognizing the drawing: the model must connect its canvas actions to their effect on the composition. In this run, wind appears first and smoke follows, with positions Drake considers correct. 5:31

What information has to cross the model–canvas boundary for that edit to work? The diagram makes the paired representation and action flow visible. The screenshot supplies appearance and composition; canvas data supplies explicit object state; the harness turns the model’s intended change back into spatial actions. Teach performs this in one prompt, so it demonstrates grounded editing rather than a persistent agent that can search, plan, and recover over multiple steps.

How it fits togetherFrom canvas state to a visible spatial edit

Ordinary shapes form a mouse and candle.

Teach combines rendered appearance with structured canvas data, then converts the model’s intended change into ordinary canvas actions.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

5:20 · section reference included

From one-shot editing to an agent that can go looking

The tldraw Agent Starter Kit wraps that perception-and-action capability in a harness that supports multi-step work. Drake describes its code as MIT licensed. Instead of responding once, the agent can create goals, maintain todos, change its own viewport, inspect another part of the canvas, and continue toward a result. 6:31

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 415 seconds
From one-shot editing to an agent that can go looking

The example begins with a cat and a request: somewhere else on the canvas are potential friends; bring one to the cat, whose favorite color is red. The agent needs to look beyond the initial view. It creates intermediate goals and changes its viewport to inspect the area containing potential friends, working toward the request. The demonstrated progress establishes planning and navigation, without confirming that a friend was selected or brought back. Viewport movement becomes the spatial equivalent of a coding agent searching a repository to find where something is defined. 7:01

This changes the role of the harness. Teach translates one instruction into one edit; the Starter Kit supports repeated observation and action through three mechanisms:

  • Planning: The agent creates todos that break the request into intermediate goals.
  • Active perception: It changes its viewport to reveal information elsewhere on the canvas.
  • Execution: The harness gives the agent canvas actions it can use while pursuing those goals.

The model still needs spatial grounding, but it can now seek information beyond the initial frame.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

6:31 · section reference included

Fairies turn multi-agent state into something you can glance at

The next experiment, Fairies, starts from the canvas’s multiplayer character. People should be able to work alongside agents, and agents should be able to work with one another. Each agent therefore appears as a visible character on the board. A fairy can be grabbed and thrown, assigned a hat or color, and adjusted with an intentionally ridiculous leg slider. The whimsy does real interface work: when several agents share a canvas, appearance provides a quick identity cue. 8:18

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 551 seconds
Fairies turn multi-agent state into something you can glance at

A single fairy can receive a task such as drawing a cat, but the more important interaction appears when several are selected together. The selection opens a group chat, turning spatial grouping into a way to choose a team. Drake asks the group to prepare a memo containing financial data for fiscal year 2025. One fairy begins planning, while the others become available for assigned work. 9:18

The animations are “cute and funny,” but they also act as status indicators. With ten agents running, a person should not need to open ten chat logs merely to discover that one agent is working, another is waiting, and another is bored. The board makes identity, location, and current state visible at once. This is where the canvas becomes more than a place to display agent output: it becomes an operations interface for supervising concurrent work. 10:18

How does a selected group become coordinated work? One fairy acts as orchestrator: it defines and assigns a task, waits while another fairy performs it, receives a notification when the work finishes, and is prompted to review it. The live demonstration briefly appears stalled by connectivity, then resumes with one fairy having created the task and another working on it. The diagram exposes the handoff that the character states make visible.

How it fits togetherVisible orchestration among Fairies

Selects several fairies and supplies a group task.

Selecting multiple agents creates a group conversation; an orchestrator delegates work, waits, and later reviews the result while each fairy displays its state on the canvas.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:48 · section reference included

A dependency graph where the nodes do the work

Fairies reveal their main architectural limitation next: they are “trapped in the canvas.” Building with them requires opting into a canvas-native harness, which makes it harder to reach files, repositories, pull requests, and other systems outside the board. The next experiments preserve the spatial coordination interface while letting existing coding agents perform work in their normal environments. 11:20

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 759 seconds
A dependency graph where the nodes do the work

The motivation comes from tldraw’s launch process. As deadlines tighten, the team abandons ordinary task tracking and makes a large dependency graph on a regular tldraw board. Arrows show what blocks what; color shows completed work; the whole board exposes what is in progress and what can happen next. Its value comes from combining movable, informal shapes with a high-level view of project topology. 12:20

The Tech Tree app makes each node executable. A task is also a coding agent that can be started and allowed to work autonomously. In the demonstration, one node has finished gesture controls for a multimodal canvas application. Drake opens the resulting pull request, inspects the result briefly, merges it, and the graph marks that task complete. The visible state change—from an active task node to a completed one—comes from repository work performed behind the interface. 13:20

New work can also begin spatially. Drake draws directly on the canvas, wraps the drawing as a task called “facial animation canvas control,” assigns it to Claude, and presses Run. This treats a sketch or selected region as the task’s input rather than requiring the user to translate everything into a separate chat. The graph remains a management layer above the agents: nodes carry work and status, while edges retain dependency information. 14:20

How does a task move from the board into repository work and back? The diagram follows the demonstrated route: a person starts a task node, a coding agent produces a pull request, and merging the result leads to a completed node. Multiplayer makes this a shared project space. A colleague can join, add or edit tasks, and inspect work already in progress, coordinating people with agents through the same graph.

How it fits togetherThe Tech Tree connects spatial planning to repository work

Shows tasks, blockers, progress, and completed work.

Canvas nodes expose task state and dependencies; each node can launch a coding agent and return repository results to the shared graph.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

11:20 · section reference included

The desktop editor becomes a scripting environment

The opening demo returns after thirteen minutes without the requested fluid simulation. That miss matters: access to email, a specification, files, and an editor does not guarantee timely completion. Rather than hiding it, Drake uses the unfinished run to explain the mechanism underneath. The tldraw desktop app runs locally and exposes its live editor instance through a server, allowing an agent such as Claude Code to write ordinary JavaScript against the editor. The canvas becomes a programmable environment rather than a sealed agent application. 15:20

This arrangement preserves the agent’s access to the wider computer. In one colleague’s experiment, rectangles drawn in tldraw become controls for arranging real desktop windows. The coding agent creates the canvas geometry and uses an external automation mechanism to move the applications; Drake suggests AppleScript as a possibility but does not establish the implementation. The important connection is supported: the canvas supplies an ephemeral spatial interface, while the coding agent reaches beyond it to operate the desktop. 16:28

The most gleefully excessive example is Pong played with desktop windows. tldraw runs in a corner while actual application windows act as game objects. It is silly in exactly the useful way: it demonstrates that canvas primitives can define an interface without confining the action to canvas shapes. A temporary spatial UI can control files, windows, or other resources available to the external agent. 16:59

What bridge lets a drawing become an action elsewhere on the computer? The editor server exposes programmable canvas state to the coding agent; the agent combines JavaScript against tldraw with whatever computer access its environment provides. The diagram separates those two connections. The editor connection changes canvas geometry, while the computer connection applies external actions. Instead of putting the entire agent harness inside the canvas, the existing agent gains a spatial interface it can script.

The opening agent did make partial progress: it accessed Gmail and found the Notion document and its specification. Implementation remained the intended next step in Drake’s account, and the simulation was still unfinished as the talk ended. The closing claim is an interface direction: the canvas can become a shared place where people and agents inspect one another’s work, coordinate spatially, and connect that visible work to real tools and data. 17:29

How it fits togetherFrom a programmable canvas to desktop effects

Provides shapes, layout, selection, and other spatial primitives.

The desktop app exposes its editor to an existing coding agent. The agent can script canvas objects and use its broader computer access to connect those objects to files or application windows.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

14:50 · section reference included

Resources

  • LLMs and Spatial CanvasesArticle

    Drake’s earlier essay develops spatial querying, movable analysis zones, and ways to use canvas organization as input to model operations. It supplies interaction examples behind the talk’s idea of a canvas as a place to work.

Read the complete timestamped transcript
  1. 0:01

    [music]

  2. 0:13

    Thank you for coming here to my talk to

  3. 0:16

    watch me talk about uh agents on the

  4. 0:18

    canvas. Um the first thing I'm going to

  5. 0:21

    do though is uh before I have to record

  6. 0:23

    my screen. Uh the first thing I'm going

  7. 0:25

    to do is I'm going to ask my agent to do

  8. 0:27

    something on the canvas.

  9. 0:30

    And what I'm going to do is say, "Hey,

  10. 0:33

    uh, my colleague Spencer just emailed me

  11. 0:35

    a link to a notion document, uh, for a

  12. 0:37

    really cool demo we could build with the

  13. 0:38

    TL desktop app. Can you like find that

  14. 0:41

    document and then can you build it on

  15. 0:42

    the desktop app?"

  16. 0:45

    Thank you.

  17. 0:50

    Okay, so that's going to build uh, and

  18. 0:51

    then we're going to come back to it

  19. 0:52

    later and hopefully it'll work. Um, hi

  20. 0:55

    everyone, my name is Max Reich. Thanks

  21. 0:57

    so much for coming. Um I work on uh

  22. 1:00

    agents on the canvas at uh TLA. I'm a

  23. 1:03

    product engineer there. Um so first

  24. 1:05

    things first, am I qualified to be

  25. 1:07

    giving this talk? I like to think so.

  26. 1:08

    I've been doing like agents on the

  27. 1:10

    canvas stuff since before chat GBT came

  28. 1:12

    out. Um I think it's really cool. I

  29. 1:14

    think there's like so much UX stuff you

  30. 1:16

    can do with when you get LM, you have

  31. 1:18

    them working in space. Uh and I think

  32. 1:20

    it's really interesting. I've been doing

  33. 1:21

    it for about as long as you can have

  34. 1:23

    been doing it. Um more recently I've

  35. 1:25

    been talking about this a lot. Um,

  36. 1:27

    here's some proof. Um, and yeah, so I

  37. 1:30

    work at this company called Teal Draw.

  38. 1:32

    Um, can I get a quick show of hands? Has

  39. 1:33

    anybody ever heard of or used Teal Draw

  40. 1:35

    before?

  41. 1:36

    >> Yeah. Okay. Um, awesome. So, yeah, the

  42. 1:39

    thing that you've probably used if you

  43. 1:41

    use Teal Draw is, um, this app right

  44. 1:44

    here. So, this is all Teal Draw. Uh,

  45. 1:46

    this is a free uh, infinite canvas

  46. 1:48

    whiteboarding app. Um, you know, we have

  47. 1:50

    selections and arrows and resizing and,

  48. 1:53

    you know, all the things that you need

  49. 1:55

    in a in a whiteboard. Um, Traw is also

  50. 1:58

    the company uh that makes this app. It's

  51. 2:01

    based in London. It's where I work. Um,

  52. 2:03

    but the last thing that TLAR is, which

  53. 2:05

    is, I think, in my opinion, the most

  54. 2:06

    important, is it's the Infinite Canvas

  55. 2:08

    SDKs that that powers this app. Um, and

  56. 2:11

    so what that means is that, you know,

  57. 2:13

    this is kind of the teal draw. The SDK

  58. 2:15

    is the engine that powers a lot of

  59. 2:17

    Infinite canvas experiences. Um because

  60. 2:20

    it turns out it's really hard to get

  61. 2:21

    that kind of stuff right. Um and uh so

  62. 2:24

    if you ever want to build a Muro

  63. 2:26

    competitor or a slide designer or if

  64. 2:28

    you're like Replet um Replet has their

  65. 2:31

    whole new uh agent canvas stuff built on

  66. 2:33

    top of TLR. Um, and so the reason we

  67. 2:36

    built TL Draw in the first place was

  68. 2:38

    that we were running into this issue or

  69. 2:40

    people were running into this issue

  70. 2:41

    where they had this idea for this like

  71. 2:42

    really great killer canvas app. Uh, and

  72. 2:45

    they went to go build it and everybody

  73. 2:46

    would run into the same problem where

  74. 2:47

    they would run into

  75. 2:50

    they would have trouble making the

  76. 2:51

    actual canvas part of of the app and

  77. 2:54

    they would, you know, trying to deal

  78. 2:55

    with resizing and selection and, you

  79. 2:57

    know, all the matrix math. And the issue

  80. 2:59

    is that they wouldn't be able to build

  81. 3:00

    their actual app itself. They would get

  82. 3:02

    stuck on the canvas. And so we built

  83. 3:03

    Teal Draw to kind of be the engine um

  84. 3:06

    that could power that could be the

  85. 3:07

    canvas so that they could focus on the

  86. 3:09

    actual app. Uh when LLM came out, we

  87. 3:12

    like a lot of other people saw that this

  88. 3:13

    is going to be this weird new type of

  89. 3:15

    software. I don't know if anyone, you

  90. 3:17

    know, I'm sure a lot of you were

  91. 3:18

    building in 2022 and it was really

  92. 3:20

    exciting. Um and a lot of people it was

  93. 3:22

    the exact same thing. People had the

  94. 3:23

    idea had an idea for this cool app that

  95. 3:26

    would, you know, involve LM on the

  96. 3:28

    canvas having them manipulating things

  97. 3:30

    in space. but then they would try to

  98. 3:32

    build it and they'd get stuck. Um there

  99. 3:34

    were no best practices. People didn't

  100. 3:35

    really know how to do it. And so at TL

  101. 3:37

    Draw we uh realized that we need to make

  102. 3:39

    it easy for people to build uh with

  103. 3:41

    agents with LLMs on the canvas. Um and

  104. 3:45

    also so Teal Draw the SDK as well as the

  105. 3:47

    app has multiplayer built in with like

  106. 3:48

    live sync. It's really nice. There's

  107. 3:50

    cursors. There's you can see your

  108. 3:52

    collaborators cursors and selections and

  109. 3:53

    viewports. And I think all of the things

  110. 3:55

    that make just the canvas in general a

  111. 3:57

    really great uh place for interacting

  112. 4:00

    with and collaborating with your

  113. 4:01

    colleagues also make it a really great

  114. 4:04

    place for interacting uh and

  115. 4:05

    collaborating with agents. Uh and I hope

  116. 4:07

    I'm going to be able to show you guys

  117. 4:08

    some of that um in the demos that come

  118. 4:10

    up. Um so before we talk about agents on

  119. 4:14

    the canvas, uh really quickly I want to

  120. 4:15

    talk about agents not on the canvas. Um

  121. 4:17

    I'm sure you guys have all used an app

  122. 4:19

    that looks like this, you know, claude

  123. 4:20

    code. And I'm going to really

  124. 4:22

    oversimplify here, but basically, uh,

  125. 4:24

    part of the reason why these apps are so

  126. 4:26

    good and why they work is because

  127. 4:27

    they're, you know, the medium in which

  128. 4:29

    they're working, writing code is

  129. 4:31

    essentially the medium in which they

  130. 4:32

    were trained. You know, it's it's text

  131. 4:33

    in, text out. That's how they were

  132. 4:35

    trained. Um, and when we work with them,

  133. 4:37

    we give them a prompt and they write

  134. 4:39

    code. It's text in, text out. Uh, you

  135. 4:41

    know, again, oversimplifying, but that's

  136. 4:43

    essentially how they work. I don't know

  137. 4:45

    if you guys have ever, you know, tried

  138. 4:46

    to get your agents to do like UI stuff

  139. 4:48

    and try to get them align to align

  140. 4:49

    something. found that they could not do

  141. 4:51

    that whatsoever. Um because it turns out

  142. 4:54

    agents are really really bad at working

  143. 4:56

    in 2D space and understanding 2D space

  144. 4:58

    and actually requires like a lot of

  145. 5:00

    engineering work to get them to uh do

  146. 5:02

    it. And that's kind of the project that

  147. 5:04

    we've been embarking on at Teal Draw

  148. 5:06

    recently. Um and so the first thing we

  149. 5:08

    had to do, this is an older project, but

  150. 5:10

    the first thing we had to do is get them

  151. 5:11

    to teach them teach the agents or at

  152. 5:13

    this point not agents LLM to understand

  153. 5:16

    the canvas and understand kind of what

  154. 5:18

    they're even looking at. Um, so we had

  155. 5:20

    this project called teach um where um we

  156. 5:24

    tal So I'm going to I'm going to prompt

  157. 5:25

    this really quick. I'm going to say,

  158. 5:27

    "Hey, make the mouse blow out the

  159. 5:28

    candle."

  160. 5:31

    Yeah. So that's going to take a second.

  161. 5:33

    This is this is an older uh older

  162. 5:35

    project, but basically what we had to do

  163. 5:37

    is we had to kind of like teach the LMS

  164. 5:40

    how to take the like the screenshot that

  165. 5:42

    we give it and the JSON and all of the

  166. 5:43

    other information about the canvas and

  167. 5:46

    Oh yeah, there we Okay. So yeah, that's

  168. 5:48

    some that's some wind. Uh it's

  169. 5:51

    is it sometimes it gives us smoke as

  170. 5:53

    well. Yeah, and we got a little smoke as

  171. 5:54

    well. So So we basically had to take it

  172. 5:57

    how to like and I want to be very clear

  173. 5:59

    this is not um this is not like a

  174. 6:01

    special mouse shape. These are just like

  175. 6:03

    uh you know the these are just shapes uh

  176. 6:06

    on the canvas. This is um and so the

  177. 6:08

    work behind this it's a singleshot

  178. 6:10

    prompt but we basically we tell the

  179. 6:12

    agent how to interpret uh both via

  180. 6:14

    screenshots and via the data um what is

  181. 6:17

    actually on the canvas like what it's

  182. 6:18

    looking at um which is actually you know

  183. 6:20

    it's not a trivial problem and then also

  184. 6:23

    how to we teach it how to actually act

  185. 6:25

    on the canvas and to understand how the

  186. 6:27

    actions that it produces will affect the

  187. 6:29

    canvas. So, you know, it got it, you

  188. 6:31

    know, it made the it made the smoke, it

  189. 6:32

    made the it made the wind, it got the

  190. 6:34

    positions right, and it understood what

  191. 6:36

    it was doing. Um, so we we got this we

  192. 6:39

    kind of figured out how the um like kind

  193. 6:42

    of we got we taught it what the canvas

  194. 6:44

    is. Uh, but this was like a single shot,

  195. 6:46

    single prompt kind of thing. Um, and so

  196. 6:48

    the next thing we built is the uh teal

  197. 6:50

    draw agent starter kit. Uh, which

  198. 6:52

    basically turns that and wraps in a

  199. 6:54

    harness that lets an agent work

  200. 6:55

    agentically on the canvas. Um, the code

  201. 6:57

    is also MIT licensed. You can find it on

  202. 7:00

    um that you can find on the website. So,

  203. 7:01

    here's a little here's a little cat. I'm

  204. 7:03

    going to make this a little bigger. Um

  205. 7:05

    but what I'm going to say is, "Hey, so

  206. 7:07

    somewhere else on the canvas uh there

  207. 7:10

    are uh some friends for the cat. Can you

  208. 7:13

    please uh bring one of them over to the

  209. 7:14

    cat? Um her favorite color is red."

  210. 7:18

    And so I'm going to zoom out. I'm going

  211. 7:20

    to show you guys what's actually going

  212. 7:21

    on. So you can see the the view of the

  213. 7:23

    agent. There's some there's some

  214. 7:24

    potential friends over here. And um you

  215. 7:26

    know if you read the All right. So and

  216. 7:29

    basically what's going on is that the

  217. 7:31

    agent has kind of like we've given it a

  218. 7:33

    prompt and uh using the information it

  219. 7:36

    has about the canvas. It's uh going to

  220. 7:39

    kind of like make some goals for itself.

  221. 7:40

    You can see there's some to-dos in the

  222. 7:41

    corner here. It's it changed its view in

  223. 7:44

    order to see um what was you know the

  224. 7:48

    other stuff that was on the canvas. same

  225. 7:49

    way that if you ask a coding agent um

  226. 7:52

    you know you ask it you know where where

  227. 7:54

    do we define this thing in the codebase

  228. 7:56

    it can go and it can search it can find

  229. 7:58

    it. So this is kind of like turning that

  230. 8:00

    singleshot uh prompting experience into

  231. 8:03

    this kind of like agentic thing that you

  232. 8:05

    can uh have you know it can autonomously

  233. 8:07

    set goals and and work towards them. The

  234. 8:12

    uh next thing we did um we did this this

  235. 8:15

    uh project called fairies and so we

  236. 8:18

    basically we had this agent experience

  237. 8:19

    but we realized that you know teal draw

  238. 8:21

    and you know the canvas in general is so

  239. 8:23

    collaborative it's so multiplayer and we

  240. 8:24

    wanted to basically we wanted people to

  241. 8:26

    be able to work together with their

  242. 8:28

    agents and we also wanted the agents to

  243. 8:30

    be able to work together

  244. 8:32

    so this is this is a ferry um there's

  245. 8:35

    also you guys want to scan this QR code

  246. 8:37

    you can actually this is multiplayer you

  247. 8:39

    can join if you want you it requires a

  248. 8:41

    Gmail signup But you don't need to pay

  249. 8:42

    for tokens. Um, this is this is what the

  250. 8:44

    link is. So, basically, this is a this

  251. 8:46

    is a fairy. Um, this fair's name is is

  252. 8:48

    Joan. They don't like being they don't

  253. 8:50

    like being grabbed. Um, you can you can

  254. 8:52

    throw them around. You know, we added a

  255. 8:54

    lot of really important stuff. You can

  256. 8:55

    um you can you can change its hat. Um,

  257. 8:59

    you can change the the color and and

  258. 9:01

    this seems silly, but it's actually

  259. 9:03

    really important. uh and I'll talk about

  260. 9:04

    this a little bit more later, but

  261. 9:05

    actually understanding uh when you get a

  262. 9:07

    high level view of when you see your

  263. 9:08

    agents working on the canvas, it's

  264. 9:10

    important to know which one is which.

  265. 9:11

    And so differentiating them is actually

  266. 9:12

    important, which is why, of course, we

  267. 9:14

    added the leg slider. Um

  268. 9:17

    but so, you know, I can say like, you

  269. 9:20

    know, I can I can I can say hey to it.

  270. 9:22

    Um

  271. 9:24

    and I can say, you know, something like

  272. 9:26

    draw a cat. Uh and I can have it work.

  273. 9:29

    But the most important thing here is

  274. 9:31

    that fairies have friends, right? and

  275. 9:32

    they can here we go. Uh

  276. 9:36

    >> and they can fairies can work together.

  277. 9:37

    And so we kind of designed this like

  278. 9:38

    multi- aent collaboration system that

  279. 9:40

    works on the canvas. Um and I'm going to

  280. 9:44

    actually I'm going to go to

  281. 9:46

    I think one of my

  282. 9:49

    Yeah, I think so. My my colleagues

  283. 9:50

    agents are here working uh making this

  284. 9:52

    this really great scene. Um I'm going to

  285. 9:55

    bring mine over um summon

  286. 10:00

    and I'm going to give them a slightly

  287. 10:01

    different prompt. So, I'm gonna select

  288. 10:02

    them all. And now I have a group chat of

  289. 10:03

    of the agents, right? And I'm going to

  290. 10:05

    say, "Hey, I have a board meeting coming

  291. 10:07

    up in like 10 minutes, and I don't have

  292. 10:09

    any of my my figures. Can you draw up

  293. 10:11

    like a little memo for all of my uh

  294. 10:13

    financial data for fiscal year 2025?

  295. 10:16

    Thank you."

  296. 10:18

    Okay. So, what what's going to happen

  297. 10:20

    there basically is this kind of like

  298. 10:22

    creates this uh multi- aent, you know,

  299. 10:24

    coordination thing. We have uh one of

  300. 10:26

    the fairies is writing uh writing out a

  301. 10:29

    plan. You can see it. Um, and again, the

  302. 10:32

    animations are kind of cute and funny,

  303. 10:34

    but it's actually really important. I

  304. 10:35

    don't have to read a chat or go through,

  305. 10:37

    you know, imagine if I have 10 agents

  306. 10:38

    working. I don't have to read a chat in

  307. 10:40

    order to know what's actually going on.

  308. 10:42

    I can look at the state of the agents.

  309. 10:44

    Uh, and I can actually, you know, I can

  310. 10:46

    can see what's happening. So, we we have

  311. 10:50

    a task here that's been defined. Um,

  312. 10:54

    it seems like, you know, the the ferry

  313. 10:55

    is is uh waiting for that to to finish.

  314. 11:00

    Yeah. So, that one's one's board. That

  315. 11:02

    one's waiting. So, this is the

  316. 11:03

    orchestrator ferry. What what it's done

  317. 11:04

    is it's assigned the it's assigned the

  318. 11:06

    task. Uh, and now it's waiting for the

  319. 11:09

    other ones to start and finish it. Um,

  320. 11:10

    and it's going to get notified. It's

  321. 11:12

    going to get prompted in order in order

  322. 11:13

    to review. Um, it seems like forever

  323. 11:16

    reason's not working, but thank Oh,

  324. 11:19

    never mind. So, yeah, we have one we

  325. 11:22

    have this one. So yeah, we have one

  326. 11:23

    fairy who made the made the task, one

  327. 11:25

    fairy who's working on it. And so this

  328. 11:27

    is this kind of um you know, multi- aent

  329. 11:30

    coordination system on the canvas. I

  330. 11:31

    have, you know, you can see my colleague

  331. 11:33

    has his agents over here. Uh they're

  332. 11:34

    they're working as well. Um and so you

  333. 11:37

    can kind of collaborate with people and

  334. 11:38

    with agents in this uh environment. And

  335. 11:41

    I don't know, I think that's really

  336. 11:42

    cool.

  337. 11:44

    the

  338. 11:46

    so the the next thing. So the problem

  339. 11:49

    with fairies is that um they're kind of

  340. 11:52

    trapped in the canvas and all the stuff

  341. 11:53

    you've seen before. This requires if you

  342. 11:55

    want to build something like this, this

  343. 11:56

    requires like the you to like opt in and

  344. 11:59

    have your entire harness be a like

  345. 12:00

    canvas harness. Um and the downside of

  346. 12:03

    that is that it makes it really hard to

  347. 12:04

    have any of this work with stuff like

  348. 12:06

    outside in the real world. The fairies

  349. 12:07

    are the fairies are trapped in the

  350. 12:09

    canvas. Um, and

  351. 12:13

    so I I I built this experiment. We had a

  352. 12:15

    little hackathon uh internally. Um, but

  353. 12:18

    first as a quick motivation for that,

  354. 12:20

    um, at Teal Draw whenever we have an

  355. 12:21

    whenever we're getting closer to a

  356. 12:23

    launch, we like abandon all of our task

  357. 12:25

    tracking software and we make just one

  358. 12:27

    massive dependency graph of how like so

  359. 12:30

    this is what an actual this is a real

  360. 12:32

    thing from when we launched fairies

  361. 12:33

    actually. Um, and so this is what it

  362. 12:35

    looks like when we're like really like

  363. 12:38

    when is hitting the fan at at

  364. 12:39

    tealraw when we're launching something.

  365. 12:41

    Um, and I really like this interface

  366. 12:44

    because it it kind of lets you This is

  367. 12:46

    not like a special app. This is still

  368. 12:47

    just tealraw.com. You can, you know,

  369. 12:49

    move your shapes around and things like

  370. 12:51

    that. Um, but I really like this because

  371. 12:53

    it both it lets you see like what

  372. 12:55

    depends on what. It lets you know what's

  373. 12:57

    coming next. It lets you get a highle

  374. 12:58

    overview. You know, these are all green

  375. 13:00

    because we finished them, but you know,

  376. 13:01

    you can imagine during the project, some

  377. 13:03

    of them are in process. And I really

  378. 13:05

    want I really wanted something like

  379. 13:06

    this. Um, but something that I could

  380. 13:09

    actually that could actually do the work

  381. 13:11

    itself. And so I um prototyped this

  382. 13:14

    thing. It's called the tech tree app.

  383. 13:16

    And basically, it's similar to this.

  384. 13:17

    It's a dependency graph, but each of

  385. 13:19

    these tasks um is a a coding agent that

  386. 13:23

    you can kick off and you can have your

  387. 13:26

    agent kind of like be running and doing

  388. 13:27

    them autonomously. Um the project itself

  389. 13:30

    that's working on it's this little um

  390. 13:33

    this is just kind of like a demo app. Um

  391. 13:35

    but this is Can I

  392. 13:38

    Yeah. So this is this is a little

  393. 13:41

    fun, you know, multimodal input thing. I

  394. 13:44

    haven't written any of the code for

  395. 13:45

    this. This is um this is all written by

  396. 13:47

    agents. But I can manage all of the work

  397. 13:49

    is being done in this desktop app uh or

  398. 13:51

    in this app here. And so I can do

  399. 13:53

    something like I can see this one has

  400. 13:54

    has finished uh building some gesture

  401. 13:57

    controls for the canvas. So I can open

  402. 13:59

    the PR uh and unfortunately sorry

  403. 14:01

    Jeffrey I am just going to merge this.

  404. 14:03

    I'm not going to uh have it be explained

  405. 14:06

    to me. But so this is [snorts]

  406. 14:08

    and so yeah great. Awesome. It looks

  407. 14:10

    good. Um and then you know eventually

  408. 14:12

    this is going to get marked uh as as

  409. 14:15

    complete and this is also multiplayer

  410. 14:17

    which is really cool and you can have

  411. 14:18

    people working together. Yeah. So that's

  412. 14:20

    finished. Um and I you can also prompt

  413. 14:24

    from like inside the the app you can

  414. 14:27

    draw and have a prompt. So I can

  415. 14:28

    basically I can just take all of this uh

  416. 14:30

    and I can draw a little like so this is

  417. 14:32

    my prompt and I can wrap it in a task um

  418. 14:35

    and I can you know call it facial

  419. 14:37

    animation canvas control and then I can

  420. 14:41

    assign that to cloud and I can just hit

  421. 14:42

    run and so now that's working as well

  422. 14:44

    and so this is kind of like you know

  423. 14:46

    this is kind of something similar to

  424. 14:47

    conductor or openai symfony where you're

  425. 14:49

    using a kind of like one abstracted

  426. 14:51

    interface above uh what the actual in

  427. 14:54

    order to like manage your your multi-

  428. 14:55

    aent uh coordination and things like

  429. 14:57

    that And the thing I like about this

  430. 14:59

    also is that because this is

  431. 15:00

    multiplayer, one of my colleagues can

  432. 15:02

    come and join and add tasks and uh edit

  433. 15:04

    things and see the work that's been

  434. 15:06

    going on. So, it's much more

  435. 15:07

    collaborative than um like your own

  436. 15:09

    instance of something. Um here's the

  437. 15:12

    moment of truth. Let's see if that demo

  438. 15:13

    that I had it build in the beginning

  439. 15:16

    worked.

  440. 15:18

    Um

  441. 15:20

    all right, it's it hasn't built the

  442. 15:21

    fluid simulation yet. Uh it's been

  443. 15:23

    working for 13 minutes. Um

  444. 15:28

    that's actually fine. So basically this

  445. 15:29

    is the TL Draw desktop app. Um something

  446. 15:32

    that's really cool here is that we have

  447. 15:34

    uh so this is running locally. It's

  448. 15:35

    working on files. We'll see if it

  449. 15:37

    finishes. We'll we'll let this run. Um

  450. 15:39

    but basically what this does is this uh

  451. 15:42

    this basically exposes the editor

  452. 15:43

    instance of the TLR app that's running

  453. 15:45

    here. And it has a server that lets any

  454. 15:48

    agent uh for example my cloud code uh

  455. 15:50

    write just plain JavaScript against the

  456. 15:53

    against the editor. and and it it

  457. 15:57

    basically it you know it's it's code

  458. 15:59

    mode if you've ever used code mode um

  459. 16:01

    but you can basically turn your teal

  460. 16:03

    desktop app into um a like scripting

  461. 16:06

    environment and the one of my colleagues

  462. 16:09

    actually is u I'm going to this is this

  463. 16:13

    is the kind of off the rails bit of the

  464. 16:14

    canvas here um or of the of the talk. So

  465. 16:19

    here's something my colleague made uh

  466. 16:21

    using the same thing. So this is he has

  467. 16:23

    the teal draw desktop app in the corner

  468. 16:24

    here and he's using it as his uh window

  469. 16:27

    manager. Um and what he did the way he

  470. 16:30

    did this was he just told claude code to

  471. 16:32

    because cloud code has access to your

  472. 16:33

    actual computer. It's not locked into

  473. 16:35

    the canvas. Uh it basically you know it

  474. 16:37

    it made some rectangles and it uh

  475. 16:40

    probably wrote some Apple script or

  476. 16:41

    something to actually re uh you know

  477. 16:44

    move the things around. And so you can

  478. 16:45

    kind of make all of these uh like

  479. 16:47

    ephemeral UIs and have them actually be

  480. 16:50

    doing things in the real world. Um,

  481. 16:52

    another really cool one that he did was,

  482. 16:55

    um, if this loads, it's Pong on the

  483. 16:58

    desktop. Uh,

  484. 17:01

    let's hit it with a little refresh there

  485. 17:02

    and see if it works. Yeah. So, this is

  486. 17:05

    he's got in the corner here, you know,

  487. 17:07

    you you have uh you have TLR running.

  488. 17:10

    This is the desktop app and it's using

  489. 17:12

    the Windows in order to uh play Pong.

  490. 17:14

    And so again, like kind of crazy, but

  491. 17:17

    there's uh you know, maybe it seems a

  492. 17:19

    little silly, but

  493. 17:22

    let's see if this this worked. Oh, it's

  494. 17:24

    still working. Man, it was usually much

  495. 17:26

    faster. Um, but I I think this stuff is

  496. 17:29

    so cool because this lets you kind of,

  497. 17:30

    you know, do all of the weird kind of

  498. 17:32

    like spatial interfaces that you can do

  499. 17:35

    uh on the canvas. You get all of like

  500. 17:36

    the primitives of the canvas. Um, but

  501. 17:39

    you can like you can have your agents

  502. 17:40

    working kind of like in the real world.

  503. 17:43

    uh it has access to real data. If I

  504. 17:45

    scroll up, I'll show that um

  505. 17:48

    if uh you know this is my cloud code and

  506. 17:52

    it found it it got the Gmail, it got the

  507. 17:55

    notion doc, it found the spec and it's

  508. 17:57

    going to to implement it. Um

  509. 18:00

    but yeah, so to sum up, I think that

  510. 18:03

    agents working on the canvas is so cool

  511. 18:05

    and I think that there's like so much we

  512. 18:06

    can do if we use like the agent the

  513. 18:08

    canvas as a a place to work with agents.

  514. 18:11

    And I think the place part of it is

  515. 18:13

    really important because you know when

  516. 18:15

    we do you know with remote work

  517. 18:16

    collaboration we do a lot of stuff

  518. 18:18

    online with each other and we

  519. 18:20

    collaborate with people on the canvas

  520. 18:22

    and I think that the yeah the canvas can

  521. 18:24

    be a place where we uh collaborate with

  522. 18:26

    agents and I'm I'm I'm I'm vamping

  523. 18:28

    because I'm trying to see if this is

  524. 18:30

    finished but I don't think it's going to

  525. 18:31

    finish. Um, but thank you so much

  526. 18:49

    >> [music]