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 loopOpen full source frame
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 changeOpen full source frame
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.

A skill improves through a separate review loop

Triage skillProcedure used for recurring issue triage.
Inner-loop agentApplies the skill to incoming GitHub issues.
Outer-loop agentExamines decisions, mistakes, reactions, and comments.
Pull request and human reviewProposed skill edits remain visible in Git.
Execution produces evidence; the outer loop proposes a procedural change. Human review separates that proposal from its adoption.
Read the diagram as text
  • Triage skill. Procedure used for recurring issue triage.
  • Inner-loop agent. Applies the skill to incoming GitHub issues.
  • Outer-loop agent. Examines decisions, mistakes, reactions, and comments.
  • Pull request and human review. Proposed skill edits remain visible in Git.
  • Triage skill → Inner-loop agent: Guides execution.
  • Inner-loop agent → Outer-loop agent: Runs and feedback.
  • Outer-loop agent → Pull request and human review: Proposes skill update.
  • Pull request and human review → Triage skill: Reviews updates before 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 workOpen full source frame
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.

Comparing models informs future routing

PromptWork submitted for an agent to perform.
Agents across modelsOz runs multiple agents using different models.
Evaluation sidecarDetermines which models work better for task classes.
Routing choicesFor example, Warp reports using GLM efficiently for UI tasks.
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.
Read the diagram as text
  • Prompt. Work submitted for an agent to perform.
  • Agents across models. Oz runs multiple agents using different models.
  • Evaluation sidecar. Determines which models work better for task classes.
  • Routing choices. For example, Warp reports using GLM efficiently for UI tasks.
  • Prompt → Agents across models: Run across models.
  • Agents across models → Evaluation sidecar: Compare task performance.
  • Evaluation sidecar → Routing choices: Inform model selection.
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.

Transcript download
Read the transcript and explore slides

Loading transcript and slides…