AI Engineer World's Fair 2026

No, That's Not a Software Factory — Ryan Cooke, WorkOS

Read the talk

No, That's Not a Software Factory

WorkOS’s first sandbox could produce pull requests, but Ryan Cooke found little difference from engineers using coding agents locally. TARS and Horizon extend automation into planning, review, project coordination and context gathering—the work that turns code into a product.

From a talk by Ryan Cooke

At a glance

Ideas worth remembering

  • A sandbox can generate code without improving product delivery. WorkOS’s initial experience pushed it toward automating planning and coordination alongside implementation.

  • Ticket dependencies and completion webhooks let TARS continue a project without a fresh prompt at every handoff; requested reevaluation helps expose missing work.

  • Draft Hilltop documents reduce setup work and give engineers something to refine, but scope control remains an important human contribution.

  • An internal MCP gateway becomes more useful when it explains where information lives and when to query it. WorkOS reuses that guidance for coding, data analysis and customer analysis.

  • Evaluate customer delivery alongside defect rate, recovery time and voluntary adoption. Company-wide memory and session-driven improvement are future directions; authorization remains unresolved.

A pull request is an output. What did it change?

The familiar software-factory recipe is straightforward: put a repository in a sandbox, add a coding agent, give it a prompt, and merge the resulting pull request. Ryan Cooke, an engineer at WorkOS, opens with that recipe because it leaves an important question unanswered: does the organization actually deliver more useful software?

Source frame: A pull request is an output. What did it change?
Source frame: A pull request is an output. What did it change?

Counts of pull requests, percentages attributed to AI, and quantities of generated code describe production activity. They do not establish that the activity advances a customer outcome. More pull requests can make an automation system look successful while leaving the harder question—whether features reach customers sooner—unresolved. That distinction matters when building the factory itself consumes engineering time and potentially a dedicated team.

WorkOS’s ambition is to give each engineer something like a small engineering team. The consequence should be observable in delivery: more features shipped, with complex work completed faster. Cooke’s account offers qualitative experience and proposed success measures rather than numerical delivery or reliability results; it explains the design and its intended benefits without establishing their magnitude.

1:001:02
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

The sandbox worked; the surrounding process needed work

WorkOS began with a sandbox built on Cloudflare, a model router, and prompts. The disappointing result was how ordinary it felt. Cooke found the outcomes pretty indistinguishable from engineers driving coding agents on their laptops. Moving execution into a sandbox had not, by itself, removed enough of the surrounding work to change product delivery.

Source frame: The sandbox worked; the surrounding process needed work
Source frame: The sandbox worked; the surrounding process needed work

The next design question was how to put WorkOS’s engineering processes inside the factory. Engineers do more than write code: they organize projects and carry work through the steps needed to produce a product. Automating those steps required the system to participate in the tools where that work already happened.

That led to two parts with different responsibilities:

  • TARS: The interface to the coding agent lives in Slack, Linear and GitHub. It also subscribes to webhooks so it can track project progress alongside its code work.
  • Horizon: The infrastructure orchestration layer sits in front of an internal MCP gateway. It provides the execution infrastructure, while the gateway connects the agent to organizational tools and context.
3:143:21
Suggest correction

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

3:11 · section reference included

Webhooks turn ticket completion into the next action

A dependency between Linear tickets gives the factory a plan it can follow. One ticket blocks another; completing the first changes which work can proceed. Because TARS receives ticket-completion webhooks, it can pick up the next ticket automatically. Planning therefore supplies both the units of work and their execution order, reducing the need for a person to issue a fresh prompt at every handoff.

Source frame: Webhooks turn ticket completion into the next action
Source frame: Webhooks turn ticket completion into the next action

The plan can also change as implementation reveals gaps. Between completed tickets, an engineer can ask TARS to reevaluate the Linear project and identify missing work. This is a separate operation from advancing to the next ticket: advancement follows the existing plan, while reevaluation checks whether the plan still covers the project’s goal.

What connects a finished ticket to continued execution, and where can the plan be reconsidered? The diagram separates those paths. The completion event drives the next handoff; an intervening request can send TARS back to the project plan to look for gaps. The useful autonomy comes from reacting to project state, rather than treating each coding session as an isolated task.

How it fits togetherExecution follows project events; reevaluation revisits the plan

Tickets describe smaller units of work and their dependencies.

Ticket completion can trigger the next unit of work. A requested reevaluation checks for missing tickets as implementation exposes gaps.

5:275:30
Suggest correction

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

5:07 · section reference included

From a Slack brief to a reviewed Hilltop

At WorkOS, engineers carry many product responsibilities; Cooke says teams do not have product managers. Their planning ritual is a Hilltop document, a product requirements document that gathers the project’s purpose, customer needs, competitive analysis, early designs and major milestones. Consolidating those inputs gives an agent a coherent resource from which to break the project into units of work.

Source frame: From a Slack brief to a reviewed Hilltop
Source frame: From a Slack brief to a reviewed Hilltop

The PM agent automates the first pass through that ritual. A brief specification becomes a draft Hilltop; the agent adds context, reads human reviews, and breaks implementation into tickets. Humans can comment on generated tickets and refine the work throughout the process. Approval is also an event the factory understands: once the Hilltop has been reviewed and approved through Linear, the system can begin the project automatically.

The concrete example is a new API for Vaults, a product Cooke leads. He starts the project with a Slack command and a few sentences describing the goal. TARS creates the Linear project, a draft Notion document, and first passes at decision logs and open questions. The observable change is from a short request to an organized set of project resources that the lead engineer can immediately edit.

Cooke then adds specifications and fills in poorly defined areas using his knowledge of the project. The example is still awaiting its Hilltop review: completing that review ticket will let TARS detect the change and move to the next implementation stage. The review is therefore doing two jobs. It improves the product definition, and its recorded completion tells the automation when work may advance.

The benefit is partly the familiar “blank page problem.” Cooke reports that teams are doing more project-brief and Hilltop work because the agent seeds the information. The drafts can grossly overestimate a project’s scope, requiring engineers to cut substantial portions. The tradeoff is deliberate: reviewing and trimming an existing draft can be easier than creating every project primitive from scratch. Work then continues through Slack and Linear toward GitHub pull requests.

6:316:35
Suggest correction

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

6:31 · section reference included

The MCP gateway teaches agents where to look

The resulting project documents are useful beyond WorkOS’s own coding agent. Engineers can point Devin at the same tickets and documentation, or let a local coding harness retrieve the material through MCP. Security colleagues can also join the project channels and weigh in. The planning work remains useful even when a different agent performs implementation.

Source frame: The MCP gateway teaches agents where to look
Source frame: The MCP gateway teaches agents where to look

WorkOS calls its internal MCP gateway a “context engine.” Connecting tools is only part of its job. It also builds system prompts and context that explain when to use a tool, how to navigate it, and how WorkOS organizes information inside it. Those descriptions give an agent a starting map rather than merely a list of available operations.

Snowflake makes the mechanism concrete. It is WorkOS’s main data lake, with semantic tables describing product utilization and customer conversations. The MCP tool description can list those tables, explain their contents, and direct the agent to query the appropriate tables for a particular type of question. The query still has to be written; the gateway supplies the organizational knowledge needed to choose where to write it.

How does one gateway serve both software implementation and internal analysis? The diagram shows the shared connection: multiple agent-facing workflows use the same tool access and navigation guidance. WorkOS opened the MCP server to Slack queries for data and customer analysis, then began building other internal tools on it. That reuse is why Cooke recommends investing early in a gateway that explains both the tools and the company’s information organization.

How it fits togetherOne context engine, several uses

Horizon and local coding harnesses use organizational tools and documentation.

The gateway combines access to internal systems with instructions about their contents and use. Coding and analysis workflows can reuse that knowledge.

11:0311:05
Suggest correction

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

11:03 · section reference included

Extend the process to triage, then improve its infrastructure

The same event-driven approach extends beyond planned features:

  • Bug requests: TARS listens through webhooks to requests arriving in Slack, takes a first pass at triage, and can implement fixes and open pull requests.
  • Customer support: Shared customer Slack channels provide support requests. TARS can inspect the code to help identify where a customer may be encountering a product problem.
Source frame: Extend the process to triage, then improve its infrastructure
Source frame: Extend the process to triage, then improve its infrastructure

WorkOS is also using TARS to build its own sandbox infrastructure. The motivation for moving away from some sandbox services is deeper control over session information and the ability to move workloads among parts of its infrastructure. Owning that layer becomes relevant when the factory needs to inspect how work happens, rather than simply launch an agent and collect its output.

The next planned component is a company-wide memory layer: continually useful context about what people are working on, their teams, the products they own, and how WorkOS does its work. The intended consumers include both the factory and other AI tools. This is a proposed expansion of shared organizational context, with no completed memory implementation described in the talk.

14:1114:14
Suggest correction

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

14:06 · section reference included

Measure delivery, reliability and the choice to use it

The closing measurement discussion returns to customer impact. Shipping faster is valuable only if the products remain dependable, and a tool that engineers voluntarily choose offers a different signal from one that merely generates activity. Cooke identifies three areas to watch:

  • Delivery and customer impact: Does the factory help useful work reach customers?
  • Reliability: Track defect rate and time to recovery to watch for instability introduced by the new workflow.
  • Voluntary adoption: Look for engineers choosing TARS and cloud sandboxes over their local harnesses. Cooke treats this as an anecdotal indication that the system helps them work.
Source frame: Measure delivery, reliability and the choice to use it
Source frame: Measure delivery, reliability and the choice to use it

Infrastructure visibility is meant to feed a further improvement loop. Agents could examine sessions to find gaps in how engineers use the factory, identify mistakes that call for a new skill, and recognize skills that have become obsolete as the code changes. A skill written six months earlier may no longer fit the current code. Better code generation and better engineering practice are goals of this loop, rather than demonstrated self-improvement results.

16:1116:14
Suggest correction

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

15:57 · section reference included

The process can advance; authorization remains unresolved

“Sandboxes are great.” Opening a pull request is useful. WorkOS’s larger aim is to encode the engineering practices that carry a project from intention through planning and execution. The Vaults example makes that ambition concrete: a Slack brief creates resources, an engineer refines them, a review ticket records approval, and TARS can react to that event to continue the project.

Source frame: The process can advance; authorization remains unresolved
Source frame: The process can advance; authorization remains unresolved

Cooke ends with an unresolved question: authorization. WorkOS has not yet figured out how it should handle authorization for this factory, and he asks other builders how they approach it. That limits what the workflow demonstrates. Approval events can coordinate when work advances, but the talk does not supply a settled model for who may authorize the agent’s actions across its connected systems.

18:0718:09
Suggest correction

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

18:02 · section reference included

Read the complete timestamped transcript
  1. 0:12

    Well, thank you for joining

  2. 0:14

    the final day of the conference here. I

  3. 0:15

    know it's been a long week.

  4. 0:18

    But I'm excited to talk about a topic

  5. 0:21

    here that is very near and dear to me.

  6. 0:24

    Software factories.

  7. 0:26

    Um

  8. 0:27

    You this is probably not a new concept

  9. 0:30

    to any of you. I'm guessing if you're

  10. 0:31

    all here, you're very familiar with

  11. 0:33

    software factories. You know, Ramp

  12. 0:35

    blogged about their inspects

  13. 0:38

    several months ago. I think maybe

  14. 0:40

    December last year. I forget exactly

  15. 0:41

    when. It's been a little while. And that

  16. 0:43

    really kind of like excited the entire

  17. 0:45

    industry of thinking like, oh, we can

  18. 0:47

    actually build software very differently

  19. 0:49

    now that AI is extremely capable of

  20. 0:52

    writing code. Um a lot of other

  21. 0:55

    companies have followed suit. Um and

  22. 0:58

    there's kind of like a standard set up

  23. 1:00

    here. Uh you have a sandbox that you put

  24. 1:02

    your code into. Um you put a an AI agent

  25. 1:06

    in there. Maybe a Claude code section or

  26. 1:09

    an open code.

  27. 1:11

    Um and with a prompt, it generates a PR

  28. 1:13

    and you merge it.

  29. 1:15

    Um

  30. 1:15

    You might be building this already

  31. 1:17

    [clears throat] yourself.

  32. 1:18

    We have taken a slightly different

  33. 1:21

    approach at WorkOS.

  34. 1:23

    Um and the motivation for what we are

  35. 1:26

    building is that we see a lot of the

  36. 1:30

    kind of success metrics um really

  37. 1:33

    focusing on output, right? Like you'll

  38. 1:35

    see posts on X and blogs

  39. 1:38

    talking about the percentage of PRs or

  40. 1:41

    the number of pull requests or how much

  41. 1:43

    code uh is being generated by AI

  42. 1:47

    moving into production. Um and this is

  43. 1:49

    just really output metrics that

  44. 1:53

    um

  45. 1:53

    you know, this can actually disguise how

  46. 1:56

    well these systems are working.

  47. 1:59

    Percentage of PRs or number of PRs

  48. 2:02

    may be lying in overall increase in PRs.

  49. 2:04

    It's very hard to distinguish

  50. 2:06

    whether the output is actually driving

  51. 2:09

    outcomes.

  52. 2:11

    And so that's kind of where we focus our

  53. 2:14

    efforts when we're thinking about a

  54. 2:15

    software factory. It's like if we're

  55. 2:17

    going to go put engineering time into

  56. 2:20

    building this level of automations and

  57. 2:22

    there's a

  58. 2:23

    bit of work that needs to go into this.

  59. 2:25

    Full-time teams dedicated to this.

  60. 2:27

    How do we want to think about the

  61. 2:30

    success of this and whether this is

  62. 2:32

    actually driving value for our

  63. 2:33

    organization, our engineering

  64. 2:35

    organization?

  65. 2:36

    And so we measure instead of just code

  66. 2:40

    output, we're looking at outcome

  67. 2:42

    metrics.

  68. 2:44

    And that is really about like are we

  69. 2:46

    accelerating our ability to deliver

  70. 2:48

    features?

  71. 2:50

    We think that the dream of the software

  72. 2:51

    factory is that it gives each of our

  73. 2:54

    engineers a small engineering team for

  74. 2:56

    themselves. And so the consequence of

  75. 2:58

    that really needs to be that we're

  76. 3:00

    building more and we're shipping more

  77. 3:02

    and that as we embark on complex

  78. 3:04

    features, those can get built a lot more

  79. 3:07

    a lot more quickly.

  80. 3:11

    So what does this actually look like?

  81. 3:12

    Well,

  82. 3:14

    we kind of started with the same thing

  83. 3:16

    you've seen in other other

  84. 3:19

    factories.

  85. 3:21

    We start with a sandbox we built on top

  86. 3:22

    of Cloudflare. We put an open code model

  87. 3:26

    router in there. We're feeding it

  88. 3:27

    prompts.

  89. 3:29

    Um,

  90. 3:29

    and we kind of very quickly kind of ran

  91. 3:32

    into this situation where this wasn't

  92. 3:34

    driving more outcomes. This was not an

  93. 3:37

    incremental increase or an exponential

  94. 3:39

    increase over engineers just driving

  95. 3:41

    cloud code on their laptops. It was

  96. 3:43

    actually pretty indistinguishable for

  97. 3:45

    us.

  98. 3:47

    And so we really kind of started to

  99. 3:48

    think about, well,

  100. 3:49

    how can we embed our engineering

  101. 3:52

    processes into the factory itself? It's

  102. 3:56

    not sufficient that the factory is

  103. 3:58

    producing code. We actually want it to

  104. 4:00

    take a lot of the other work that our

  105. 4:02

    engineers do to produce products and

  106. 4:05

    automate that as well.

  107. 4:08

    So, we kind of split this into two

  108. 4:09

    parts.

  109. 4:10

    One is we have the system we call TARS.

  110. 4:13

    This is a way for users to interact with

  111. 4:18

    the coding agent. And it is embedded

  112. 4:21

    into the tools that we use. So, not just

  113. 4:24

    Slack, but also Linear and GitHub.

  114. 4:27

    We subscribe to webhooks through TARS so

  115. 4:29

    that TARS can actually track the

  116. 4:31

    progress of projects

  117. 4:34

    in addition to generating the code

  118. 4:36

    outputs.

  119. 4:38

    And then we built a separate system

  120. 4:39

    called Horizon.

  121. 4:42

    And this is the infrastructure

  122. 4:43

    orchestration layer. This is a lot more

  123. 4:45

    similar to

  124. 4:47

    Inspects and Minions and and some of the

  125. 4:49

    other systems that other companies have

  126. 4:51

    built.

  127. 4:52

    But, it sits in front of an MCP gateway.

  128. 4:56

    And I'm going to talk a little bit more

  129. 4:57

    about why that MCP gateway has been

  130. 5:01

    really transformational for us.

  131. 5:07

    So, by

  132. 5:08

    feeding our webhooks, activities that

  133. 5:12

    are happening in other uh source code

  134. 5:14

    systems and project tracking systems,

  135. 5:17

    we're starting to get to that level of

  136. 5:18

    autonomy where

  137. 5:20

    our

  138. 5:21

    factory is performing product

  139. 5:23

    engineering work, not just code work.

  140. 5:25

    So, what's an example of this?

  141. 5:27

    In Linear, we can define tickets that

  142. 5:30

    have dependencies. So, one ticket blocks

  143. 5:32

    another ticket. Pretty common for, you

  144. 5:34

    know, breaking down uh large units of

  145. 5:36

    work into smaller ones.

  146. 5:38

    Because

  147. 5:40

    uh TARS is getting webhooks on ticket

  148. 5:42

    completion, it can automatically pick up

  149. 5:44

    the next ticket in a cycle. And so, we

  150. 5:47

    can do through our planning process

  151. 5:50

    construct like a map of how this plan we

  152. 5:53

    think this plan is going to get executed

  153. 5:55

    and TARS can start to execute on that

  154. 5:57

    autonomously. The other thing that we

  155. 5:59

    have is in between those steps when a

  156. 6:01

    ticket is completed, we can ask TARS

  157. 6:04

    "Can you reevaluate the linear project

  158. 6:06

    and let me know if it's missing now

  159. 6:07

    tickets?" Because as you do work, you're

  160. 6:10

    learning about where the gaps in your

  161. 6:12

    plan. And we want to continuously keep

  162. 6:16

    our our plan fresh by using the agent

  163. 6:19

    itself. Because the agent is determining

  164. 6:22

    that there may be missing pieces to what

  165. 6:25

    we initially planned for the project and

  166. 6:27

    the goal that we have in mind.

  167. 6:31

    So, we run this product engineering

  168. 6:33

    culture at WorkOS. This is where

  169. 6:35

    engineers are responsible for a lot of

  170. 6:37

    the product functions. We don't have

  171. 6:39

    product managers on teams today.

  172. 6:41

    Um and one of the rituals as part of

  173. 6:45

    this product engineering process is we

  174. 6:46

    create a hilltop document. It's a PRD

  175. 6:49

    and it is intended to

  176. 6:52

    both define what is the purpose of this

  177. 6:54

    project, but also incorporate

  178. 6:58

    um what are customers talking about?

  179. 7:00

    Like where are we seeing the need for

  180. 7:01

    this unit of work? Uh it looks at

  181. 7:04

    competitive analysis. Like are there

  182. 7:06

    similar products out in the market today

  183. 7:08

    that we can draw inspiration from? We

  184. 7:10

    start to bring design early design

  185. 7:12

    screens into this.

  186. 7:13

    Um and we outline like what are the

  187. 7:15

    major milestones. And so, by kind of

  188. 7:18

    consolidating and canonicalizing this

  189. 7:21

    information into a document, this is

  190. 7:23

    something our product engineers have

  191. 7:24

    been doing uh throughout the entire uh

  192. 7:27

    company.

  193. 7:28

    Um

  194. 7:29

    now we can ask give this resource to an

  195. 7:31

    agent and an agent can break this into

  196. 7:33

    units of work.

  197. 7:34

    Uh and so, this has been a really uh

  198. 7:37

    powerful way for us to take existing

  199. 7:39

    processes

  200. 7:40

    and encode them into the factory

  201. 7:42

    themselves. Like I mentioned that it's

  202. 7:45

    listening for web hooks. I'll show an

  203. 7:46

    example of what this looks like, but it

  204. 7:48

    it can see that the hilltop document

  205. 7:51

    through linear tickets has been reviewed

  206. 7:54

    and approved and by virtue of it being

  207. 7:57

    approved can start work on this project

  208. 7:59

    automatically. So we don't need a human

  209. 8:01

    to be shepherding this agent through

  210. 8:03

    every single step of the life cycle.

  211. 8:09

    So we created an agent specifically for

  212. 8:12

    this part of the process. We call it the

  213. 8:13

    PM.

  214. 8:14

    And it is doing the first draft of the

  215. 8:17

    hilltop based on the brief specification

  216. 8:20

    that we give it.

  217. 8:21

    It's adding context to that in addition

  218. 8:25

    to reading the human reviews and then it

  219. 8:27

    picks up the implementation and breaking

  220. 8:29

    that into tickets.

  221. 8:31

    And there's an opportunity for humans to

  222. 8:33

    stay in the loop for each part of this

  223. 8:35

    process. I mean it's very common for a

  224. 8:38

    human to intervene or comment on a

  225. 8:39

    ticket that's generated by AI, give it

  226. 8:41

    further guidance or refinements.

  227. 8:44

    Um but it's really about that like cold

  228. 8:46

    start problem where we can kind of get

  229. 8:49

    over the hump of creating all these

  230. 8:50

    different resources. Okay, so what does

  231. 8:52

    this actually look like?

  232. 8:55

    So here's a project I kicked off last

  233. 8:57

    month two months ago.

  234. 8:59

    Um we're adding a new API to products I

  235. 9:01

    lead called Vaults.

  236. 9:03

    And with a command here in

  237. 9:07

    um

  238. 9:08

    in Slack

  239. 9:09

    I can kick off this project with a

  240. 9:11

    simple description, usually a few

  241. 9:12

    sentences of what I'm trying to

  242. 9:14

    accomplish.

  243. 9:16

    Tarsin goes in and creates all these

  244. 9:18

    resources for me. I don't need to go and

  245. 9:20

    create the project in linear. I don't

  246. 9:21

    need to create a draft of the notion

  247. 9:23

    document.

  248. 9:25

    Um

  249. 9:25

    all of the decision logs and the open

  250. 9:28

    questions.

  251. 9:29

    Um Tars is creating a first pass at

  252. 9:31

    that. And so this then gives me an easy

  253. 9:34

    framework for me to step into as the

  254. 9:37

    lead product engineer and start giving

  255. 9:39

    more specification, rounding out areas

  256. 9:42

    that aren't well defined with knowledge

  257. 9:45

    that I had know about what we're trying

  258. 9:46

    to accomplish with the project, and then

  259. 9:49

    hand it back to Tars uh for execution.

  260. 9:53

    So, here's an example of uh the project.

  261. 9:57

    Um and it's like I said, it sets up

  262. 9:58

    these first

  263. 10:00

    milestones around our product

  264. 10:02

    engineering process. So, we haven't done

  265. 10:05

    the hilltop review yet here. When that's

  266. 10:07

    done, we'll uh

  267. 10:09

    we'll we'll mark this ticket as complete

  268. 10:12

    and Tars will pick that up and move on

  269. 10:14

    to the next stage of project

  270. 10:15

    implementation.

  271. 10:17

    So,

  272. 10:18

    what we found is like a lot of

  273. 10:21

    teams are now doing more project brief

  274. 10:24

    and hilltop work because our agent can

  275. 10:27

    seed all that information. It's that

  276. 10:29

    blank page problem with writing. If you

  277. 10:32

    can come into a document that already

  278. 10:33

    has information, and you know, these

  279. 10:35

    agents aren't perfect. There are times

  280. 10:37

    where it grossly overestimates what

  281. 10:40

    we're trying to accomplish with this

  282. 10:42

    project, and we have to cut out a lot of

  283. 10:43

    the scope that it comes up with. But,

  284. 10:45

    that's fine. That's a lot simpler for an

  285. 10:47

    engineer to add input into into rather

  286. 10:51

    than them spending time to set up all

  287. 10:52

    these primitives themselves.

  288. 10:54

    And then we can continue to drive this

  289. 10:56

    work, you know, through Slack, through

  290. 10:58

    Linear,

  291. 10:59

    um and ultimately uh results in PRs in

  292. 11:02

    GitHub.

  293. 11:03

    The other thing that this lets us do is

  294. 11:05

    we don't necessarily always need to use

  295. 11:07

    our coding agent to implement uh pieces

  296. 11:11

    of work. Uh Devin is very popular. We

  297. 11:13

    have a lot of folks that really like

  298. 11:14

    using Devin. They can point Devin to

  299. 11:17

    these tickets and the same documentation

  300. 11:20

    to give Devin the context it needs to go

  301. 11:22

    and implement different parts of the

  302. 11:23

    work. Uh same with the local cloud code

  303. 11:26

    if you're just using Opus in a local

  304. 11:28

    harness.

  305. 11:29

    Um it can grab through MCP all of these

  306. 11:33

    uh

  307. 11:34

    all of these pieces of documentation and

  308. 11:38

    use that as context for its work.

  309. 11:41

    And then, of course, we have people that

  310. 11:43

    collaborate in these project channels as

  311. 11:44

    well. You'll notice our security team

  312. 11:46

    will come in and look take a look at new

  313. 11:48

    projects, weigh in on the security

  314. 11:50

    implications, and so forth.

  315. 11:59

    So, I alluded to we we kind of early on

  316. 12:03

    in the the development of our factory is

  317. 12:05

    created our own MCP gateway.

  318. 12:07

    Um, we call it our context engine.

  319. 12:10

    Um, this connects into all of our

  320. 12:11

    internal systems, but it also builds

  321. 12:15

    system prompts and context around what

  322. 12:18

    how to navigate these tools and when to

  323. 12:20

    use these tools.

  324. 12:21

    So, it is connected into Snowflake,

  325. 12:25

    which is our main data lake. We have

  326. 12:28

    semantic tables that we've built in

  327. 12:30

    Snowflake that describe product

  328. 12:32

    utilization or customer conversations.

  329. 12:35

    And then, we can provide an agent

  330. 12:38

    through our MCP server in the tool

  331. 12:40

    description

  332. 12:42

    list of here are the tables, this is the

  333. 12:44

    content they

  334. 12:45

    contain. If you're trying to answer

  335. 12:47

    questions about this type of content,

  336. 12:50

    write a query for these tables. And so,

  337. 12:52

    it gives us a little bit of orientation

  338. 12:54

    to an agent to understand how to use how

  339. 12:57

    we use our tools, how we've organized

  340. 12:59

    linear in Snowflake, and give some

  341. 13:03

    guidance on where to find information.

  342. 13:06

    What has been really

  343. 13:08

    surprising about this is we actually now

  344. 13:10

    use this MCP server across a lot of

  345. 13:12

    other different internal tools.

  346. 13:15

    We open it up for people to query

  347. 13:17

    directly from Slack

  348. 13:19

    to do data or customer analysis. And so,

  349. 13:21

    while we initially kind of envisioned

  350. 13:23

    that this would just be a way to connect

  351. 13:25

    our agent or coding agent to all of our

  352. 13:27

    systems. Uh this has been an incredible

  353. 13:30

    piece of leverage for a lot of our

  354. 13:32

    internal teams, and we're building a lot

  355. 13:34

    of other tools on top of this MCP

  356. 13:37

    gateway. So, if you're just getting

  357. 13:38

    started with thinking about a software

  358. 13:40

    factory, it's well worth your time to

  359. 13:43

    invest in an internal MCP gateway server

  360. 13:46

    that both connects all your tools,

  361. 13:49

    has descriptions that can tell the agent

  362. 13:51

    how to use those tools and how you

  363. 13:53

    specifically organize the information in

  364. 13:55

    them, and I think you'll find that that

  365. 13:58

    ends up being useful in a lot of other

  366. 14:00

    use cases.

  367. 14:06

    Like I mentioned, we try to automate

  368. 14:09

    other parts of our software development.

  369. 14:11

    Um we have like bug

  370. 14:14

    bug requests that come in through Slack.

  371. 14:17

    Uh so, TARS through webhooks can listen

  372. 14:18

    to those and take a first pass at

  373. 14:21

    triaging and implementing opening PRs to

  374. 14:24

    fix bugs.

  375. 14:25

    Uh we have a lot of our customers uh in

  376. 14:28

    shared channels in Slack, as well.

  377. 14:30

    Uh we found TARS to be pretty useful to

  378. 14:33

    uh triage

  379. 14:34

    support requests that we're getting

  380. 14:36

    through them, because it can look at the

  381. 14:38

    code, it can often understand like where

  382. 14:40

    the customer might be running into

  383. 14:42

    problems with our product uh from the

  384. 14:44

    code perspective.

  385. 14:46

    Um I showed you an example of how we

  386. 14:48

    kind of organize major features around

  387. 14:50

    this.

  388. 14:51

    Uh and then the last place I think is

  389. 14:53

    really exciting, we're all trying to get

  390. 14:55

    to the self-improving software, or the

  391. 14:57

    self-driving software. So, we're using

  392. 14:59

    uh TARS to actually build out our own uh

  393. 15:02

    sandbox infrastructure.

  394. 15:05

    So, we want to move off of some of the

  395. 15:07

    sandboxes as a service and own that

  396. 15:09

    infrastructure layer ourselves. Um

  397. 15:13

    Some of the reasons we have for that is

  398. 15:15

    we want really deep control over the

  399. 15:18

    session information, and

  400. 15:20

    uh be able to move workloads around

  401. 15:23

    different parts of our infrastructure.

  402. 15:25

    Uh so what we're building out next is

  403. 15:27

    our memory layer and we want this to be

  404. 15:29

    an evergreen context uh about what every

  405. 15:34

    person in the company is working on,

  406. 15:36

    what team do they sit in, what products

  407. 15:38

    are they responsible for, and then at an

  408. 15:40

    organization level, what is the

  409. 15:42

    semantics about Work OS and how we do

  410. 15:44

    our work. And this we want to be able to

  411. 15:46

    plug into both our software factory, but

  412. 15:49

    lift that context out of our factory and

  413. 15:51

    into our other AI tools as well.

  414. 15:57

    So, I think this is kind of our our

  415. 16:00

    major takeaway of where we've seen a lot

  416. 16:03

    of folks invest effort just around

  417. 16:05

    outputs and where we think we can

  418. 16:06

    actually get that human exponential

  419. 16:09

    value out of our factory.

  420. 16:11

    Can we be actually delivering values to

  421. 16:14

    our customers? We think a lot about

  422. 16:16

    shipping and customer impact and so we

  423. 16:18

    want to encode that into their our

  424. 16:20

    software factory itself. Um certainly

  425. 16:24

    worried about, you know, introducing

  426. 16:26

    instability into our products. So, all

  427. 16:28

    right, can we measure

  428. 16:30

    uh defect rate and other

  429. 16:32

    um

  430. 16:33

    you know, time to recovery uh metrics?

  431. 16:36

    Um and then a lot of anecdotal, like we

  432. 16:38

    want to see our engineers using TARS as

  433. 16:42

    a sign that this is giving them value

  434. 16:44

    and accelerating their work. We want to

  435. 16:47

    see that they're moving off electing to

  436. 16:48

    move out of their local harness and into

  437. 16:51

    a cloud sandbox.

  438. 16:58

    And then the real goal is we can use

  439. 17:00

    this information because we own the

  440. 17:01

    infrastructure, we can see what's

  441. 17:03

    happening in the infrastructure. We use

  442. 17:05

    this information to self-improve the

  443. 17:06

    factory.

  444. 17:08

    We want it to learn, we want it to get

  445. 17:09

    better about how it writes code.

  446. 17:13

    We want to see where um our engineers

  447. 17:17

    can improve their skills. There's so

  448. 17:19

    much moving quickly in AI. It's kind of

  449. 17:22

    like a constant race to keep up with the

  450. 17:24

    latest

  451. 17:25

    um

  452. 17:26

    you know, tips and techniques.

  453. 17:28

    We can actually point agents at sessions

  454. 17:30

    and see where are the gaps and how

  455. 17:32

    people are using

  456. 17:34

    our factory. Where is there a skill that

  457. 17:36

    we should be building because the agent

  458. 17:38

    made a mistake. What skills are no

  459. 17:40

    longer relevant? Maybe the code has

  460. 17:43

    changed to a degree where a skill that

  461. 17:45

    we wrote six months ago is now obsolete.

  462. 17:48

    So, that continues verification.

  463. 17:50

    Semi-online

  464. 17:52

    is where we kind of see a big advantage

  465. 17:54

    to actually owning all the

  466. 17:56

    infrastructure ourselves.

  467. 18:02

    So,

  468. 18:04

    say it for the third time, it's worth

  469. 18:05

    repeating.

  470. 18:07

    Sandboxes are great.

  471. 18:09

    It's cool to run an agent and have it

  472. 18:10

    open a PR.

  473. 18:12

    We really think about our software

  474. 18:13

    engineering practices and processes and

  475. 18:15

    we want to encode those in automation.

  476. 18:21

    I'm Ryan. I'm one of the engineers here

  477. 18:22

    at WorkOS. We have a booth right

  478. 18:24

    opposite the speaking area. If you are

  479. 18:26

    building software factories, I would

  480. 18:27

    love to talk to you. I would really love

  481. 18:29

    to hear how you're handling

  482. 18:30

    authorization. This is something I don't

  483. 18:32

    talk about because we haven't figured it

  484. 18:34

    out yet for ourselves, but maybe you all

  485. 18:37

    you all have some insights. So, please

  486. 18:38

    come by the booth, talk to me, would

  487. 18:40

    love to chat. Thank you.

  488. 18:55

    >> [music]