Codify

Terminology

A dictionary of terminology used by Codify

  • CLI: The codify command-line tool. It reads configuration files, generates plans, and applies changes to your system. All other Codify interfaces (Desktop App, agent) use the CLI under the hood.

  • Desktop App: The recommended graphical interface for Codify. It includes a config editor with auto-complete, the Codify Agent, and one-click apply — all in one place.

  • Plugin: A collection of resources. Codify ships with a default plugin that handles the most popular macOS and Linux packages. Additional plugins can be added to support more tools.

  • Resource: A specific tool, application, or system setting that Codify can manage. Each resource has a type (e.g. "homebrew", "nvm") and optional parameters that control how it's configured.

  • Config: A single resource declaration inside a codify.jsonc file. Every config must have a type field. The file as a whole is a top-level array of these config objects.

  • Plan: A preview of what Codify will do. Before making any changes, Codify generates a plan showing every resource it will create, modify, or remove. You always approve the plan before anything runs.

  • Stateless Mode: Codify's default mode. Codify doesn't keep track of what it's previously installed — it just looks at your current system state and compares it to your config. In stateless mode, Codify can add and modify resources but won't automatically remove ones that aren't in your config.

  • Agent: The Codify AI assistant, available in the Desktop App. Describe your environment in plain English, and the agent generates a codify.jsonc config using the resource library. It asks clarifying questions when needed, then lets you review and apply the result. Learn more →

  • Resource Library: The catalog of validated tools and applications Codify knows how to manage — things like Homebrew, nvm, pyenv, VS Code, Docker, and more. The agent uses this library when generating configurations.

  • Resource Operations: The actions a resource can take: create, destroy, modify, recreate, and no-op.

  • Parameter Operations: Changes to individual settings within a resource: add, remove, modify.