Itamae is a simple, lightweight configuration management tool written in Ruby, inspired by Chef, and intended for developers and operators who want to describe machine state in recipe files and apply those recipes either to a local machine or to remote hosts over SSH.
What it is
Itamae is an MIT-licensed Ruby project, formerly known as Lightchef, that implements configuration management through a Chef-like domain-specific language. It lives in the Ruby ecosystem and is distributed as a RubyGem, with its documentation hosted in the project wiki and its home page at itamae.kitchen. The stated concept is deliberately narrow: a Chef-like DSL that is not compatible with Chef, simpler and lighter weight than Chef, consisting of only recipes, and idempotent. The project is tagged under chef, infrastructure, infrastructure-as-code, itamae, and ruby, and is catalogued in this registry under Infrastructure & Operations / Cloud Infrastructure Management.
The problem it solves is the weight of a full configuration management stack for teams that do not need one. Chef is the named reference point here: Itamae borrows the recipe-and-resource style that Chef users already recognise, such as declaring a package to install and a service to enable and start, while dropping the surrounding machinery. Because it keeps only recipes and runs them directly, the workflow replaces a Chef-style provisioning run with a single command against a target machine, whether that machine is local, remote, or a Vagrant virtual machine. The trade-off is explicit in the project's own concept statement: the DSL is Chef-like but not Chef-compatible, so existing Chef cookbooks are not the input format.
Key capabilities
- Chef-like Ruby DSL for recipes, using resources such as
package 'nginx' do action :install end and service 'nginx' do action [:enable, :start] end in a file conventionally named recipe.rb.
- Local application of a recipe with
itamae local recipe.rb, which reports each resource and the planned change, for example installed will change from 'false' to 'true'.
- Remote application over SSH with
itamae ssh --host host001.example.jp recipe.rb.
- Vagrant integration through
itamae ssh --vagrant --host vm_name recipe.rb.
- Idempotent execution, so re-running a recipe reports changes rather than blindly reapplying them.
- Recipes only, with no Chef compatibility layer, which keeps the resource model small.
- Test suite executed with
bundle exec rake spec, which requires Vagrant.
Who uses it and how
- Individual developers provisioning a single workstation or server with
itamae local, where a full central configuration management server would be overkill.
- Operators applying recipes to remote machines by SSH, using
itamae ssh with an explicit --host target.
- Teams working against Vagrant development machines, using the
--vagrant flag so recipes run in the same way locally and in development VMs.
- Ruby-oriented teams that prefer to keep infrastructure definitions in the same language and toolchain as their application code.
- The project has been presented and written about in Japanese, including a write-up on Cookpad's server provisioning, which indicates production provisioning use in addition to local experimentation.
Getting started
Install the gem with gem install itamae, write a recipe file such as recipe.rb, and apply it with itamae local recipe.rb or itamae ssh --host host001.example.jp recipe.rb. Further information is collected in the Itamae Wiki.
How it compares
Among the tools named in the project's own materials, Itamae sits next to Chef as a lighter alternative: it shares the recipe and resource idiom and the Ruby DSL, but its own concept notes state that it is simpler and lighter weight than Chef and not compatible with Chef recipes. Vagrant is the other named tool, and it is complementary rather than competing, since itamae ssh --vagrant targets Vagrant machines directly. No list of paid products that this project replaces is provided in the facts available here.
When to use it — and when not to
A self-hoster needs a working Ruby environment and the gem installed, plus Vagrant if the project's own test suite is to be run locally; the README names no external database, object storage, or mail service, so the operational surface is small. It is a poor fit for anyone who needs Chef compatibility, since the DSL is explicitly not compatible, and for anyone who wants a central server, roles, environments, or a web dashboard, because the project offers recipes only. Documentation is concentrated in a GitHub wiki rather than a published manual, and the repository carries a modest footprint of roughly 1,132 stars and 38 open issues, so users should expect a focused tool rather than a broad platform.
project readme (upstream, from github) — read inline


Simple and lightweight configuration management tool inspired by Chef.
Concept
- Chef-like DSL (but not compatible with Chef)
- Simpler and lighter weight than Chef
- Only recipes
- Idempotent
Installation
$ gem install itamae
Getting Started
Create a recipe file as recipe.rb:
package 'nginx' do
action :install
end
service 'nginx' do
action [:enable, :start]
end
And then execute itamae command to apply a recipe to a local machine.
$ itamae local recipe.rb
INFO : Starting Itamae...
INFO : Recipe: /home/user/recipe.rb
INFO : package[nginx]
INFO : action: install
INFO : installed will change from 'false' to 'true'
INFO : service[nginx]
INFO : action: enable
INFO : action: start
Or you can apply a recipe to a remote machine by itamae ssh.
$ itamae ssh --host host001.example.jp recipe.rb
You can also apply a recipe to Vagrant VM by itamae ssh --vagrant.
$ itamae ssh --vagrant --host vm_name recipe.rb
You can find further information to use Itamae on Itamae Wiki.
Enjoy!
Documentation
https://github.com/itamae-kitchen/itamae/wiki
Run tests
Requirements: Vagrant
$ bundle exec rake spec
Get Involved
Presentations / Articles
in Japanese
Contributing
If you have a problem, please create an issue or a pull request.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request