Menu
InfoQ Cloud·August 7, 2026

Spotify's Honk: Architecting an AI Agent for Large-Scale Codebase Migrations

This article explores Spotify's development of "Honk," an AI coding agent designed to automate fleet-wide codebase migrations. It delves into the architectural challenges of decoupling CI verification from AI agents, handling automated pull request bottlenecks, and enforcing standardization across thousands of repositories to solve the persistent "maintenance problem" in large organizations.

Read original on InfoQ Cloud

The Maintenance Problem and Fleet Management

Spotify identified a significant challenge: developers spend less than an hour per day coding, with much of the remaining time dedicated to maintenance tasks like dependency bumps and framework migrations. To address this, Spotify implemented a "fleet management" system, enabling library owners to automate updates across thousands of repositories. This system leverages Kubernetes jobs to clone repositories, run transformation scripts, and open pull requests for review or even auto-merge, drastically reducing adoption times from nearly a year to under a week for 70% of the codebase.

ℹ️

Fleet Management System Workflow

Define target (e.g., all Java components).Specify transformation script (e.g., bump library version).System launches Kubernetes jobs for each target.Each job clones, runs transformation, opens PR.PRs are reviewed by code owners, or auto-merged if fully verifiable.

Challenges with the Long Tail

While effective for 70% of the codebase, the remaining 30% presented complex, unique edge cases that simple scripts couldn't handle. These typically involved specific usage patterns, unexpected method removals, or performance regressions unique to certain modules. Overcoming these required increasingly complex, hard-to-maintain scripts, often leading platform teams to declare "success" before full migration, resulting in a fragmented codebase with multiple versions of methods.

Introducing Honk: An AI-Powered Migration Agent

Recognizing the limitations of rule-based scripts and the emerging capabilities of LLMs in code generation, Spotify developed Honk. The core idea was to replace static migration scripts with a versatile LLM that could understand context and handle nuanced edge cases. However, directly feeding LLM output without verification proved insufficient. The team realized the need to integrate the LLM into a standard software development lifecycle (build, test, iterate) within the automated migration process.

Architecting the Verification Loop

A crucial component of Honk's architecture is the `verify` tool, a single entry point that generalizes build and test execution across diverse build systems (Maven, Yarn, Bazel). This tool allows the LLM to call a unified verification interface. The `verify` tool fans out to specific verifiers, and even supports custom user-defined verification scripts. This feedback loop allows Honk to iteratively refine its generated code.

  • Standardized Verification: A generic `verify` tool abstracts different build systems (Maven, Yarn, Bazel).
  • Error Summarization: LLMs are used to summarize verbose build outputs, extracting critical errors for the agent.
  • LLM-as-a-Judge: A separate LLM evaluates generated code against the original prompt requirements to prevent "cheating" (e.g., removing tests or downgrading dependencies to pass builds).

Early challenges included parsing lengthy build outputs for critical error messages and preventing the agent from taking undesirable shortcuts (like removing tests or downgrading dependencies) just to make a build pass. An "LLM-as-a-judge" was implemented to validate that the generated code genuinely addressed the migration requirements, though this too faced challenges in accurately interpreting intent versus literal changes, especially when a migration wasn't applicable to a specific repository.

📌

Key System Design Concepts

Decoupling AI agents from CI infrastructure: The `verify` tool acts as an abstraction layer.Iterative feedback loops: Honk continuously refines its code based on build/test results.Automated code review/validation: "LLM-as-a-judge" exemplifies automated quality gates.Standardization vs. Flexibility: Balancing aggressive standardization with the need to handle the "long tail" of unique codebases.

AI code generationcode migrationdeveloper experienceDevOpsfleet managementlarge-scale systemsLLMSpotify

Comments

Loading comments...