⚠️ This package has been migrated and re-purposed. The original package by Andrew Stone for transforming integers to base36 strings. To continue to use that functionality, please pin to version 0.3.0 or below.
Stop manually setting up your development environment. Define it once, replicate it everywhere.
Codify is a command-line tool that brings the power of Infrastructure as Code (IaC) to your local development machine. Manage system settings, install packages, configure tools, and automate your setup using a simple, declarative configuration file. It's like Terraform but for your local machine.
Website • Web Editor • Documentation
Every developer has been there:
- New machine? Spend hours reinstalling and configuring everything
- Team onboarding? Send them a scattered wiki page of manual installation steps
- Multiple machines? Keep them in sync manually
- Configuration drift? Your laptop works differently than your colleague's
With Codify, your entire development environment is defined in a single codify.jsonc file:
Now you can:
- See what changes before applying them with
codify plan - Apply changes automatically with
codify apply - Version control your environment setup
- Share configurations with your team
- Replicate setups across multiple machines in minutes
Define your entire development environment in a single, readable configuration file. No more shell scripts or scattered installation instructions.
Like Terraform, Codify shows you exactly what changes will be made before executing them.
$ codify plan
...
╭───────────────────────────────────────╮
│Codify Plan │
╰───────────────────────────────────────╯
The following actions will be performed:
+ vscode will be created
{
"directory": "/Applications"
}
+ nvm will be created
{
"nodeVersions": [
"20"
],
"global": "20"
}
Do you want to apply the above changes?
❯ Yes
NoAlready have a configured machine? Generate a Codify configuration from your existing setup:
$ codify init
...
Codify found the following supported resorces on your system.
Select the resources to import:
❯ ◉ asdf
◉ aws-cli
◉ docker
◉ git
◉ git-lfs
◉ git-repository
◉ homebrew
◉ jenv
◉ macports
Use <space> to select and <return> to submit.
Use <a> to select all items and <d> to de-select all items.Out-of-the-box support for:
- Homebrew (formulae and casks)
- VS Code (extensions and settings)
- npm global packages
- macOS system preferences
- Git configuration
- And many more...
Don't see what you need? Create your own plugin.
Edit your configuration in a web interface at dashboard.codifycli.com:
- Intuitive UI with auto-completion
- Real-time validation
- Cloud sync across devices
- Share configurations with your team
- Preview all changes before applying
- Both the CLI tool and default plugin are open source and Apache 2.0 licensed
- Requests your password each time elevated privileges (sudo) is required.
macOS / Linux:
/bin/bash -c "$(curl -fsSL https://releases.codifycli.com/install.sh)"Option 1: Import your existing setup
# Scan your system and generate a configuration
codify init
# Review the generated codify.jsonc file
cat codify.jsonc
# Make changes and apply them
codify applyOption 2: Start from scratch
# Create a new configuration file
cat > codify.jsonc << EOF
[
{
"type": "homebrew",
"formulae": ["git", "node"]
}
]
EOF
# Preview changes
codify plan
# Apply changes
codify apply| Command | Description |
|---|---|
codify init |
Scan your system and generate a configuration file |
codify plan |
Preview what changes will be made |
codify apply |
Apply the configuration to your system |
codify import |
Add existing resources to your configuration |
codify validate |
Check your configuration file for errors |
codify destroy |
Remove resources managed by Codify |
codify connect |
Connect CLI to the web dashboard for cloud sync |
codify test |
Test your configuration in an isolated VM |
Run codify --help for a complete list of commands and options.
[
{
"type": "homebrew",
"formulae": ["postgresql@18", "redis"]
},
{
"type": "nvm",
"nodeVersions": ["20.0.0", "18.0.0"],
"global": "20.0.0"
},
{
"type": "git-repository",
"parentDirectory": "~/projects",
"repositories": [
"git@github.com:myorg/frontend.git",
"git@github.com:myorg/backend.git"
]
},
{
"type": "vscode"
},
{
"type": "docker"
}
][
{
"type": "pyenv",
"pythonVersions": ["3.11.0", "3.10.0"],
"global": "3.11.0"
},
{
"type": "pip",
"install": ["pandas", "numpy", "matplotlib", "scikit-learn"]
}
{
"type": "venv-project",
"envDir": ".venv",
"cwd": "~/data-science",
"automaticallyInstallRequirementsTxt": true
}
][
{
"type": "homebrew",
"formulae": ["kubernetes-cli", "helm"]
},
{ "type": "aws-cli" },
{
"type": "aws-profile",
"profile": "production",
"awsAccessKeyId": "AKIA...",
"awsSecretAccessKey": "TOP_SECRET"
},
{
"type": "docker"
},
{
"type": "ssh-key",
"passphrase": ""
},
{
"type": "terraform"
}
]Q: Does Codify work on Linux and Windows? A: Codify currently supports macOS and Linux. Windows support works via WSL.
Q: How is this different from Ansible/Chef/Puppet? A: Those tools are designed for server configuration management. Codify is purpose-built for local development environments with a focus on simplicity and developer experience.
- Documentation: codifycli.com/docs
- Issues: GitHub Issues
- Default Plugin: GitHub Default Plugin
- Website: codifycli.com
- Editor: dashboard.codifycli.com
Contributions are welcome! Please feel free to open an issue or submit a pull request.
This project is licensed under the Apache 2.0 License.
Made with ❤️ by developers, for developers
codifycli.com • GitHub • Docs
[ { "type": "homebrew", "formulae": ["git", "node"] }, { "type": "vscode" }, { "type": "docker" } ]