diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
 # Revision history for ogma-cli
 
+## [1.14.0] - 2026-05-21
+
+* Version bump (1.14.0) (#425).
+* Add support for reading diagrams to `overview` command (#386).
+* Augment `overview` command to report determinism of state machines (#388).
+* Adapt example to change in code generated by diagram backend (#411).
+* Adjust `standalone`, app commands to support multiple input files (#421).
+* Expose report command (#423).
+
 ## [1.13.0] - 2026-03-21
 
 * Version bump (1.13.0) (#373).
diff --git a/ogma-cli.cabal b/ogma-cli.cabal
--- a/ogma-cli.cabal
+++ b/ogma-cli.cabal
@@ -19,7 +19,7 @@
 build-type:          Simple
 
 name:                ogma-cli
-version:             1.13.0
+version:             1.14.0
 homepage:            https://github.com/nasa/ogma
 bug-reports:         https://github.com/nasa/ogma/issues
 license:             Apache-2.0
@@ -85,6 +85,7 @@
                      >  ros                      Generate a ROS 2 monitoring application
                      >  standalone               Generate a Copilot file from an input specification
                      >  diagram                  Generate a monitor from a state machine diagram
+                     >  report                   Generate a report of the input specification(s).
                      .
                      For further information, see:
                      .
@@ -131,6 +132,7 @@
     CLI.CommandDiagram
     CLI.CommandFPrimeApp
     CLI.CommandOverview
+    CLI.CommandReport
     CLI.CommandROSApp
     CLI.CommandStandalone
     CLI.CommandTop
@@ -143,7 +145,7 @@
     , microstache          >= 1.0      && < 1.1
     , text                 >= 1.2.3.1  && < 2.2
 
-    , ogma-core            >= 1.13.0 && < 1.14
+    , ogma-core            >= 1.14.0 && < 1.15
 
   hs-source-dirs:
     src
diff --git a/src/CLI/CommandCFSApp.hs b/src/CLI/CommandCFSApp.hs
--- a/src/CLI/CommandCFSApp.hs
+++ b/src/CLI/CommandCFSApp.hs
@@ -30,8 +30,8 @@
   where
 
 -- External imports
-import Options.Applicative ( Parser, help, long, metavar, optional, short,
-                             showDefault, strOption, value )
+import Options.Applicative ( Parser, help, long, many, metavar, optional,
+                             short, showDefault, strOption, value )
 
 -- External imports: command results
 import Command.Result ( Result )
@@ -45,7 +45,7 @@
 -- | Options needed to generate the cFS application.
 data CommandOpts = CommandOpts
   { cFSAppConditionExpr  :: Maybe String
-  , cFSAppInputFile    :: Maybe String
+  , cFSAppInputFiles   :: [String]
   , cFSAppTarget       :: String
   , cFSAppTemplateDir  :: Maybe String
   , cFSAppVarNames     :: Maybe String
@@ -67,7 +67,7 @@
   where
     options = Command.CFSApp.CommandOptions
                 { Command.CFSApp.commandConditionExpr = cFSAppConditionExpr c
-                , Command.CFSApp.commandInputFile   = cFSAppInputFile c
+                , Command.CFSApp.commandInputFiles  = cFSAppInputFiles c
                 , Command.CFSApp.commandTargetDir   = cFSAppTarget c
                 , Command.CFSApp.commandTemplateDir = cFSAppTemplateDir c
                 , Command.CFSApp.commandVariables   = cFSAppVarNames c
@@ -96,7 +96,7 @@
             <> help strCFSAppConditionExprArgDesc
             )
         )
-  <*> optional
+  <*> many
         ( strOption
             (  long "input-file"
             <> metavar "FILENAME"
diff --git a/src/CLI/CommandFPrimeApp.hs b/src/CLI/CommandFPrimeApp.hs
--- a/src/CLI/CommandFPrimeApp.hs
+++ b/src/CLI/CommandFPrimeApp.hs
@@ -30,8 +30,8 @@
   where
 
 -- External imports
-import Options.Applicative ( Parser, help, long, metavar, optional, short,
-                             showDefault, strOption, value )
+import Options.Applicative ( Parser, help, long, many, metavar, optional,
+                             short, showDefault, strOption, value )
 
 -- External imports: command results
 import Command.Result ( Result )
@@ -45,7 +45,7 @@
 -- | Options needed to generate the FPrime component.
 data CommandOpts = CommandOpts
   { fprimeAppConditionExpr  :: Maybe String
-  , fprimeAppInputFile    :: Maybe String
+  , fprimeAppInputFiles   :: [String]
   , fprimeAppTarget       :: String
   , fprimeAppTemplateDir  :: Maybe String
   , fprimeAppVariables    :: Maybe String
@@ -68,7 +68,7 @@
     options =
       Command.FPrimeApp.CommandOptions
         { Command.FPrimeApp.commandConditionExpr = fprimeAppConditionExpr c
-        , Command.FPrimeApp.commandInputFile   = fprimeAppInputFile c
+        , Command.FPrimeApp.commandInputFiles  = fprimeAppInputFiles c
         , Command.FPrimeApp.commandTargetDir   = fprimeAppTarget c
         , Command.FPrimeApp.commandTemplateDir = fprimeAppTemplateDir c
         , Command.FPrimeApp.commandVariables   = fprimeAppVariables c
@@ -97,7 +97,7 @@
             <> help strFPrimeAppConditionExprArgDesc
             )
         )
-  <*> optional
+  <*> many
         ( strOption
             (  long "input-file"
             <> metavar "FILENAME"
diff --git a/src/CLI/CommandOverview.hs b/src/CLI/CommandOverview.hs
--- a/src/CLI/CommandOverview.hs
+++ b/src/CLI/CommandOverview.hs
@@ -61,9 +61,11 @@
     (mOutput, result) <-
       Command.Overview.command (overviewInputFile c) internalCommandOpts
 
-    case (mOutput, outputString) of
-      (Just output, Right template) ->
-         T.putStr $ renderMustache template (toJSON output)
+    case mOutput of
+      Just output ->
+        case outputString output of
+          Right template -> T.putStr $ renderMustache template (toJSON output)
+          _              -> putStrLn "Error"
       _ -> putStrLn "Error"
     return result
 
@@ -75,20 +77,32 @@
       , Command.Overview.commandPropVia     = overviewPropVia c
       }
 
-    outputString = compileMustacheText "output" $ T.unlines
-      [ "The file has:"
-      , " - {{commandExternalVariables}} external variables."
-      , " - {{commandInternalVariables}} internal variables."
-      , " - {{commandRequirements}} requirements."
-      , "   - {{commandRequirementsTrue}} requirements are constantly or always true."
-      , "   - {{commandRequirementsFalse}} requirements are constantly or always false."
-      , "{{#commandRequirementsConsistent}}"
-      , "   - No inconsistencies detected in the requirements."
-      , "{{/commandRequirementsConsistent}}"
-      , "{{^commandRequirementsConsistent}}"
-      , "   - The requirements are not mutually consistent."
-      , "{{/commandRequirementsConsistent}}"
-      ]
+    outputString (Command.Overview.CommandSummaryRequirement {}) =
+      compileMustacheText "output" $ T.unlines
+        [ "The requirements file has:"
+        , " - {{commandExternalVariables}} external variables."
+        , " - {{commandInternalVariables}} internal variables."
+        , " - {{commandRequirements}} requirements."
+        , "   - {{commandRequirementsTrue}} requirements are constantly or always true."
+        , "   - {{commandRequirementsFalse}} requirements are constantly or always false."
+        , "{{#commandRequirementsConsistent}}"
+        , "   - No inconsistencies detected in the requirements."
+        , "{{/commandRequirementsConsistent}}"
+        , "{{^commandRequirementsConsistent}}"
+        , "   - The requirements are not mutually consistent."
+        , "{{/commandRequirementsConsistent}}"
+        ]
+    outputString (Command.Overview.CommandSummaryDiagram {}) =
+      compileMustacheText "output" $ T.unlines
+        [ "The diagram file:"
+        , " - Has {{commandNumStates}} states."
+        , "{{#commandDeterministic}}"
+        , " - Is deterministic."
+        , "{{/commandDeterministic}}"
+        , "{{^commandDeterministic}}"
+        , " - Is not deterministic."
+        , "{{/commandDeterministic}}"
+        ]
 
 -- * CLI
 
diff --git a/src/CLI/CommandROSApp.hs b/src/CLI/CommandROSApp.hs
--- a/src/CLI/CommandROSApp.hs
+++ b/src/CLI/CommandROSApp.hs
@@ -45,7 +45,7 @@
 -- | Options needed to generate the ROS application.
 data CommandOpts = CommandOpts
   { rosAppConditionExpr  :: Maybe String
-  , rosAppInputFile    :: Maybe String
+  , rosAppInputFiles   :: [String]
   , rosAppTarget       :: String
   , rosAppTemplateDir  :: Maybe String
   , rosAppVarNames     :: Maybe String
@@ -69,7 +69,7 @@
   where
     options = Command.ROSApp.CommandOptions
                 { Command.ROSApp.commandConditionExpr = rosAppConditionExpr c
-                , Command.ROSApp.commandInputFile   = rosAppInputFile c
+                , Command.ROSApp.commandInputFiles  = rosAppInputFiles c
                 , Command.ROSApp.commandTargetDir   = rosAppTarget c
                 , Command.ROSApp.commandTemplateDir = rosAppTemplateDir c
                 , Command.ROSApp.commandVariables   = rosAppVarNames c
@@ -107,7 +107,7 @@
             <> help strROSAppConditionExprArgDesc
             )
         )
-  <*> optional
+  <*> many
         ( strOption
             (  long "input-file"
             <> metavar "FILENAME"
diff --git a/src/CLI/CommandReport.hs b/src/CLI/CommandReport.hs
new file mode 100644
--- /dev/null
+++ b/src/CLI/CommandReport.hs
@@ -0,0 +1,162 @@
+-- Copyright 2020 United States Government as represented by the Administrator
+-- of the National Aeronautics and Space Administration. All Rights Reserved.
+--
+-- Disclaimers
+--
+-- No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY
+-- OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT
+-- LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO
+-- SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+-- PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT THE
+-- SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF
+-- PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN
+-- ANY MANNER, CONSTITUTE AN ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR
+-- RECIPIENT OF ANY RESULTS, RESULTING DESIGNS, HARDWARE, SOFTWARE PRODUCTS OR
+-- ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT SOFTWARE. FURTHER,
+-- GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING
+-- THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES
+-- IT "AS IS."
+--
+-- Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST
+-- THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS
+-- ANY PRIOR RECIPIENT. IF RECIPIENT'S USE OF THE SUBJECT SOFTWARE RESULTS IN
+-- ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES OR LOSSES ARISING FROM SUCH USE,
+-- INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING FROM, RECIPIENT'S
+-- USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE
+-- UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY
+-- PRIOR RECIPIENT, TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY
+-- FOR ANY SUCH MATTER SHALL BE THE IMMEDIATE, UNILATERAL TERMINATION OF THIS
+-- AGREEMENT.
+--
+-- | CLI interface to the Report subcommand.
+module CLI.CommandReport
+    (
+      -- * Direct command access
+      command
+    , CommandOpts
+    , ErrorCode
+
+      -- * CLI
+    , commandDesc
+    , commandOptsParser
+    )
+  where
+
+-- External imports
+import Options.Applicative (Parser, help, long, metavar, optional, short,
+                            showDefault, strOption, value)
+
+-- External imports: command results
+import Command.Result (Result (..))
+
+-- External imports: actions or commands supported
+import           Command.Report (ErrorCode)
+import qualified Command.Report
+
+-- * Command
+
+-- | Options to generate Copilot from specification.
+data CommandOpts = CommandOpts
+  { commandTargetDir   :: FilePath           -- ^ Target directory where the
+                                             -- reoprt should be created.
+  , commandTemplateDir :: Maybe FilePath     -- ^ Directory where the template
+                                             -- is to be found.
+  , commandFileName    :: FilePath
+  , commandFormat      :: String
+  , commandPropFormat  :: String
+  , commandPropVia     :: Maybe String
+  }
+
+-- | Generate a report of the input specification(s).
+command :: CommandOpts -- ^ Customization options
+        -> IO (Result ErrorCode)
+command options = do
+    Command.Report.command internalCommandOpts
+
+  where
+    internalCommandOpts :: Command.Report.CommandOptions
+    internalCommandOpts = Command.Report.CommandOptions
+      { Command.Report.commandTargetDir   = commandTargetDir options
+      , Command.Report.commandTemplateDir = commandTemplateDir options
+      , Command.Report.commandInputFile   = commandFileName options
+      , Command.Report.commandFormat      = commandFormat options
+      , Command.Report.commandPropFormat  = commandPropFormat options
+      , Command.Report.commandPropVia     = commandPropVia options
+      }
+
+-- * CLI
+
+-- | Command description for CLI help.
+commandDesc :: String
+commandDesc = "Generate a report of the input specification(s)."
+
+-- | Subparser for the @report@ command, used to generate a Copilot
+-- specification from an input specification file.
+commandOptsParser :: Parser CommandOpts
+commandOptsParser = CommandOpts
+  <$> strOption
+        (  long "target-dir"
+        <> metavar "DIR"
+        <> showDefault
+        <> value "report"
+        <> help strReportTargetDirDesc
+        )
+  <*> optional
+        ( strOption
+            (  long "template-dir"
+            <> metavar "DIR"
+            <> help strReportTemplateDirArgDesc
+            )
+        )
+  <*> strOption
+        (  long "file-name"
+        <> metavar "FILENAME"
+        <> help strReportFilenameDesc
+        )
+  <*> strOption
+        (  long "input-format"
+        <> short 'f'
+        <> metavar "FORMAT_NAME"
+        <> help strReportFormatDesc
+        <> showDefault
+        <> value "fcs"
+        )
+  <*> strOption
+        (  long "prop-format"
+        <> short 'p'
+        <> metavar "FORMAT_NAME"
+        <> help strReportPropFormatDesc
+        <> showDefault
+        <> value "smv"
+        )
+  <*> optional
+        ( strOption
+            (  long "parse-prop-via"
+            <> metavar "COMMAND"
+            <> help strReportPropViaDesc
+            )
+        )
+
+-- | Target dir flag description.
+strReportTargetDirDesc :: String
+strReportTargetDirDesc = "Target directory"
+
+-- | Template dir flag description.
+strReportTemplateDirArgDesc :: String
+strReportTemplateDirArgDesc = "Directory holding report template"
+
+-- | Filename flag description.
+strReportFilenameDesc :: String
+strReportFilenameDesc = "File with properties, requirements or a diagram"
+
+-- | Format flag description.
+strReportFormatDesc :: String
+strReportFormatDesc = "Format of the input file"
+
+-- | Property format flag description.
+strReportPropFormatDesc :: String
+strReportPropFormatDesc = "Format of temporal or boolean properties"
+
+-- | External command to pre-process individual properties.
+strReportPropViaDesc :: String
+strReportPropViaDesc = "Command to pre-process individual properties"
diff --git a/src/CLI/CommandStandalone.hs b/src/CLI/CommandStandalone.hs
--- a/src/CLI/CommandStandalone.hs
+++ b/src/CLI/CommandStandalone.hs
@@ -48,7 +48,7 @@
   { standaloneTargetDir    :: FilePath
   , standaloneTemplateDir  :: Maybe FilePath
   , standaloneConditionExpr  :: Maybe String
-  , standaloneInputFile    :: Maybe FilePath
+  , standaloneInputFiles   :: [FilePath]
   , standaloneFormat       :: String
   , standalonePropFormat   :: String
   , standaloneTypes        :: [String]
@@ -65,7 +65,7 @@
     internalCommandOpts :: Command.Standalone.CommandOptions
     internalCommandOpts = Command.Standalone.CommandOptions
       { Command.Standalone.commandConditionExpr = standaloneConditionExpr c
-      , Command.Standalone.commandInputFile   = standaloneInputFile c
+      , Command.Standalone.commandInputFiles  = standaloneInputFiles c
       , Command.Standalone.commandTargetDir   = standaloneTargetDir c
       , Command.Standalone.commandTemplateDir = standaloneTemplateDir c
       , Command.Standalone.commandFormat      = standaloneFormat c
@@ -117,7 +117,7 @@
           <> help strStandaloneConditionExprDesc
           )
         )
-  <*> optional
+  <*> many
         ( strOption
           (  long "input-file"
           <> metavar "FILENAME"
@@ -182,9 +182,9 @@
 strStandaloneConditionExprDesc =
   "Condition upon which the monitor will fire or notify"
 
--- | Input file flag description.
+-- | Input files flag description.
 strStandaloneInputFileDesc :: String
-strStandaloneInputFileDesc = "File with properties or requirements"
+strStandaloneInputFileDesc = "File(s) with properties or requirements"
 
 -- | Format flag description.
 strStandaloneFormatDesc :: String
diff --git a/src/CLI/CommandTop.hs b/src/CLI/CommandTop.hs
--- a/src/CLI/CommandTop.hs
+++ b/src/CLI/CommandTop.hs
@@ -79,6 +79,7 @@
 import qualified CLI.CommandDiagram
 import qualified CLI.CommandFPrimeApp
 import qualified CLI.CommandOverview
+import qualified CLI.CommandReport
 import qualified CLI.CommandROSApp
 import qualified CLI.CommandStandalone
 
@@ -98,6 +99,7 @@
   | CommandOptsOverview                  CLI.CommandOverview.CommandOpts
   | CommandOptsROSApp                    CLI.CommandROSApp.CommandOpts
   | CommandOptsStandalone                CLI.CommandStandalone.CommandOpts
+  | CommandOptsReport                    CLI.CommandReport.CommandOpts
 
 -- * CLI
 
@@ -117,6 +119,7 @@
   <> subcommandROSApp
   <> subcommandStandalone
   <> subcommandDiagram
+  <> subcommandReport
   )
 
 -- | Modifier for the overview subcommand, linking the subcommand options and
@@ -194,6 +197,15 @@
     (CommandOptsDiagram <$> CLI.CommandDiagram.commandOptsParser)
     CLI.CommandDiagram.commandDesc
 
+-- | Modifier for the report subcommand, linking the subcommand options and
+-- description to the command @report@ at top level.
+subcommandReport :: Mod CommandFields CommandOpts
+subcommandReport =
+  subcommand
+    "report"
+    (CommandOptsReport <$> CLI.CommandReport.commandOptsParser)
+    CLI.CommandReport.commandDesc
+
 -- * Command dispatcher
 
 -- | Command dispatcher that obtains the parameters from the command line and
@@ -232,6 +244,8 @@
   id <$> CLI.CommandStandalone.command c
 command (CommandOptsDiagram c) =
   id <$> CLI.CommandDiagram.command c
+command (CommandOptsReport c) =
+  id <$> CLI.CommandReport.command c
 
 -- We indicate to HLint that the use of (id <$>) above should not trigger a
 -- warning. Conceptually, there is a transformation taking place, but no change
