Source: https://internal-agents.com/agents/duolingo-agentic-workflows

# Duolingo — Agentic workflows

Duolingo built shared infrastructure that turns a tested prompt into an internal tool. A JSON form defines a coding-agent workflow against one repository, Temporal runs the workflows that need several steps, and a shared library wraps the Codex CLI and the Claude Code SDK.

- Company: [Duolingo](https://internal-agents.com/organizations/duolingo)
- Collection: Infrastructure
- Approach type: Platform
- Deployment stage: Deployed
- Evidence strength: Limited primary
- Status: Internal
- First reported year: 2025
- Work: Coding
- Interfaces: Internal ui, Slack, Github
- Entry reviewed: 2026-09-21

## Purpose

### Summary

Duolingo built shared infrastructure that turns a tested prompt into an internal tool. A JSON form defines a coding-agent workflow against one repository, Temporal runs the workflows that need several steps, and a shared library wraps the Codex CLI and the Claude Code SDK.

Fact · Reported · High confidence · `duolingo-agentic-workflows--summary`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 10, 36, 52-58

## Capabilities and architecture

### Harness

Temporal runs the workflows; a shared CodingAgent library wraps the Codex CLI and the Claude Code SDK behind one interface.

Fact · Reported · High confidence · `duolingo-agentic-workflows--architecture-harness`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 54, 58

### Interfaces

internal-ui, slack, github

Fact · Reported · High confidence · `duolingo-agentic-workflows--architecture-interfaces`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 48, 90

### Tool access

Workflows clone repositories and open pull requests through a shared GitHub utility package. Prototype agents use the GitHub MCP server, and an Atlassian server is named as planned work.

Fact · Reported · High confidence · `duolingo-agentic-workflows--architecture-tool-access`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 90, 106

### Credentials

Coding-agent API keys are set as environment variables, and a shared GitHub App token makes every pull request come from a bot account with centrally controlled permissions.

Fact · Reported · High confidence · `duolingo-agentic-workflows--architecture-credentials`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 58, 90

### CodingAgent library

One library wraps the Codex CLI and the Claude Code SDK; a call gives a prompt and a working directory, and an enum parameter usually selects which agent runs.

Fact · Reported · High confidence · `duolingo-agentic-workflows--primitives-4`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 58-86

### GitHub utility package

A shared package holds the common repository interactions, such as cloning a repository and opening a pull request, and is used by all of the agents.

Fact · Reported · High confidence · `duolingo-agentic-workflows--primitives-5`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 90

### Multi-step Temporal workflows

A custom workflow gives each step a single retryable activity with its own timeout and retry policy, so that long-running work survives a failed step.

Fact · Reported · High confidence · `duolingo-agentic-workflows--primitives-6`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 94

- **Model:** unreported — The post names the Codex CLI and the Claude Code SDK as the agents it wraps, but identifies no model for any workflow. Next research action: look for a Duolingo post or talk that names the models behind the CodingAgent library.
- **Sandbox:** unreported — No execution isolation is described. The unknown placeholder stays in research details; the Docker-in-Docker blocker names a constraint, not the environment a workflow runs in.
- **Knowledge:** unreported — The form carries a prompt and one repository; no knowledge base, retrieval, or company-context source is described. Next research action: check whether the expanded agent.json or a later post documents context sources.
- **Context management:** unreported — Durable retries across Temporal activities are described, but nothing about how agent context is carried between passes or runs.

## Documented uses

Documented use example: JSON workflow form → published internal tool whose run clones the repository, makes the code change, and commits it, optionally opening a pull request.

### Fill out the workflow form

A Duo describes the workflow in a simple JSON form that carries a prompt, a code repository, and zero or more parameters for sharing and reuse.

Fact · Reported · High confidence · `duolingo-agentic-workflows--primitives-0`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 36

### Publish to the internal tool list

A merged form appears automatically in a list of internal tools that any Duo can run, and Slack notifications report the progress of a run.

Fact · Reported · High confidence · `duolingo-agentic-workflows--primitives-2`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 48

### Run the common pattern

The shared pattern clones the repository, lets the coding agent make the code change, then commits the code and optionally opens a pull request.

Fact · Reported · High confidence · `duolingo-agentic-workflows--primitives-3`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 22-28

## Access and controls

See the credential and access boundaries in architecture (`duolingo-agentic-workflows--architecture-credentials`). Scoped human-review assessments for individual uses remain in research details.

## Reliability and validation

### Test the prompt

Duos craft the prompt in Codex or Claude until they judge it successful and check that it works in a variety of situations, then stage the workflow for end-to-end testing.

Fact · Reported · High confidence · `duolingo-agentic-workflows--primitives-1`

Confidence reason: A linked first-party source states the claim.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 44

## Adoption and operating evidence

Observation: Cost latency · Estimate · Time for a Duo to create a JSON-form workflow that follows the common pattern, stated as under five minutes

### Key observation

Duolingo says a Duo can create a workflow that follows the common pattern in under five minutes; the post states this as a section heading and a TL;DR claim, with no measurement method

Metric · Reported · Low confidence · `duolingo-agentic-workflows--key-metrics-0`

Confidence reason: The five-minute figure appears as a section heading and in the TL;DR of a Duolingo blog post. No sample, period, or timing method is reported, so it states an expected creation time rather than a measured result.

Qualifications:

- The source does not report the denominator of this figure.
- Reported by: Duolingo
- Scope: Time for a Duo to create a workflow that follows the common clone-change-commit pattern through the JSON form
- Observation date: 2025-12

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 10, 30 (TL;DR sentence and section heading)

Observation: Cost latency · Estimate · Average time to create a custom Temporal workflow, stated as 1-2 days

### Key observation

Duolingo reports an average of 1-2 days to create a custom Temporal workflow by running BootstrapTemporalWorkflow and copying an existing workflow; no period, denominator, or method is reported

Metric · Reported · Low confidence · `duolingo-agentic-workflows--key-metrics-1`

Confidence reason: Duolingo reports this as an average in its own blog post, but gives a one-day range with no sample size, period, or collection method, so it reads as a rough in-house figure.

Qualifications:

- The source does not report the denominator of this figure.
- Reported by: Duolingo
- Scope: Time to create a custom Temporal workflow by running BootstrapTemporalWorkflow and copying an existing workflow
- Observation date: 2025-12

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 54

## Lessons

### Lesson

Duolingo found one pattern recurring across its coding agents (clone the repository, make the change, commit and optionally open a pull request) and built its no-code workflow form around that pattern.

Fact · Reported · Medium confidence · `duolingo-agentic-workflows--lessons-learned-0`

Confidence reason: The post names the three-step pattern and states that the no-code form was built for common patterns like this. It describes Duolingo's own repositories and does not claim the pattern fits other organizations.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 22-32

### Lesson

Duolingo splits a multi-step agent workflow into single retryable activities with their own timeouts and retry policies, so that AI non-determinism does not restart the whole process.

Fact · Reported · Medium confidence · `duolingo-agentic-workflows--lessons-learned-1`

Confidence reason: The multi-step section states the one-activity-per-step rule and gives the reason, that AI non-determinism should not restart the whole process. No failure rate or comparison is reported.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 94

### Lesson

Duolingo routes the pull requests of all its agents through a shared GitHub App token, so that they come from one bot account with centrally controlled permissions.

Fact · Reported · Medium confidence · `duolingo-agentic-workflows--lessons-learned-2`

Confidence reason: The GitHub library section states the shared App token, the bot account, and the central permissions. The post does not describe what those permissions allow or deny.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 90

### Lesson

Duolingo reports that running Docker inside Docker on Temporal blocks a set of planned agent features, and says the issue is being actively addressed.

Fact · Reported · Medium confidence · `duolingo-agentic-workflows--lessons-learned-3`

Confidence reason: The next-steps section names Docker in Docker on Temporal as the blocker for a large set of features and says it is being addressed. The expected fix date is Duolingo's forecast, so it is left out of the lesson.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 102

### Lesson

The authors describe agentic workflows at Duolingo as early days and call both the capabilities and the supporting infrastructure open questions.

Opinion · Reported · Medium confidence · `duolingo-agentic-workflows--lessons-learned-4`

Confidence reason: The closing section is the authors' own assessment of their work; it is a stated position about Duolingo's maturity, not a measured finding.

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 114-116

## Research details and scoped use assessments

### Sandbox

unknown

Fact · Reported · Low confidence · `duolingo-agentic-workflows--architecture-sandbox`

Confidence reason: Only community or aggregate evidence supports the claim.

Evidence:

- Contextualizes · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, line 102 (Docker in Docker on Temporal named as a blocker, with no execution environment described)

### Operating model assessment

Level 3 for prompt drafted and tested with a coding agent → workflow form merged into the internal tool list; human attention boundary: work-product-review.

Inference · Catalog judgment · Medium confidence · `duolingo-agentic-workflows--operating-models-0`

Confidence reason: The post says Duos test the prompt until they judge it successful and stage the workflow for end-to-end testing before merging the form. It does not say who else reviews a form, so the boundary covers the creator only.

Qualifications:

- Observation date: 2025-12

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 44, 48

### Operating model assessment

Unclassified for published workflow run → committed change, optionally opened as a pull request; human attention boundary: unknown.

Inference · Catalog judgment · Unverified confidence · `duolingo-agentic-workflows--operating-models-1`

Confidence reason: The post describes the run pattern as commit and optionally open a pull request, but never says whether a person must review the change before it takes effect.

Qualifications:

- Observation date: 2025-12

Evidence:

- Supports · [1] [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/) · [Preserved copy](https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md) · Preserved content.md, lines 22-28

## Question coverage and scope

- **purpose:** Reported
- **workflow:** Reported — The three primitives cover the documented JSON-form path. The CodingAgent library, the GitHub package, and the Temporal multi-step pattern are mechanisms that support a run, not steps of it.
- **human involvement:** Reported — The post locates human attention in workflow creation only: the creator tests the prompt and stages end-to-end testing before merging the form. It does not document who reviews the output of a run, which the second operating-model claim records as unknown in research details.
- **implementation:** Reported
- **validation:** Reported — Validation is documented at creation time, as prompt iteration plus staged end-to-end testing. No per-run check of a workflow's output is described.
- **observations:** Reported — Both figures are creation-time claims about the platform. The post reports no outcome of any workflow built on it, so no downstream agent result is attributed here.
- **lessons:** Reported

## Sources

1. [Scaling Engineering with Agentic Workflows](https://blog.duolingo.com/agentic-workflows/)
   - Corporate article · First party · Evidence
   - Original URL: <https://blog.duolingo.com/agentic-workflows/>
   - Publisher: Duolingo Blog · Published: 2025-12-11 · Accessed: 2026-09-21 · Last verified: 2026-09-21
   - Preserved copy in the repository: <https://github.com/steel-experiments/internal-agents-map/blob/main/archive/sources/duolingo-agentic-workflows-source-1/content.md>
