The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw
Read the talk
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
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.
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
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.
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.
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
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.
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
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.
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.
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
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.
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.
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
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.
Resources
Further reading
- 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.
Related talks
- Agents on the Canvas in tldraw
A companion talk on the same SDK and on-canvas agent setting.
- tldraw computer
Another tldraw talk to pair with the closing exploration of the canvas as a programmable environment.
- Code Mode: Let the Code do the Talking
Related to the code-mode approach Drake names when explaining JavaScript access to the desktop editor.
Read the complete timestamped transcript
- 0:01
[music]
- 0:13
Thank you for coming here to my talk to
- 0:16
watch me talk about uh agents on the
- 0:18
canvas. Um the first thing I'm going to
- 0:21
do though is uh before I have to record
- 0:23
my screen. Uh the first thing I'm going
- 0:25
to do is I'm going to ask my agent to do
- 0:27
something on the canvas.
- 0:30
And what I'm going to do is say, "Hey,
- 0:33
uh, my colleague Spencer just emailed me
- 0:35
a link to a notion document, uh, for a
- 0:37
really cool demo we could build with the
- 0:38
TL desktop app. Can you like find that
- 0:41
document and then can you build it on
- 0:42
the desktop app?"
- 0:45
Thank you.
- 0:50
Okay, so that's going to build uh, and
- 0:51
then we're going to come back to it
- 0:52
later and hopefully it'll work. Um, hi
- 0:55
everyone, my name is Max Reich. Thanks
- 0:57
so much for coming. Um I work on uh
- 1:00
agents on the canvas at uh TLA. I'm a
- 1:03
product engineer there. Um so first
- 1:05
things first, am I qualified to be
- 1:07
giving this talk? I like to think so.
- 1:08
I've been doing like agents on the
- 1:10
canvas stuff since before chat GBT came
- 1:12
out. Um I think it's really cool. I
- 1:14
think there's like so much UX stuff you
- 1:16
can do with when you get LM, you have
- 1:18
them working in space. Uh and I think
- 1:20
it's really interesting. I've been doing
- 1:21
it for about as long as you can have
- 1:23
been doing it. Um more recently I've
- 1:25
been talking about this a lot. Um,
- 1:27
here's some proof. Um, and yeah, so I
- 1:30
work at this company called Teal Draw.
- 1:32
Um, can I get a quick show of hands? Has
- 1:33
anybody ever heard of or used Teal Draw
- 1:35
before?
- 1:36
>> Yeah. Okay. Um, awesome. So, yeah, the
- 1:39
thing that you've probably used if you
- 1:41
use Teal Draw is, um, this app right
- 1:44
here. So, this is all Teal Draw. Uh,
- 1:46
this is a free uh, infinite canvas
- 1:48
whiteboarding app. Um, you know, we have
- 1:50
selections and arrows and resizing and,
- 1:53
you know, all the things that you need
- 1:55
in a in a whiteboard. Um, Traw is also
- 1:58
the company uh that makes this app. It's
- 2:01
based in London. It's where I work. Um,
- 2:03
but the last thing that TLAR is, which
- 2:05
is, I think, in my opinion, the most
- 2:06
important, is it's the Infinite Canvas
- 2:08
SDKs that that powers this app. Um, and
- 2:11
so what that means is that, you know,
- 2:13
this is kind of the teal draw. The SDK
- 2:15
is the engine that powers a lot of
- 2:17
Infinite canvas experiences. Um because
- 2:20
it turns out it's really hard to get
- 2:21
that kind of stuff right. Um and uh so
- 2:24
if you ever want to build a Muro
- 2:26
competitor or a slide designer or if
- 2:28
you're like Replet um Replet has their
- 2:31
whole new uh agent canvas stuff built on
- 2:33
top of TLR. Um, and so the reason we
- 2:36
built TL Draw in the first place was
- 2:38
that we were running into this issue or
- 2:40
people were running into this issue
- 2:41
where they had this idea for this like
- 2:42
really great killer canvas app. Uh, and
- 2:45
they went to go build it and everybody
- 2:46
would run into the same problem where
- 2:47
they would run into
- 2:50
they would have trouble making the
- 2:51
actual canvas part of of the app and
- 2:54
they would, you know, trying to deal
- 2:55
with resizing and selection and, you
- 2:57
know, all the matrix math. And the issue
- 2:59
is that they wouldn't be able to build
- 3:00
their actual app itself. They would get
- 3:02
stuck on the canvas. And so we built
- 3:03
Teal Draw to kind of be the engine um
- 3:06
that could power that could be the
- 3:07
canvas so that they could focus on the
- 3:09
actual app. Uh when LLM came out, we
- 3:12
like a lot of other people saw that this
- 3:13
is going to be this weird new type of
- 3:15
software. I don't know if anyone, you
- 3:17
know, I'm sure a lot of you were
- 3:18
building in 2022 and it was really
- 3:20
exciting. Um and a lot of people it was
- 3:22
the exact same thing. People had the
- 3:23
idea had an idea for this cool app that
- 3:26
would, you know, involve LM on the
- 3:28
canvas having them manipulating things
- 3:30
in space. but then they would try to
- 3:32
build it and they'd get stuck. Um there
- 3:34
were no best practices. People didn't
- 3:35
really know how to do it. And so at TL
- 3:37
Draw we uh realized that we need to make
- 3:39
it easy for people to build uh with
- 3:41
agents with LLMs on the canvas. Um and
- 3:45
also so Teal Draw the SDK as well as the
- 3:47
app has multiplayer built in with like
- 3:48
live sync. It's really nice. There's
- 3:50
cursors. There's you can see your
- 3:52
collaborators cursors and selections and
- 3:53
viewports. And I think all of the things
- 3:55
that make just the canvas in general a
- 3:57
really great uh place for interacting
- 4:00
with and collaborating with your
- 4:01
colleagues also make it a really great
- 4:04
place for interacting uh and
- 4:05
collaborating with agents. Uh and I hope
- 4:07
I'm going to be able to show you guys
- 4:08
some of that um in the demos that come
- 4:10
up. Um so before we talk about agents on
- 4:14
the canvas, uh really quickly I want to
- 4:15
talk about agents not on the canvas. Um
- 4:17
I'm sure you guys have all used an app
- 4:19
that looks like this, you know, claude
- 4:20
code. And I'm going to really
- 4:22
oversimplify here, but basically, uh,
- 4:24
part of the reason why these apps are so
- 4:26
good and why they work is because
- 4:27
they're, you know, the medium in which
- 4:29
they're working, writing code is
- 4:31
essentially the medium in which they
- 4:32
were trained. You know, it's it's text
- 4:33
in, text out. That's how they were
- 4:35
trained. Um, and when we work with them,
- 4:37
we give them a prompt and they write
- 4:39
code. It's text in, text out. Uh, you
- 4:41
know, again, oversimplifying, but that's
- 4:43
essentially how they work. I don't know
- 4:45
if you guys have ever, you know, tried
- 4:46
to get your agents to do like UI stuff
- 4:48
and try to get them align to align
- 4:49
something. found that they could not do
- 4:51
that whatsoever. Um because it turns out
- 4:54
agents are really really bad at working
- 4:56
in 2D space and understanding 2D space
- 4:58
and actually requires like a lot of
- 5:00
engineering work to get them to uh do
- 5:02
it. And that's kind of the project that
- 5:04
we've been embarking on at Teal Draw
- 5:06
recently. Um and so the first thing we
- 5:08
had to do, this is an older project, but
- 5:10
the first thing we had to do is get them
- 5:11
to teach them teach the agents or at
- 5:13
this point not agents LLM to understand
- 5:16
the canvas and understand kind of what
- 5:18
they're even looking at. Um, so we had
- 5:20
this project called teach um where um we
- 5:24
tal So I'm going to I'm going to prompt
- 5:25
this really quick. I'm going to say,
- 5:27
"Hey, make the mouse blow out the
- 5:28
candle."
- 5:31
Yeah. So that's going to take a second.
- 5:33
This is this is an older uh older
- 5:35
project, but basically what we had to do
- 5:37
is we had to kind of like teach the LMS
- 5:40
how to take the like the screenshot that
- 5:42
we give it and the JSON and all of the
- 5:43
other information about the canvas and
- 5:46
Oh yeah, there we Okay. So yeah, that's
- 5:48
some that's some wind. Uh it's
- 5:51
is it sometimes it gives us smoke as
- 5:53
well. Yeah, and we got a little smoke as
- 5:54
well. So So we basically had to take it
- 5:57
how to like and I want to be very clear
- 5:59
this is not um this is not like a
- 6:01
special mouse shape. These are just like
- 6:03
uh you know the these are just shapes uh
- 6:06
on the canvas. This is um and so the
- 6:08
work behind this it's a singleshot
- 6:10
prompt but we basically we tell the
- 6:12
agent how to interpret uh both via
- 6:14
screenshots and via the data um what is
- 6:17
actually on the canvas like what it's
- 6:18
looking at um which is actually you know
- 6:20
it's not a trivial problem and then also
- 6:23
how to we teach it how to actually act
- 6:25
on the canvas and to understand how the
- 6:27
actions that it produces will affect the
- 6:29
canvas. So, you know, it got it, you
- 6:31
know, it made the it made the smoke, it
- 6:32
made the it made the wind, it got the
- 6:34
positions right, and it understood what
- 6:36
it was doing. Um, so we we got this we
- 6:39
kind of figured out how the um like kind
- 6:42
of we got we taught it what the canvas
- 6:44
is. Uh, but this was like a single shot,
- 6:46
single prompt kind of thing. Um, and so
- 6:48
the next thing we built is the uh teal
- 6:50
draw agent starter kit. Uh, which
- 6:52
basically turns that and wraps in a
- 6:54
harness that lets an agent work
- 6:55
agentically on the canvas. Um, the code
- 6:57
is also MIT licensed. You can find it on
- 7:00
um that you can find on the website. So,
- 7:01
here's a little here's a little cat. I'm
- 7:03
going to make this a little bigger. Um
- 7:05
but what I'm going to say is, "Hey, so
- 7:07
somewhere else on the canvas uh there
- 7:10
are uh some friends for the cat. Can you
- 7:13
please uh bring one of them over to the
- 7:14
cat? Um her favorite color is red."
- 7:18
And so I'm going to zoom out. I'm going
- 7:20
to show you guys what's actually going
- 7:21
on. So you can see the the view of the
- 7:23
agent. There's some there's some
- 7:24
potential friends over here. And um you
- 7:26
know if you read the All right. So and
- 7:29
basically what's going on is that the
- 7:31
agent has kind of like we've given it a
- 7:33
prompt and uh using the information it
- 7:36
has about the canvas. It's uh going to
- 7:39
kind of like make some goals for itself.
- 7:40
You can see there's some to-dos in the
- 7:41
corner here. It's it changed its view in
- 7:44
order to see um what was you know the
- 7:48
other stuff that was on the canvas. same
- 7:49
way that if you ask a coding agent um
- 7:52
you know you ask it you know where where
- 7:54
do we define this thing in the codebase
- 7:56
it can go and it can search it can find
- 7:58
it. So this is kind of like turning that
- 8:00
singleshot uh prompting experience into
- 8:03
this kind of like agentic thing that you
- 8:05
can uh have you know it can autonomously
- 8:07
set goals and and work towards them. The
- 8:12
uh next thing we did um we did this this
- 8:15
uh project called fairies and so we
- 8:18
basically we had this agent experience
- 8:19
but we realized that you know teal draw
- 8:21
and you know the canvas in general is so
- 8:23
collaborative it's so multiplayer and we
- 8:24
wanted to basically we wanted people to
- 8:26
be able to work together with their
- 8:28
agents and we also wanted the agents to
- 8:30
be able to work together
- 8:32
so this is this is a ferry um there's
- 8:35
also you guys want to scan this QR code
- 8:37
you can actually this is multiplayer you
- 8:39
can join if you want you it requires a
- 8:41
Gmail signup But you don't need to pay
- 8:42
for tokens. Um, this is this is what the
- 8:44
link is. So, basically, this is a this
- 8:46
is a fairy. Um, this fair's name is is
- 8:48
Joan. They don't like being they don't
- 8:50
like being grabbed. Um, you can you can
- 8:52
throw them around. You know, we added a
- 8:54
lot of really important stuff. You can
- 8:55
um you can you can change its hat. Um,
- 8:59
you can change the the color and and
- 9:01
this seems silly, but it's actually
- 9:03
really important. uh and I'll talk about
- 9:04
this a little bit more later, but
- 9:05
actually understanding uh when you get a
- 9:07
high level view of when you see your
- 9:08
agents working on the canvas, it's
- 9:10
important to know which one is which.
- 9:11
And so differentiating them is actually
- 9:12
important, which is why, of course, we
- 9:14
added the leg slider. Um
- 9:17
but so, you know, I can say like, you
- 9:20
know, I can I can I can say hey to it.
- 9:22
Um
- 9:24
and I can say, you know, something like
- 9:26
draw a cat. Uh and I can have it work.
- 9:29
But the most important thing here is
- 9:31
that fairies have friends, right? and
- 9:32
they can here we go. Uh
- 9:36
>> and they can fairies can work together.
- 9:37
And so we kind of designed this like
- 9:38
multi- aent collaboration system that
- 9:40
works on the canvas. Um and I'm going to
- 9:44
actually I'm going to go to
- 9:46
I think one of my
- 9:49
Yeah, I think so. My my colleagues
- 9:50
agents are here working uh making this
- 9:52
this really great scene. Um I'm going to
- 9:55
bring mine over um summon
- 10:00
and I'm going to give them a slightly
- 10:01
different prompt. So, I'm gonna select
- 10:02
them all. And now I have a group chat of
- 10:03
of the agents, right? And I'm going to
- 10:05
say, "Hey, I have a board meeting coming
- 10:07
up in like 10 minutes, and I don't have
- 10:09
any of my my figures. Can you draw up
- 10:11
like a little memo for all of my uh
- 10:13
financial data for fiscal year 2025?
- 10:16
Thank you."
- 10:18
Okay. So, what what's going to happen
- 10:20
there basically is this kind of like
- 10:22
creates this uh multi- aent, you know,
- 10:24
coordination thing. We have uh one of
- 10:26
the fairies is writing uh writing out a
- 10:29
plan. You can see it. Um, and again, the
- 10:32
animations are kind of cute and funny,
- 10:34
but it's actually really important. I
- 10:35
don't have to read a chat or go through,
- 10:37
you know, imagine if I have 10 agents
- 10:38
working. I don't have to read a chat in
- 10:40
order to know what's actually going on.
- 10:42
I can look at the state of the agents.
- 10:44
Uh, and I can actually, you know, I can
- 10:46
can see what's happening. So, we we have
- 10:50
a task here that's been defined. Um,
- 10:54
it seems like, you know, the the ferry
- 10:55
is is uh waiting for that to to finish.
- 11:00
Yeah. So, that one's one's board. That
- 11:02
one's waiting. So, this is the
- 11:03
orchestrator ferry. What what it's done
- 11:04
is it's assigned the it's assigned the
- 11:06
task. Uh, and now it's waiting for the
- 11:09
other ones to start and finish it. Um,
- 11:10
and it's going to get notified. It's
- 11:12
going to get prompted in order in order
- 11:13
to review. Um, it seems like forever
- 11:16
reason's not working, but thank Oh,
- 11:19
never mind. So, yeah, we have one we
- 11:22
have this one. So yeah, we have one
- 11:23
fairy who made the made the task, one
- 11:25
fairy who's working on it. And so this
- 11:27
is this kind of um you know, multi- aent
- 11:30
coordination system on the canvas. I
- 11:31
have, you know, you can see my colleague
- 11:33
has his agents over here. Uh they're
- 11:34
they're working as well. Um and so you
- 11:37
can kind of collaborate with people and
- 11:38
with agents in this uh environment. And
- 11:41
I don't know, I think that's really
- 11:42
cool.
- 11:44
the
- 11:46
so the the next thing. So the problem
- 11:49
with fairies is that um they're kind of
- 11:52
trapped in the canvas and all the stuff
- 11:53
you've seen before. This requires if you
- 11:55
want to build something like this, this
- 11:56
requires like the you to like opt in and
- 11:59
have your entire harness be a like
- 12:00
canvas harness. Um and the downside of
- 12:03
that is that it makes it really hard to
- 12:04
have any of this work with stuff like
- 12:06
outside in the real world. The fairies
- 12:07
are the fairies are trapped in the
- 12:09
canvas. Um, and
- 12:13
so I I I built this experiment. We had a
- 12:15
little hackathon uh internally. Um, but
- 12:18
first as a quick motivation for that,
- 12:20
um, at Teal Draw whenever we have an
- 12:21
whenever we're getting closer to a
- 12:23
launch, we like abandon all of our task
- 12:25
tracking software and we make just one
- 12:27
massive dependency graph of how like so
- 12:30
this is what an actual this is a real
- 12:32
thing from when we launched fairies
- 12:33
actually. Um, and so this is what it
- 12:35
looks like when we're like really like
- 12:38
when is hitting the fan at at
- 12:39
tealraw when we're launching something.
- 12:41
Um, and I really like this interface
- 12:44
because it it kind of lets you This is
- 12:46
not like a special app. This is still
- 12:47
just tealraw.com. You can, you know,
- 12:49
move your shapes around and things like
- 12:51
that. Um, but I really like this because
- 12:53
it both it lets you see like what
- 12:55
depends on what. It lets you know what's
- 12:57
coming next. It lets you get a highle
- 12:58
overview. You know, these are all green
- 13:00
because we finished them, but you know,
- 13:01
you can imagine during the project, some
- 13:03
of them are in process. And I really
- 13:05
want I really wanted something like
- 13:06
this. Um, but something that I could
- 13:09
actually that could actually do the work
- 13:11
itself. And so I um prototyped this
- 13:14
thing. It's called the tech tree app.
- 13:16
And basically, it's similar to this.
- 13:17
It's a dependency graph, but each of
- 13:19
these tasks um is a a coding agent that
- 13:23
you can kick off and you can have your
- 13:26
agent kind of like be running and doing
- 13:27
them autonomously. Um the project itself
- 13:30
that's working on it's this little um
- 13:33
this is just kind of like a demo app. Um
- 13:35
but this is Can I
- 13:38
Yeah. So this is this is a little
- 13:41
fun, you know, multimodal input thing. I
- 13:44
haven't written any of the code for
- 13:45
this. This is um this is all written by
- 13:47
agents. But I can manage all of the work
- 13:49
is being done in this desktop app uh or
- 13:51
in this app here. And so I can do
- 13:53
something like I can see this one has
- 13:54
has finished uh building some gesture
- 13:57
controls for the canvas. So I can open
- 13:59
the PR uh and unfortunately sorry
- 14:01
Jeffrey I am just going to merge this.
- 14:03
I'm not going to uh have it be explained
- 14:06
to me. But so this is [snorts]
- 14:08
and so yeah great. Awesome. It looks
- 14:10
good. Um and then you know eventually
- 14:12
this is going to get marked uh as as
- 14:15
complete and this is also multiplayer
- 14:17
which is really cool and you can have
- 14:18
people working together. Yeah. So that's
- 14:20
finished. Um and I you can also prompt
- 14:24
from like inside the the app you can
- 14:27
draw and have a prompt. So I can
- 14:28
basically I can just take all of this uh
- 14:30
and I can draw a little like so this is
- 14:32
my prompt and I can wrap it in a task um
- 14:35
and I can you know call it facial
- 14:37
animation canvas control and then I can
- 14:41
assign that to cloud and I can just hit
- 14:42
run and so now that's working as well
- 14:44
and so this is kind of like you know
- 14:46
this is kind of something similar to
- 14:47
conductor or openai symfony where you're
- 14:49
using a kind of like one abstracted
- 14:51
interface above uh what the actual in
- 14:54
order to like manage your your multi-
- 14:55
aent uh coordination and things like
- 14:57
that And the thing I like about this
- 14:59
also is that because this is
- 15:00
multiplayer, one of my colleagues can
- 15:02
come and join and add tasks and uh edit
- 15:04
things and see the work that's been
- 15:06
going on. So, it's much more
- 15:07
collaborative than um like your own
- 15:09
instance of something. Um here's the
- 15:12
moment of truth. Let's see if that demo
- 15:13
that I had it build in the beginning
- 15:16
worked.
- 15:18
Um
- 15:20
all right, it's it hasn't built the
- 15:21
fluid simulation yet. Uh it's been
- 15:23
working for 13 minutes. Um
- 15:28
that's actually fine. So basically this
- 15:29
is the TL Draw desktop app. Um something
- 15:32
that's really cool here is that we have
- 15:34
uh so this is running locally. It's
- 15:35
working on files. We'll see if it
- 15:37
finishes. We'll we'll let this run. Um
- 15:39
but basically what this does is this uh
- 15:42
this basically exposes the editor
- 15:43
instance of the TLR app that's running
- 15:45
here. And it has a server that lets any
- 15:48
agent uh for example my cloud code uh
- 15:50
write just plain JavaScript against the
- 15:53
against the editor. and and it it
- 15:57
basically it you know it's it's code
- 15:59
mode if you've ever used code mode um
- 16:01
but you can basically turn your teal
- 16:03
desktop app into um a like scripting
- 16:06
environment and the one of my colleagues
- 16:09
actually is u I'm going to this is this
- 16:13
is the kind of off the rails bit of the
- 16:14
canvas here um or of the of the talk. So
- 16:19
here's something my colleague made uh
- 16:21
using the same thing. So this is he has
- 16:23
the teal draw desktop app in the corner
- 16:24
here and he's using it as his uh window
- 16:27
manager. Um and what he did the way he
- 16:30
did this was he just told claude code to
- 16:32
because cloud code has access to your
- 16:33
actual computer. It's not locked into
- 16:35
the canvas. Uh it basically you know it
- 16:37
it made some rectangles and it uh
- 16:40
probably wrote some Apple script or
- 16:41
something to actually re uh you know
- 16:44
move the things around. And so you can
- 16:45
kind of make all of these uh like
- 16:47
ephemeral UIs and have them actually be
- 16:50
doing things in the real world. Um,
- 16:52
another really cool one that he did was,
- 16:55
um, if this loads, it's Pong on the
- 16:58
desktop. Uh,
- 17:01
let's hit it with a little refresh there
- 17:02
and see if it works. Yeah. So, this is
- 17:05
he's got in the corner here, you know,
- 17:07
you you have uh you have TLR running.
- 17:10
This is the desktop app and it's using
- 17:12
the Windows in order to uh play Pong.
- 17:14
And so again, like kind of crazy, but
- 17:17
there's uh you know, maybe it seems a
- 17:19
little silly, but
- 17:22
let's see if this this worked. Oh, it's
- 17:24
still working. Man, it was usually much
- 17:26
faster. Um, but I I think this stuff is
- 17:29
so cool because this lets you kind of,
- 17:30
you know, do all of the weird kind of
- 17:32
like spatial interfaces that you can do
- 17:35
uh on the canvas. You get all of like
- 17:36
the primitives of the canvas. Um, but
- 17:39
you can like you can have your agents
- 17:40
working kind of like in the real world.
- 17:43
uh it has access to real data. If I
- 17:45
scroll up, I'll show that um
- 17:48
if uh you know this is my cloud code and
- 17:52
it found it it got the Gmail, it got the
- 17:55
notion doc, it found the spec and it's
- 17:57
going to to implement it. Um
- 18:00
but yeah, so to sum up, I think that
- 18:03
agents working on the canvas is so cool
- 18:05
and I think that there's like so much we
- 18:06
can do if we use like the agent the
- 18:08
canvas as a a place to work with agents.
- 18:11
And I think the place part of it is
- 18:13
really important because you know when
- 18:15
we do you know with remote work
- 18:16
collaboration we do a lot of stuff
- 18:18
online with each other and we
- 18:20
collaborate with people on the canvas
- 18:22
and I think that the yeah the canvas can
- 18:24
be a place where we uh collaborate with
- 18:26
agents and I'm I'm I'm I'm vamping
- 18:28
because I'm trying to see if this is
- 18:30
finished but I don't think it's going to
- 18:31
finish. Um, but thank you so much
- 18:49
>> [music]