Codify

Resource & Plugins

Resources, plugins, and how to extend Codify

Codify ships with a default plugin that covers 50+ tools out of the box. For most users, no plugin configuration is required.

Resources

A resource is the interface between Codify and your system. Each resource knows how to install, check the current state of, modify, and remove a specific tool or system setting. Resources are what Codify executes when you run codify apply.

Every resource has a type that you reference in your config:

  • homebrew — Homebrew packages and casks
  • nvm — Node.js version management
  • vscode — VS Code installation
  • git — Git global configuration
  • path — Shell PATH entries
  • alias — Shell aliases

See the full resource list for all available resources.

Plugins

A plugin is a collection of resources. Codify ships with one built-in plugin: the default plugin. It loads automatically and requires no configuration for basic use.

Advanced users can sideload local resources or build custom plugins. See Custom Plugins below.

The Default Plugin

You can pin the default plugin to a specific version using a project config block:

[
  {
    "type": "project",
    "plugins": {
      "default": "^1.0.0"
    }
  },
  {
    "type": "homebrew",
    "formulae": ["git", "node"]
  }
]

Plugin version options:

  • "latest" — always use the most recent stable version
  • "beta" — use the latest beta version
  • Semantic version (e.g., "^1.0.0", "1.2.3") — specific version constraint

If you omit the project config block, Codify loads the latest stable version of the default plugin automatically.

Requesting New Resources

If a tool you need is not in the default plugin, you can request it. Open a resource request on GitHub. An AI workflow generates the resource and opens a pull request. The Codify team then reviews and tests it before merging. Turnaround is 10 business days.

Custom Plugins

For tools that need custom behavior, you can build your own plugin and reference it locally in your project config:

[
  {
    "type": "project",
    "plugins": {
      "default": "latest",
      "./local/plugin.ts": "1.0.0"
    }
  }
]

See the Plugin Development Guide for how to build, test, and use custom plugins.

On this page