Draft
AI Strategy & Execution

What do you do with 1.5 million lines of 25-year-old code nobody can maintain?

You start over. And ship it in months.

A leading embedded RTOS vendor was losing developers to its own IDE. We replaced it with a VS Code extension their engineers actually wanted to open.

1.5M
Lines of legacy code
reverse-engineered
<9 mo
Concept to
release candidate
0
Java, JRE, or Python
dependencies left
1
Stage 01

The Challenge

1.5 million lines across 10,000 files, three legacy languages, and twenty-five years of institutional knowledge living in a handful of heads.

A leading embedded operating system company needed a modern VS Code extension for their flagship real-time operating system, a platform running in aerospace, defense, automotive, and industrial systems. It had to deliver the full embedded development lifecycle (project creation, import, configuration, build, deploy, debug) while integrating deeply with 25+ years of proprietary tooling, undocumented protocols, and complex build systems.

This wasn't a UI reskin. It required reverse-engineering a legacy codebase of 1.5 million lines across 10,000+ files in Java, Python, and TCL, implementing a custom binary protocol from scratch in TypeScript, and replacing Java/TCL build orchestration. A prior internal effort had attempted this work and failed to properly complete it, and stakeholders who knew the legacy system were skeptical it could be delivered on the proposed timeline, let alone by a small team.

It's a familiar problem across large technical organizations: valuable legacy systems that have become too expensive and complex to evolve at the pace the business demands. This project shows how the right engineering expertise, paired with the latest tooling, finally makes the impossible routine.

All three kinds of debt were in play. Technical debt: undocumented protocols and build orchestration no one wanted to touch. Product debt: a modern developer experience promised for years and never delivered. Organizational debt: twenty-five years of institutional knowledge scattered across decompiled source, training decks, and the memories of a handful of engineers.

2
Stage 02

The Team

The project was delivered by a small, senior team of fractional and full-time members, equivalent to roughly 2.5–3 FTEs, spanning engineering, architecture, UX, and product leadership. The team was bolstered by AI tooling embedded into daily workflows and by client domain experts serving in an advisory capacity.

3
Stage 03

The Approach

We used company-approved secure AI tooling across the entire product lifecycle: not just to write code, but to understand the legacy system, design the architecture, enforce quality, and capture the team's evolving knowledge as deeply technical conversations, investigations, and design decisions unfolded in real time.

3.1

Discovery & Planning

AI compressed weeks of reverse-engineering into days: processing customer training materials, analyzing decompiled source, and extracting a structured feature inventory that became the foundation for prioritization. A spec-driven workflow (requirements → design → tasks) kept the team building the right things in the right order.

3.2

Development

A Clean Architecture refactoring separated business logic into a reusable SDK, powering the VS Code extension, a CLI tool, and an AI-powered MCP server from one codebase. We encoded the architecture rules and let the pipeline enforce them, and we built a native TypeScript protocol client from scratch, eliminating an entire dependency layer, with 2,000+ automated tests generated and maintained with AI assistance.

3.3

Knowledge Capture & Transparency

As technical investigations unfolded, AI captured and organized the team's evolving understanding into structured, searchable records, and synthesized status updates from standups, syncs, and repository metrics, keeping leadership informed without pulling developers out of flow. Communication overhead dropped measurably, while accuracy and timeliness exceeded what's typical at this complexity.

3.4

DevOps & Quality

Backlog management and CI/CD pipelines automated the full quality chain (lint, type-check, test, build, package, and publish) on every merge request. Releases ran fully automated, with high pipeline reliability and full changelog visibility, and no manual overhead in between.

4 Stage 04

The Product

Working software covering the entire embedded lifecycle inside a modern IDE. Engineers create and configure a project across a 300-plus layer build surface, compile against the target toolchain, launch on hardware or a QEMU simulator, then debug and profile a running system, all driven by the native TypeScript protocol client the team built from scratch, with no Java, JRE, or Python bridge underneath. A few of the surfaces engineers work in every day:

Product GalleryLive target · connected
01 Source Build Configuration
Source Build Configuration: kconfig layer and parameter management with BSP, CPU and toolchain resolution
Layer and parameter management across a 300-plus option kconfig surface, with BSP, CPU, and toolchain resolved per project. The Java/TCL build orchestration, replaced with a native client and no JRE dependency.
02 System Viewer
System Viewer: event timeline across interrupts, workqueues and kernel tasks
A live event timeline correlating interrupts, workqueues, and kernel tasks: system-level visibility that once required the legacy toolchain, now native to VS Code and streamed straight from the target.
03 Memory Analyzer
Memory Analyzer: heap usage, allocation rate and garbage collection overview
Real-time heap usage, allocation rate, and GC overhead in a single live overview: the kind of visibility that turns a memory investigation into a five-minute read.
04 Call Tree
Call Tree: allocation tree with leak-suspect analysis
An allocation call tree with leak-suspect analysis, tracing unfreed bytes down to the exact method and line.
5 Stage 05

The Results

The project kicked off in January 2026. By July, the full embedded development lifecycle was functional: project creation, configuration, build, deploy, and debug across all project types. Client stakeholders confirmed it had graduated from proof-of-concept to full product release candidate, targeting release later in 2026: under nine months, start to finish.

The team solved problems prior internal efforts could not: building a native TypeScript protocol client that eliminated an entire Python dependency layer, and porting Java/TCL build logic without requiring a JRE. The resulting architecture is more flexible and extensible than the system it replaces, despite being built by a fraction of the headcount.

<9
Months, start
to finish
38
AI-accessible
MCP tools
2,000+
Automated tests,
AI-maintained
3
Products from one SDK:
extension, CLI & MCP

Because the team's AI-driven workflows maintained documentation and coding standards from day one, the codebase, pipelines, and all product and technical documentation remain up-to-date and accurate for future resources to adopt.

“I wish all my projects had Crux on them. I know you've got it and you make it so easy for me. We've done in a few months what everyone else said would take two to three years and fifteen engineers.”

Engineering leader · Client team

The business hasn’t changed. What’s possible has.

Let’s build what’s next.

Start a conversation →