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 799 seconds
The Spatial Harness: Bringing Agents to the Canvas

Max Drake traces tldraw’s experiments from interpreting a drawing to navigating a canvas, coordinating visible agents, managing coding tasks, and scripting a desktop editor.

From a talk by Max Drake

At a glance

Ideas worth remembering

  • A spatial harness needs to explain both perception and action: how screenshots and structured data describe the canvas, and how proposed edits affect it.

  • Autonomous canvas work adds goals, todos, and viewport movement to a single-shot editing capability. Viewport movement lets the agent seek information elsewhere in the workspace.

  • Visible agents serve two interface needs: distinctive appearances expose identity, while animations expose activity. An orchestrator can assign work, wait for completion, and receive a prompt to review it.

  • The later experiments loosen the canvas-specific boundary: a dependency graph manages coding agents, while a desktop server exposes the editor for JavaScript scripting by agents with access to outside work.

  • Access to information and successful implementation are separate milestones. Drake reports that the opening agent found the email, document, and specification, but the fluid-simulation build remained unfinished at the close.

A task running alongside the talk

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 48 seconds
A task running alongside the talk

The presentation opens by putting an agent to work. Drake asks it to find a Notion document linked in an email from his colleague Spencer, then build the proposed demo in the desktop app. He leaves it running while he introduces his work on canvas agents. The request combines finding information outside the canvas with implementing something inside it, setting up a test that he will return to later.

0:250:33
Suggest correction

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

0:01 · section reference included

An engine for the canvas, then a foundation for agents

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 131 seconds
An engine for the canvas, then a foundation for agents

tldraw has three roles in Drake’s account: a free infinite-canvas whiteboarding app, the London company that builds it, and the SDK underneath it. The app supplies familiar operations such as selection, arrows, and resizing. The SDK makes those capabilities available to other canvas products, including Replit’s agent canvas. Drake considers this reusable engine the most important part of the company’s work.

The SDK addresses a recurring implementation trap. Developers would start with an idea for a canvas application, then spend their effort on selection, resizing, and matrix math before reaching the application itself. Providing the canvas engine lets them concentrate on their product. Drake says language models introduced a similar obstacle one layer higher: people wanted models to manipulate objects in space, but lacked established practices for making that interaction work.

The canvas already has useful collaboration machinery. Both the app and SDK support live synchronization, with collaborators’ cursors, selections, and viewports visible to one another. Drake’s premise is that these same signals can help people collaborate with agents: a shared workspace can reveal where a participant is looking and what it is manipulating.

1:301:46
Suggest correction

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

1:30 · section reference included

Why a coding harness does not automatically solve space

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 259 seconds
Why a coding harness does not automatically solve space

Drake gives an explicitly simplified explanation of coding agents’ success: writing code fits the text-in, text-out medium in which language models were trained. A user supplies a textual prompt, and the model produces textual code. He contrasts that with requests to align interface elements, where his experience has been that agents struggle to understand and operate in two dimensions.

This is a motivation for engineering a spatial harness, rather than a measured claim that every agent fails at layout. In Drake’s account, understanding two-dimensional space and taking useful actions within it require substantial additional work. That work becomes the subject of the successive tldraw experiments.

4:224:24
Suggest correction

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

4:10 · section reference included

Reading ordinary shapes and predicting edits

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 353 seconds
Reading ordinary shapes and predicting edits

The first experiment establishes basic canvas interpretation. Drake asks a model to make a mouse blow out a candle. The model receives a screenshot, JSON, and other information about the canvas. The engineering task is to explain how these representations describe the scene, so the model can connect what it sees with the underlying canvas data.

The mouse is not a special semantic shape with a built-in action. It is composed of ordinary canvas shapes. Drake reports that the result adds wind and a little smoke in the appropriate positions. The example therefore asks the model to interpret a composition of shapes as a scene and choose edits that express the requested event, rather than invoke a predefined mouse behavior.

Interpretation is only half of this interface. The model also needs instructions for acting on the canvas and understanding how its proposed actions will change it. This experiment uses a single-shot prompt: it demonstrates an interpretation-and-edit capability, but does not yet provide an agent that can independently search, plan, and continue working. Drake also notes that smoke appears only sometimes, so the example should not be read as a guarantee of identical results.

5:105:11
Suggest correction

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

5:06 · section reference included

Giving the agent goals and a movable viewport

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 460 seconds
Giving the agent goals and a movable viewport

The tldraw agent starter kit wraps that earlier capability in a harness for autonomous canvas work. Drake identifies its code as MIT licensed. His example asks the agent to find a friend elsewhere on the canvas and bring it over to a cat, adding that the cat’s favorite color is red. This introduces a task whose relevant objects extend beyond the starting view.

The agent uses the prompt and available canvas information to make goals for itself, displayed as todos. It changes its own viewport to inspect other parts of the canvas. Drake compares this to a coding agent searching a repository for a definition: moving the view provides a way to seek information that is not immediately in front of the agent. The important extension is the ability to set goals and work toward them through further inspection, rather than produce one edit from one prompt. The narration explains that behavior without explicitly confirming the final friend placement.

6:486:50
Suggest correction

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

6:48 · section reference included

Making agents recognizable participants

The next project, fairies, brings agents into the canvas’s multiplayer setting. The goal is to let people work together with their agents and let agents work with one another. Drake introduces a visible fairy named Joan, demonstrates grabbing and throwing it, and shows appearance controls such as hats, color, and a leg slider. He also offers the audience access to the multiplayer demo, saying it requires Gmail signup but no token payment.

The customization has a practical purpose beneath the playfulness. When several agents are working across a canvas, a user needs to recognize which one is which from a high-level view. Distinct appearances provide that identity. Individual fairies can receive requests such as drawing a cat, while the broader system supports collaboration among them.

8:128:15
Suggest correction

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

8:12 · section reference included

A group chat with visible delegation and waiting

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 687 seconds
A group chat with visible delegation and waiting

Drake moves to a scene where a colleague’s agents are already working, summons his own agents, and selects them together. Selecting multiple agents opens a group chat. He asks the group to prepare a memo of fiscal year 2025 financial data for a board meeting in 10 minutes. The request illustrates group coordination; the narration does not establish a completed memo or the accuracy of any financial figures.

One fairy writes a plan and acts as the orchestrator. It defines and assigns a task, then waits for other agents to start and finish the work. Completion is intended to notify the orchestrator and prompt it to review the result. Drake briefly thinks the interaction is not working, then identifies one fairy that has created the task and another working on it. The demonstrated state is delegation in progress, with review described as the next step.

Animations make working state readable without requiring the user to inspect every conversation. Drake uses the example of 10 agents: their visible states can tell the user what is happening without reading 10 chat histories. Together with recognizable appearances and a shared canvas containing colleagues’ agents, this gives the interface a way to expose both identity and activity at a glance.

9:499:50
Suggest correction

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

9:44 · section reference included

Turning a dependency graph into an interface for coding work

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 781 seconds
Turning a dependency graph into an interface for coding work

Fairies expose a boundary in the earlier design: their harness is built around the canvas, making integration with work outside it difficult. Drake describes them as trapped in the canvas. His next experiment uses the canvas to manage agents that can do coding work elsewhere, rather than requiring all their activity to fit a canvas-specific harness.

The interface comes from a practice at tldraw: near a launch, the team replaces its task-tracking software with one large dependency graph on an ordinary canvas. Shapes remain movable, dependencies show what must happen before something else, and colors expose progress. Drake shows a graph from the fairies launch whose tasks are green because they are finished. He wants to preserve that overview while making the graph capable of initiating the work it represents.

The prototype is called the tech tree app. Each task in its dependency graph is a coding agent that can be started and run autonomously. The demonstration project is a small multimodal-input app that Drake says agents wrote entirely. He opens a pull request for a completed gesture-control task and merges it during the demonstration without asking for an explanation. The task subsequently appears complete. This shows a connection between graph tasks and pull-request handling, but the quick merge supplies little evidence about the implementation’s quality.

The canvas also becomes a surface for specifying new work. Drake draws a prompt, wraps it in a task, names it facial animation canvas control, assigns it to an agent, and starts it. This places an interface above the individual coding agents for managing their work. Because the app is multiplayer, colleagues can join, add tasks, edit them, and see what has been happening. The shared graph combines task specification, execution controls, and an overview that multiple people can use.

11:4611:49
Suggest correction

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

11:46 · section reference included

Exposing the editor to an agent outside the canvas

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 1077 seconds
Exposing the editor to an agent outside the canvas

Returning to the opening request, Drake finds that the fluid simulation has not been built after 13 minutes. The agent is running locally and working on files, so he leaves it running. This becomes an introduction to the desktop app’s mechanism: it exposes the running editor instance through a server, allowing an agent to write plain JavaScript against the editor. Drake calls this code mode and describes the desktop app as a scripting environment.

An agent with access to the computer can connect this editor scripting to effects outside the canvas. Drake presents a colleague’s example that uses canvas rectangles as a window-manager interface for real desktop windows. He says the agent made rectangles and moved the windows, but only speculates that AppleScript or something similar handled the movement. The supported mechanism is the connection between canvas controls and desktop actions; the specific operating-system integration is not established.

A second example uses actual desktop windows to play Pong, with the tldraw desktop app running in the corner. Drake refreshes the example before describing it as working. The playful demonstration illustrates the broader idea of temporary spatial interfaces that control real computer activity. It does not establish how reliably such an interface would behave in routine use.

The opening build is still running when Drake checks again. He nevertheless identifies progress in finding the inputs: the agent retrieved the Gmail message, obtained the Notion document, and found the specification. The architecture lets an agent use canvas primitives while retaining access to real data and work outside the canvas. Retrieval has succeeded in his account, while implementation remains unfinished; those are distinct outcomes.

15:1215:13
Suggest correction

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

15:12 · section reference included

The canvas as a shared place to work

Selected presentation frame from The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw at 1104 seconds
The canvas as a shared place to work

Drake closes by emphasizing the canvas as a place to work with agents. His analogy is remote collaboration: people already meet and work together online through shared canvases, and agents could participate in that same kind of environment. The proposal centers on a shared working place where people and agents can collaborate.

The talk ends without the background build completing. Drake acknowledges that he has been extending the closing remarks while waiting and does not think it will finish in time. That ending leaves a concrete limitation alongside the proposal: giving an agent access to a shared spatial environment does not ensure that a requested implementation will complete within the available time.

18:0018:03
Suggest correction

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

18:00 · section reference included

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]