Skip to main content

The Mender Stack

The Mender Stack is a suite of tools serving as a reference implementation of the principles in the Mechanized Mending Manifesto.

Status: These are early sketches based on gaps we see in the ecosystem. As such, there's plenty to learn from but no polished experience ready. All released original code is Free and Open Source under the Apache-2.0 license.

Questions and contributions are most welcome!

Tools

ToolRoleLanguageNoteAvailability
MendOrchestration / UXRustScripted refactoring of legacy codeGitHub
UntanglerEngineJavaMulti-language refactoring CLIGitHub
MenderBotAI WrapperPythonAI enabled CLI for maintenance tasksGitHub
RenameGPTAI Wrappern/aFine-tuned GPT-3.5 model for renaming variablesUnreleased
MenderLabUXRust + JSDemo of AI-driven refactoringUnreleased

Design

We identify three categories of parties involved in software development.

  • Humans
  • Conventional Algorithms
  • Large Language Models

LLMs do not replace humans, in fact none of these are a replacement for any other - they have different strengths. As always, an effective system depends on how the components work together. Components will fall naturally into on or more of these roles.

  • UX: Talks to humans
  • Orchestrators: Coordinates workflows
  • Engines: Perform deterministic calculations and actions
  • AI Wrappers: Facades managing LLM communication

Guidelines

Automation friendly

Unless a tool is almost exclusely in the UX role (like an editor), it should be usable both by people and by other tools. In other words, commands should be runnable by other commands. They should use return codes to indicate failure and have options to enable structured output such as JSON. The Kubernetes CLI kubectl is a great example of this.

Distribution

Strive for simplest possible installation process, ideally via a single static executable.

Responsible AI

Treat LLM output as untrusted. Do not send code to third parties without explicit user consent per codebase.