Skip to content


Subversion checkout URL

You can clone with
Download ZIP
CFEngine Community
C Shell Yacc Emacs Lisp Perl C++ Other
Latest commit 2dd60d5 @jimis jimis Merge pull request #2423 from jimis/missing_messages_in_mp-redmine7765
Optimise performance, don't call log_hook when not printing messages
Failed to load latest commit information.
3rdparty/peg-0.1.13 Fix typos found by codespell
cf-agent Change: Soften legacy package promise implementation warning
cf-execd Redmine #7191: Allow multiple -D and -N flags to binaries
cf-key Redmine #7606 Improve TTY detection
cf-monitord Redmine #7606 Improve TTY detection
cf-promises Redmine #7191: Allow multiple -D and -N flags to binaries
cf-runagent Redmine#7581: Implement cf-runagent --remote-bundles and cf-serverd "…
cf-serverd cf-serverd with classic protocol should refuse to list directories un…
cf-upgrade cf-upgrade: Fix out of tree builds
contrib Add: masterfiles-stage script to contrib
docs Include the template files for extensions_template.[ch] in the source…
examples Change: Improve example
ext misc: Fix typos found by codespell
libcfnet Removed some unnecessary CF_BUFSIZE arrays
libcompat Disable block buffering on stdout on Windows.
libenv get rid of 'internal soft-class' name, which is a bit confusing
libpromises Fix unexpanded policy_server variable in failsafe.
libutils Optimise performance, don't call log_hook when not printing messages
m4 Redmine #7030: No longer hang when changing permissions/ownership on …
misc Add support for parenthesized Redmine tickets.
tests Use new EXEC code for classic protocol, remove old.
.gitignore obliterate CFWORKDIR (GLOBAL_C) and its usage in the main codebase.
.mailmap Coalesce Chris Dituri's author names in .mailmap
AUTHORS Fix typos found by codespell
BSDmakefile Add missing copyright blurbs
ChangeLog Changelog updates for 3.8.0 final.
GLOBALS GLOBALS: how to suppress mutability in CFEngine internals. Fix typos in comments and documention (most of them found by codespell)
INSTALL Fix typos found by codespell
LICENSE Fix typos found by codespell Reintroduce circular dependency workaround. Partial revert of 29cb917 Clarify that files by default are GPLv3. Fix POSIX shell detection on Solaris. Add missing copyright blurbs Redmine #7030: No longer hang when changing permissions/ownership on … Export core version in configure_flags so we can check it downstream. Add missing copyright blurbs Add missing copyright blurbs

CFEngine 3

CFEngine 3 is a popular open source configuration management system. Its primary function is to provide automated configuration and maintenance of large-scale computer systems.


Please see the INSTALL file for prerequisites and build instructions.


As per the LICENSE file, CFEngine Community is licensed under the GNU General Public License, version 3.

All the files in this repository are licensed under GNU GPL version 3, unless stated otherwise in the copyright notice inside the particular file.

Example Usage

Hello World

The following code demonstrates simple CFEngine output through a reports promise.

body common control
  bundlesequence => { "run" };

bundle agent run
      "Hello, world";

The following policy code may be executed with cf-agent (the main CFEngine binary) as follows.

$ cf-agent/cf-agent
R: Hello, world


Please see the file.

Relationship to CFEngine 2

CFEngine 3 is not a drop-in upgrade for CFEngine 2 installations. It is a significantly more powerful version, but it is incompatible with the CFEngine 2 policy language.

The server part of CFEngine 3 supports the network protocol of CFEngine 2, so you may upgrade your installation gradually.

Something went wrong with that request. Please try again.