AI Engineer World's Fair 2026

How Software Factories Improve Themselves — Suraj Gupta, Warp

Suraj Gupta· Warp12:52

Read the talk

How Software Factories Improve Themselves

Suraj Gupta explains how Warp improves recurring agent work through human-reviewed skill changes, reusable memories, and model routing informed by task-specific evaluations.

From a talk by Suraj Gupta

At a glance

Ideas worth remembering

  • Separate the agent doing recurring work from the agent improving its procedure. Propose skill changes through pull requests so humans can review them and Git can preserve their history.

  • Retain investigation facts for later runs, and keep memories editable and traceable so a mistaken or narrowly useful conclusion does not become permanent guidance.

  • Improve model routing with comparisons on your task classes. Warp’s internal UI-task finding illustrates this approach; customer-facing evaluations were still planned at the time of the talk.

The factory needs its own improvement loop

A coding agent can finish an assignment while leaving the next run no better prepared. That becomes a maintenance problem when agents repeatedly handle work from issue triage through production. Suraj Gupta, who leads harness development at Warp, frames the next engineering responsibility as building and maintaining these software factories—and improving how the factory works over time. 0:12

Source frame: The factory needs its own improvement loop
Source frame: The factory needs its own improvement loop

Warp began with a modern terminal and an agentic development environment; the work described here extends into a cloud agent platform for teams running factories. Three mechanisms organize the talk: skills retain procedures, persistent memory retains facts from previous work, and model routing changes which model handles a task. Each gives the factory something it can carry forward into later runs.

Suggest correction

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

0:12 · section reference included

Turn triage feedback into a reviewed skill change

A skill gives an agent procedural memory: instructions for a task it will perform repeatedly. A triage skill might explain how to reproduce an issue. But the procedure can become dated as agents discover useful approaches and humans correct their decisions. Unless that experience changes the skill, later runs keep starting from the old instructions. 2:06

Source frame: Turn triage feedback into a reviewed skill change
Source frame: Turn triage feedback into a reviewed skill change

Warp separates execution from improvement. The inner-loop agent applies the skill and does the triage. An outer-loop agent examines those runs, looks for mistakes, and collects human feedback. Its output is a proposed change to the procedure that future triage runs will use.

The demonstration uses the triage workflow in Warp’s open-source client repository. A newly submitted GitHub issue triggers the agent. It identifies missing information that would help decide whether the request should become new work, be deduplicated against an existing issue, or receive another disposition. The outer loop then examines those decisions alongside feedback from the issue thread.

  • Reactions: Thumbs-up and thumbs-down provide feedback signals on the issue.
  • User comments: Follow-up discussion supplies additional feedback about the triage.
  • Employee comments: Warp employees can directly correct or guide the agent’s work.

How does feedback become a change without immediately rewriting the running agent’s behavior? The loop below puts a pull request between the outer-loop proposal and the skill used in subsequent runs. Git records how the procedure changes, and a human reviews the update before accepting it. That review matters because an improvement agent can also make a mistake and produce a worse triage procedure.

How it fits togetherA skill improves through a separate review loop

Procedure used for recurring issue triage.

Execution produces evidence; the outer loop proposes a procedural change. Human review separates that proposal from its adoption.

Suggest correction

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

2:04 · section reference included

Let the next investigation use what the last one learned

Procedures do not capture everything worth remembering. Consider a Sentry agent that investigates an issue, gathers context, finds the root cause, and fixes it. When a similar issue appears later, a fresh run may fail to find the same cause. Even if it succeeds, it spends tokens gathering context the factory already gathered once. 5:39

Persistent memory carries that investigation forward. Gupta describes it as a fact store scoped to an agent. An outer-loop agent extracts facts, learnings, and outcomes from the inner-loop run, making them available to future runs. The retained material answers what previous work discovered; the skill still describes how to do the work.

In Oz, Warp’s cloud agent platform, the Sentry agent has accumulated memories from earlier root-cause analyses. Reuse also creates a curation problem: an agent can retain an unimportant observation or a conclusion that worked locally but should not guide future work. Oz exposes versioning and human controls to create, edit, or delete memories, along with links to their source runs. Opening a source run fails during this demonstration; Gupta suspects that changing IP addresses and staging IP restrictions explain the failure. That provenance navigation is described rather than completed on screen. Its practical purpose is clear: a questionable memory can be examined in the context that produced it and removed if it should not persist.

The Sentry example then develops into a visible record of reuse. A later run performs another investigation and reports which memories it used—five in the demonstrated store. Gupta attributes faster work to that reuse. The concrete change is that earlier investigation results now participate in a later run; the demonstration does not quantify the speed or token savings.

The memory layer is presented as working across harnesses running in Oz. Automatic memory creation therefore belongs to the platform’s surrounding workflow, while humans retain the ability to review, version, delete, and edit what it remembers. Changing the harness need not mean giving up this shared mechanism for retaining previous work.

Suggest correction

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

5:32 · section reference included

Choose models for recurring classes of work

A factory multiplies the cost of a model choice across recurring work. Using Opus for every triage task or simple CI fix can become prohibitively expensive. Model routing makes that choice depend on the task, so relatively simple work does not automatically inherit the cost of the model selected for harder work. 8:46

Source frame: Choose models for recurring classes of work
Source frame: Choose models for recurring classes of work

Warp offers two ways to make that decision:

  • Auto models: Warp maintains routers and evaluates new models for Pareto efficiency—the tradeoff between useful performance and cost, rather than assuming one model should handle everything. Gupta recommends this as a starting point over pinning every task to Opus or Haiku.
  • Custom routing rules: A configuration assigns classes of tasks to models. The demonstration includes database migrations assigned to GLM, plus a separate assignment for runbooks and API documentation. These rules express the operator’s judgment about which model suits each kind of work.

Custom rules alone leave the choice “more of an art than a science.” The next step described in the talk is customer-facing evaluation: define what matters in your workflow, vary routing choices, and compare models on a specific class of issues. A generic benchmark cannot settle whether Haiku, GLM, or Opus handles your particular work best. At the time of the recording, these customer-facing evaluation tools are planned work.

Suggest correction

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

8:46 · section reference included

Use evaluations to improve the routing rules

Warp already uses an internal evaluation sidecar alongside its routing rules. A prompt is run through multiple agents in Oz using different models, and the comparisons help determine which models work better for which tasks. This supplies the missing improvement mechanism. Routing rules begin as choices; repeated comparisons give the team evidence for changing those choices. 11:42

What relationship does this evaluation make visible? The diagram separates the rules used to choose a model from the comparisons used to inform those rules. The useful output is knowledge about a task class, which can guide later routing rather than remaining an isolated result from one run.

One internal finding changes a concrete routing decision: Gupta reports that GLM handles UI tasks well enough that Warp can use it more efficiently than Opus for that work. The talk supplies no quantitative scores, scoring procedure, or task distribution, so this supports Warp’s reported routing choice rather than a general ranking of the models. The closing product direction is to bring these evaluations into customers’ own workflows, allowing each factory to improve its routing with evidence from the work it actually performs.

How it fits togetherComparing models informs future routing

Work submitted for an agent to perform.

The internal sidecar compares agents using different models on a prompt. Task-specific findings inform model choices; customer-facing evaluations are the proposed next step.

Suggest correction

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

11:19 · section reference included

Resources

From the talk

  • WarpReference

    The development environment and cloud agent platform used in the demonstrations of triage skills, persistent memory, and model routing.

Read the complete timestamped transcript
  1. 0:12

    Um my name is Siraj Gupta. I lead

  2. 0:14

    Harness development at Warp. Um in case

  3. 0:16

    you haven't heard of Warp before, um we

  4. 0:18

    started off by building a

  5. 0:20

    state-of-the-art agentic development

  6. 0:22

    environment. Um we have about a million

  7. 0:24

    active users that use that. Um it was

  8. 0:26

    born out of a modern-day terminal.

  9. 0:28

    Um and nowadays we're building a um

  10. 0:31

    cloud agent platform to enable teams to

  11. 0:33

    build software factories.

  12. 0:35

    Um today I'm going to talk about um

  13. 0:38

    self-improving software factories, which

  14. 0:40

    I know might sound kind of buzzy, um

  15. 0:43

    but I'm going to break it down and

  16. 0:44

    hopefully you can walk out of here with

  17. 0:45

    something concrete that you can

  18. 0:46

    implement yourselves.

  19. 0:48

    Um you've probably heard of both of

  20. 0:50

    these terms, self-improvement and

  21. 0:52

    software factories, used throughout this

  22. 0:53

    conference, but I'm sure you've heard of

  23. 0:55

    them independently.

  24. 0:57

    Um

  25. 0:57

    you've heard about how

  26. 0:59

    self-improvement is about agents being

  27. 1:01

    able to

  28. 1:02

    um

  29. 1:03

    improve over time and agents and models

  30. 1:06

    um

  31. 1:06

    and, you know, phasing out humans from

  32. 1:08

    that loop, so that way the the

  33. 1:10

    improvement loop can be automatic. Um

  34. 1:13

    and I'm sure you've heard about software

  35. 1:14

    factories being

  36. 1:16

    um the way that like the software

  37. 1:18

    development paradigm is shifting from

  38. 1:20

    individual coding agents to building out

  39. 1:22

    automations that take work from triage

  40. 1:25

    up until production. Um but less has

  41. 1:27

    been said about how software factories

  42. 1:30

    themselves can self-improve over time,

  43. 1:32

    so that the the factory can get better,

  44. 1:34

    more efficient, faster. Um and I think

  45. 1:37

    this is going to become an extremely

  46. 1:38

    important part of our jobs as software

  47. 1:40

    engineers as we transition from building

  48. 1:43

    products to building factories and and

  49. 1:45

    maintaining them.

  50. 1:46

    Um so let's dive in. Um

  51. 1:49

    self-improvement is a pretty broad

  52. 1:50

    umbrella, but I'm going to focus on

  53. 1:52

    three concrete ways that agents can

  54. 1:54

    improve over time, agent factories can

  55. 1:57

    improve over time. I'm going to start

  56. 1:58

    with um skills, then we'll talk about

  57. 2:00

    persistent memory, and then I'll finish

  58. 2:02

    off by talking about model routing.

  59. 2:04

    Um so

  60. 2:06

    skills are a great way to give your

  61. 2:07

    agents procedural memory. I don't think

  62. 2:09

    I have to kind of spell that out for

  63. 2:10

    you. You describe a a procedure to your

  64. 2:13

    agent that you expect it to have to do a

  65. 2:15

    task over and over. Um for example,

  66. 2:18

    let's say you're building a triage

  67. 2:19

    agent, which is a pretty common thing

  68. 2:20

    you might build in a software factory.

  69. 2:23

    Um

  70. 2:24

    and you give it a skill on how you want

  71. 2:26

    it to go about reproducing issues. Um

  72. 2:28

    those skills get stale over time. Um

  73. 2:30

    humans give feedback to the agents.

  74. 2:32

    Agents learn things in their own um runs

  75. 2:35

    and trajectories.

  76. 2:36

    Um and

  77. 2:38

    the like the skill that you previously

  78. 2:40

    gave it becomes dated. So, how do we fix

  79. 2:42

    this and let the agent improve over time

  80. 2:44

    using that skill?

  81. 2:45

    Well, one way to do it is to deploy an

  82. 2:47

    outer loop agent. Um and this is what

  83. 2:49

    we've done in our own internal software

  84. 2:51

    factory that's been really productive.

  85. 2:53

    The idea is that your um

  86. 2:56

    your inner loop agent is the thing

  87. 2:58

    that's actually applying the skill. It's

  88. 3:00

    like doing the triage. And then you have

  89. 3:02

    this other outer loop agent that is

  90. 3:03

    observing your inner loop agent's runs

  91. 3:06

    and improving its skill over time by

  92. 3:08

    looking for

  93. 3:09

    um

  94. 3:10

    for mistakes it made or looking at

  95. 3:12

    feedback that the human has given it.

  96. 3:14

    Um so, I'm going to show an example of

  97. 3:15

    that.

  98. 3:16

    Um let me swap here. Cool. Um so, this

  99. 3:20

    is actually a skill that we've used

  100. 3:22

    internally at Warp. We've open-sourced

  101. 3:24

    our client repository and it's fully run

  102. 3:26

    as as a factory. And so, this is an

  103. 3:28

    example of an of a

  104. 3:31

    of a skill that's that's backing a

  105. 3:32

    triage agent that we have today.

  106. 3:34

    The idea is that um

  107. 3:37

    you you get an issue that comes in on

  108. 3:39

    GitHub, and you want to automatically

  109. 3:41

    run an agent to figure out like what

  110. 3:43

    sorts of um

  111. 3:44

    like it what sort of information did the

  112. 3:46

    user not provide that is going to help

  113. 3:48

    us figure out if this is something that

  114. 3:49

    we should build, an existing issue that

  115. 3:51

    we might actually just want to dedupe

  116. 3:52

    against or something else.

  117. 3:54

    Um

  118. 3:55

    and then we have a Sorry, let me just

  119. 3:57

    switch over here.

  120. 3:59

    And then we have a workflow that

  121. 4:01

    actually like runs that that triage um

  122. 4:05

    agent.

  123. 4:06

    Um this is a pretty simple workflow. It

  124. 4:07

    just Every time an an an issue gets

  125. 4:10

    submitted on the repo, this

  126. 4:11

    um this workflow runs. And then here's

  127. 4:14

    the actual outer loop agent, which is

  128. 4:15

    about looking at the the work that the

  129. 4:18

    triage agent has done and improving it

  130. 4:19

    over time. So, the idea is that the

  131. 4:22

    agent looks at the decisions that the

  132. 4:24

    triage the inner loop triage agent made,

  133. 4:26

    and it um collects feedback signals,

  134. 4:28

    which might be uh you know, thumbs up or

  135. 4:30

    thumbs down on the issues. Um it might

  136. 4:33

    be users commenting on the issue. It

  137. 4:35

    might be someone from Warp um an

  138. 4:37

    employee of Warp commenting on the

  139. 4:38

    issue, uh giving the agent feedback on

  140. 4:40

    what it did.

  141. 4:42

    Um and then ultimately that leads to

  142. 4:44

    like some synthesis of of the of that um

  143. 4:48

    iteration. And so, we we end up

  144. 4:50

    basically updating our inner loop skill

  145. 4:53

    with this outer loop agents. Um and

  146. 4:55

    that's what leads to this

  147. 4:56

    self-improvement loop with skills.

  148. 4:58

    What's really nice about this is that um

  149. 5:00

    the

  150. 5:01

    So, in step four, you'll see we we added

  151. 5:03

    the triage skill, and then we open a

  152. 5:04

    pull request. So, that means that um all

  153. 5:06

    of the improvements to the inner loop

  154. 5:08

    skill are going to be tracked through

  155. 5:10

    get. So, you get like full observability

  156. 5:12

    into like how that skill is transformed

  157. 5:14

    over time. And that it also means that

  158. 5:16

    um

  159. 5:17

    a human is actually going to review

  160. 5:18

    those updates to the skill. So, that

  161. 5:20

    way, you know, this this outer loop

  162. 5:21

    agent doesn't make a mistake and

  163. 5:23

    ultimately cause your triage agent to to

  164. 5:24

    actually perform worse.

  165. 5:26

    Um

  166. 5:27

    yeah, so that's that's kind of what what

  167. 5:29

    I want to talk about for skills. Um

  168. 5:32

    let me talk about persistent memory now.

  169. 5:35

    So, I'm going to go back to my deck.

  170. 5:37

    Um

  171. 5:39

    cool. So, skills are great for

  172. 5:41

    remembering procedures, but what about

  173. 5:42

    everything else? So, like what what

  174. 5:44

    happens when your Sentry agent

  175. 5:46

    um looks for

  176. 5:48

    an issue and

  177. 5:50

    and finds an issue, does some work to

  178. 5:52

    like gather context about it, and fixes

  179. 5:55

    it, but then now you have you encounter

  180. 5:57

    a similar issue in the future.

  181. 6:00

    Your century your agent might get lucky

  182. 6:02

    and like be able to figure out the same

  183. 6:05

    root cause that it did the first time

  184. 6:06

    around, but that's not guaranteed. And

  185. 6:08

    and even if it does, you're you've

  186. 6:10

    probably wasted a lot of tokens

  187. 6:11

    re-gathering context on an issue that

  188. 6:13

    you've already fixed before. So, that's

  189. 6:15

    where

  190. 6:16

    something like persistent memory comes

  191. 6:17

    in.

  192. 6:18

    You can think of this as a fact store

  193. 6:20

    scoped to an agent. Your agent runs and

  194. 6:23

    similar to the skill improvement loop,

  195. 6:24

    you have an outer loop agent that's

  196. 6:26

    going to extract facts, learnings,

  197. 6:27

    outcomes

  198. 6:28

    from your from your inner loop agent.

  199. 6:30

    So, that way future runs of the agent

  200. 6:32

    can lean on what's already been done in

  201. 6:33

    the past.

  202. 6:35

    So, I'm going to show an example of

  203. 6:36

    this. Come back to the deck here.

  204. 6:39

    So, in warp or in Oz rather, like I

  205. 6:42

    mentioned, we built out a a cloud agent

  206. 6:43

    platform where you can run agents in the

  207. 6:45

    cloud. And

  208. 6:48

    for all for all these agents, you can

  209. 6:49

    attach memory stores to them. Again, a

  210. 6:51

    memory a memory store is a collection of

  211. 6:53

    facts. In this case, I have a century

  212. 6:55

    agent that

  213. 6:57

    has collected some memories over time

  214. 7:00

    about root cause analysis that it's done

  215. 7:02

    in the past. What's cool is like you can

  216. 7:04

    actually version this memory, you can

  217. 7:05

    update it as a human, create new

  218. 7:07

    memories or delete them yourselves,

  219. 7:09

    but primarily this this memory creation

  220. 7:11

    loop is driven by agents. You can also

  221. 7:14

    see where these memories were sourced

  222. 7:16

    from. So,

  223. 7:17

    I can actually like open up the run here

  224. 7:19

    to see

  225. 7:20

    Oh, well.

  226. 7:22

    I think this my IP address here keeps

  227. 7:24

    changing and this my our staging

  228. 7:25

    platform is gated to an IP address, but

  229. 7:28

    anyways,

  230. 7:29

    you should like

  231. 7:30

    you can see where those memories were

  232. 7:32

    sourced from. So, that way you can be

  233. 7:34

    like, oh, like maybe that wasn't

  234. 7:35

    actually an important memory or that was

  235. 7:36

    kind of like a local maxima that I don't

  236. 7:38

    want to include in my memory store. Um

  237. 7:41

    and then when your agents continue to

  238. 7:43

    run, so in this case I have the sentry

  239. 7:45

    agent that's

  240. 7:46

    um that's done a bunch of runs after

  241. 7:48

    it's created those memories, it actually

  242. 7:49

    can lean on those memories in the future

  243. 7:51

    um when it's making um

  244. 7:53

    when it's triaging new issues. So in

  245. 7:55

    this case, you'll notice that um

  246. 7:57

    this agent ran, it did a bunch of work

  247. 7:59

    to do some root cause analysis, and then

  248. 8:01

    it ultimately reported back on which

  249. 8:02

    memories it used

  250. 8:04

    um

  251. 8:05

    uh in this case it it it it was able to

  252. 8:07

    use those um five memories that I had in

  253. 8:09

    that memory sort to to speed up the work

  254. 8:11

    that I did this time around.

  255. 8:13

    Um,

  256. 8:15

    cool. Uh

  257. 8:16

    let me go back to the deck.

  258. 8:20

    So,

  259. 8:21

    what's cool in Oz is that persistent

  260. 8:23

    memory works across all harnesses, so

  261. 8:25

    Warp Zone, proprietary harness, plot

  262. 8:27

    code, Kodak, it doesn't really matter

  263. 8:28

    what you're running on Oz, um memories

  264. 8:30

    will automatically be created for you.

  265. 8:32

    Um, but you also have the control to to

  266. 8:35

    review those memories, version them,

  267. 8:37

    delete them, or edit them as you please.

  268. 8:39

    Um, all that being fully traceable.

  269. 8:42

    Um, cool. That's what I wanted to say

  270. 8:44

    about memory. Um,

  271. 8:46

    last thing I want to talk about here is

  272. 8:48

    model routing. So, um you may be

  273. 8:50

    wondering how this plays into

  274. 8:51

    self-improvement loops for um factories.

  275. 8:54

    Well, first I want to touch on why model

  276. 8:55

    routing is important in a factory in the

  277. 8:56

    first place.

  278. 8:57

    Um, it can become prohibitively

  279. 8:59

    expensive to run all of your agents that

  280. 9:01

    are doing simple things like triage or

  281. 9:03

    fixing simple CI failures with Opus.

  282. 9:05

    That's just like going to be really

  283. 9:07

    expensive over time, and I'm sure some

  284. 9:08

    of you have maybe been burnt by this or

  285. 9:10

    have heard stories of of or

  286. 9:12

    organizations being burnt by this. Um,

  287. 9:14

    so model like choosing which models you

  288. 9:16

    use for which tasks that is actually

  289. 9:18

    very important um and something that

  290. 9:19

    we're we've been working on at work.

  291. 9:21

    Um, so in Warp, you can actually use uh

  292. 9:24

    our out-of-the-box model routers, we

  293. 9:25

    call them our auto models. Um, over like

  294. 9:28

    as new models come out, we're all we're

  295. 9:29

    always evaluating like what are the best

  296. 9:31

    models when it comes to Pareto

  297. 9:32

    efficiency. And so, like if you're a new

  298. 9:35

    user and you just want to get started,

  299. 9:36

    it's much better than like pinning your

  300. 9:38

    model to like Opus or or or Haiku, for

  301. 9:41

    example. Um

  302. 9:44

    let me show you all um that experience

  303. 9:46

    in Warp.

  304. 9:47

    So, let me go here.

  305. 9:53

    Give me 1 sec.

  306. 9:54

    Got to drag this over here.

  307. 9:56

    So, here I have my Warp desktop um and

  308. 9:59

    you can see that um alongside being able

  309. 10:01

    to define models um

  310. 10:04

    being able to use Warp's auto models is

  311. 10:06

    one option, like these models here, but

  312. 10:08

    you can also define your own model

  313. 10:10

    routed um

  314. 10:12

    uh models, which uh basically boil down

  315. 10:15

    to like a set of rules that you can give

  316. 10:16

    um to us and we will like make decisions

  317. 10:19

    about model routing based on those

  318. 10:20

    rules. So, here I have an example of a

  319. 10:23

    configuration file that I've defined um

  320. 10:25

    where I've defined a few different rules

  321. 10:26

    about like I want database migrations

  322. 10:29

    done with with GLM fire with GLM or I

  323. 10:31

    want um you know, uh runbooks and API

  324. 10:34

    documentation done with Quen. Um

  325. 10:38

    So, this really allows you to like like

  326. 10:39

    to define classes of tasks and be able

  327. 10:42

    to say, "Okay, I want this this class of

  328. 10:44

    task done by this model because that's

  329. 10:46

    kind of what you've seen."

  330. 10:47

    At this point though, that's kind of

  331. 10:49

    more of an art than a science um and so

  332. 10:52

    uh what we're working on next is being

  333. 10:53

    able to define evals for um

  334. 10:56

    customer-facing evals where you can

  335. 10:58

    actually define what sorts of things you

  336. 11:00

    care about and what knobs you want to

  337. 11:02

    turn on these configurations and

  338. 11:04

    actually see, "Okay, is is Haiku better

  339. 11:07

    than fi- than GLM than Opus in a

  340. 11:10

    specific class of issues?" That's like

  341. 11:11

    specific to your workflows and not just

  342. 11:13

    some like generic benchmark that um that

  343. 11:16

    someone posted online.

  344. 11:19

    Um let me go back here. Give me a sec.

  345. 11:24

    Cool.

  346. 11:30

    Cool. Um

  347. 11:33

    and yeah, so let me uh I'm in my

  348. 11:35

    slideshow.

  349. 11:42

    So, here is kind of like a a high-level

  350. 11:44

    overview of how this works in Warp

  351. 11:46

    today. So, um internally we have our

  352. 11:48

    model routing rules, um but then we have

  353. 11:51

    like an eval sidecar that's determining

  354. 11:53

    um what sorts of tasks are actually

  355. 11:55

    better with which models. And we do this

  356. 11:56

    with a simple like best-at-k um approach

  357. 11:59

    where when you type a prompt, we run a

  358. 12:01

    bunch of agents in Oz uh across a

  359. 12:03

    different set of models. Um and we found

  360. 12:05

    success in like being able to determine,

  361. 12:06

    "Oh, like UI tasks are really well done

  362. 12:09

    with GLM. Um we don't really need to run

  363. 12:11

    those with Opus. It's much more

  364. 12:12

    efficient to run those with GLM."

  365. 12:14

    Um so, that's how we've been using it,

  366. 12:15

    but um sooner enough we're going to be

  367. 12:16

    building this into our product so that

  368. 12:18

    way our our customers can actually use

  369. 12:20

    it in their own workflows. Um

  370. 12:23

    Yeah, that's uh that's mostly what I had

  371. 12:25

    today. Um

  372. 12:26

    we're around in a booth around that

  373. 12:28

    side. So, if you're interested in this

  374. 12:29

    kind of stuff, come talk to me. I'm

  375. 12:31

    always down to talk about this kind of

  376. 12:32

    stuff. But yeah, thanks for your time

  377. 12:34

    today. That's all I had.

  378. 12:49

    >> [music]