Skip to main content

Abstract

Courier interpreters are a foundational building block of Chef Courier. They provide a stable, secure, and user-oriented contract for performing operational work as part of a Courier job, while intentionally abstracting and constraining the underlying execution mechanisms.

This document describes how Courier interpreters should be designed, how their contracts should be shaped, and how they should behave from a user perspective. It treats interpreters as intent-constraining facades that translate declarative intent into concrete execution against one or more underlying engines, such as Command Line Interfaces (CLIs), Application Programming Interfaces (APIs), or runtime systems.

This guide is intended for advanced users who compose Courier jobs and need to understand what interpreters promise, how they behave, and what guarantees they provide over time. It’s also used by implementers who extend Courier by building interpreters and must honor those guarantees. The guide complements the Courier Interpreter RFC by focusing on design quality, user experience, stability expectations, and security boundaries rather than wire-level protocol details.

Thank you for your feedback!

×