diff --git a/example/gen/meson.build b/example/gen/meson.build
index 38522c5..8d7d4de 100644
--- a/example/gen/meson.build
+++ b/example/gen/meson.build
@@ -5,10 +5,10 @@
     check: true,
 ).stdout().strip().split('\n')[0]
 
-if sdbuspp_gen_meson_ver != 'sdbus++-gen-meson version 9'
+if sdbuspp_gen_meson_ver != 'sdbus++-gen-meson version 10'
     warning('Generated meson files from wrong version of sdbus++-gen-meson.')
     warning(
-        'Expected "sdbus++-gen-meson version 9", got:',
+        'Expected "sdbus++-gen-meson version 10", got:',
         sdbuspp_gen_meson_ver
     )
 endif
diff --git a/example/gen/net/poettering/meson.build b/example/gen/net/poettering/meson.build
index 6f65217..62b350e 100644
--- a/example/gen/net/poettering/meson.build
+++ b/example/gen/net/poettering/meson.build
@@ -14,3 +14,17 @@
     ],
 )
 
+generated_others += custom_target(
+    'net/poettering/Calculator__registry'.underscorify(),
+    input: [ '../../../yaml/net/poettering/Calculator.events.yaml',  ],
+    output: [ 'Calculator.json' ],
+    depend_files: sdbusplusplus_depfiles,
+    command: [
+        sdbuspp_gen_meson_prog, '--command', 'registry',
+        '--output', meson.current_build_dir(),
+        '--tool', sdbusplusplus_prog,
+        '--directory', meson.current_source_dir() / '../../../yaml',
+        'net/poettering/Calculator',
+    ],
+)
+
diff --git a/test/gen/meson.build b/test/gen/meson.build
index 38522c5..8d7d4de 100644
--- a/test/gen/meson.build
+++ b/test/gen/meson.build
@@ -5,10 +5,10 @@
     check: true,
 ).stdout().strip().split('\n')[0]
 
-if sdbuspp_gen_meson_ver != 'sdbus++-gen-meson version 9'
+if sdbuspp_gen_meson_ver != 'sdbus++-gen-meson version 10'
     warning('Generated meson files from wrong version of sdbus++-gen-meson.')
     warning(
-        'Expected "sdbus++-gen-meson version 9", got:',
+        'Expected "sdbus++-gen-meson version 10", got:',
         sdbuspp_gen_meson_ver
     )
 endif
diff --git a/tools/sdbus++-gen-meson b/tools/sdbus++-gen-meson
index 5b61382..d92717a 100755
--- a/tools/sdbus++-gen-meson
+++ b/tools/sdbus++-gen-meson
@@ -27,6 +27,7 @@
                           to the source YAML files.
     cpp <intf>          - Generate the source files from a YAML interface.
     markdown <intf>     - Generate the markdown files from a YAML interface.
+    registry <intf>     - Generate the Redfish registry from a YAML interface.
     version             - Display this tool's version string.
 
 EOF
@@ -36,7 +37,7 @@
 ## if a repository contains old copies of the generated meson.build files and
 ## needs an update.  We should increment the version number whenever the
 ## resulting meson.build would change.
-tool_version="sdbus++-gen-meson version 9"
+tool_version="sdbus++-gen-meson version 10"
 function show_version() {
     echo "${tool_version}"
 }
@@ -257,6 +258,60 @@
 EOF
 }
 
+## Generate the meson target for the registry files from a YAML interface.
+## $1 - The interface to generate a target for.
+function meson_registry_target() {
+    mesondir="${outputdir}/$(dirname "$1")"
+    yamldir="$(realpath --relative-to="${mesondir}" "${rootdir}")"
+
+    # Determine the source and output files based on the YAMLs present.
+    sources=""
+    outputs=""
+    for s in ${interfaces[$1]}; do
+        case "${s}" in
+            errors.yaml)
+                ;;
+
+            events.yaml)
+                sources="${sources}'${yamldir}/$1.${s}', "
+                outputs="${outputs}'event.cpp', 'event.hpp', "
+                ;;
+
+            interface.yaml)
+                ;;
+
+            *)
+                echo "Unknown interface type: ${s}"
+                exit 1
+                ;;
+        esac
+    done
+
+    if [[ -z "${sources}" ]]; then
+        return
+    fi
+
+    # Create the target to generate the interface.md file.
+    cat >> "${mesondir}/meson.build" \
+        << EOF
+generated_others += custom_target(
+    '$1__registry'.underscorify(),
+    input: [ ${sources} ],
+    output: [ '$(basename "$1").json' ],
+    depend_files: sdbusplusplus_depfiles,
+    command: [
+        sdbuspp_gen_meson_prog, '--command', 'registry',
+        '--output', meson.current_build_dir(),
+        '--tool', sdbusplusplus_prog,
+        '--directory', meson.current_source_dir() / '${yamldir}',
+        '$1',
+    ],
+)
+
+EOF
+}
+
+
 ## Handle command=meson by generating the tree of meson.build files.
 function cmd_meson() {
     # Find and sort all the YAML files
@@ -282,6 +337,7 @@
         meson_create_path "${i}"
         meson_cpp_target "${i}"
         meson_md_target "${i}"
+        meson_registry_target "${i}"
     done
 }
 
@@ -365,6 +421,34 @@
     fi
 }
 
+## Handle command=registry by calling sdbus++ as appropriate.
+## $1 - interface to generate.
+##
+## For an interface foo/bar, the outputdir is expected to be foo.
+function cmd_registry() {
+
+    if [[ "" == "$1" ]]; then
+        show_usage
+        exit 1
+    fi
+
+    if [[ ! -e "${rootdir}/$1.events.yaml" ]]; then
+        echo "Missing YAML for $1."
+        exit 1
+    fi
+
+    mkdir -p "${outputdir}"
+
+    sdbusppcmd="${sdbuspp} -r ${rootdir}"
+    intf="${1//\//.}"
+    base="$(basename "$1")"
+
+    if [[ -e "${rootdir}/$1.events.yaml" ]]; then
+        ${sdbusppcmd} event exception-registry "${intf}" > "${outputdir}/${base}.json"
+    fi
+}
+
+
 ## Handle command=version.
 function cmd_version() {
     show_version
