diff --git a/bin/cdist-code-gen b/bin/cdist-code-gen
new file mode 100755
index 00000000..33c67b08
--- /dev/null
+++ b/bin/cdist-code-gen
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# 2011 Nico Schottelius (nico-cdist at schottelius.org)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see <http://www.gnu.org/licenses/>.
+#
+#
+# Generate code from one object (object must be relative path!)
+#
+
+. cdist-config
+
+[ $# -eq 2 ] || __cdist_usage "<target host>" "<object>"
+
+set -ue
+
+export __cdist_target_host="$1"; shift
+export __cdist_object="$1"; shift
+
+# Get type from object path
+export __cdist_type=${__cdist_object%%/*}
+
+# Full path to where the executable should exist, if the type has one
+export __cdist_gencode="${__cdist_type_dir}/$__cdist_type/$__cdist_name_gencode"
+
+
+# Call gencode of type with __cdist_object
+if [ -x "$__cdist_gencode" ]; then
+   "$__cdist_gencode"
+fi
diff --git a/bin/cdist-config b/bin/cdist-config
index e2846021..9aafe1d9 100755
--- a/bin/cdist-config
+++ b/bin/cdist-config
@@ -30,6 +30,7 @@
 : ${__cdist_name_cache:=cache}
 : ${__cdist_name_code:=code}
 : ${__cdist_name_explorer:=explorers}
+: ${__cdist_name_gencode:=gencode}
 : ${__cdist_name_host:=hosts}
 : ${__cdist_name_init:=init}
 : ${__cdist_name_manifest:=manifests}