diff --git a/phosphor-power-sequencer/src/system.hpp b/phosphor-power-sequencer/src/system.hpp
new file mode 100644
index 0000000..0ae8e62
--- /dev/null
+++ b/phosphor-power-sequencer/src/system.hpp
@@ -0,0 +1,71 @@
+/**
+ * Copyright © 2025 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#pragma once
+
+#include "chassis.hpp"
+
+#include <memory>
+#include <utility>
+#include <vector>
+
+namespace phosphor::power::sequencer
+{
+
+/**
+ * @class System
+ *
+ * The computer system being controlled and monitored by the BMC.
+ *
+ * The system contains one or more chassis.
+ */
+class System
+{
+  public:
+    // Specify which compiler-generated methods we want
+    System() = delete;
+    System(const System&) = delete;
+    System(System&&) = delete;
+    System& operator=(const System&) = delete;
+    System& operator=(System&&) = delete;
+    ~System() = default;
+
+    /**
+     * Constructor.
+     *
+     * @param chassis Chassis in the system
+     */
+    explicit System(std::vector<std::unique_ptr<Chassis>> chassis) :
+        chassis{std::move(chassis)}
+    {}
+
+    /**
+     * Returns the chassis in the system.
+     *
+     * @return chassis
+     */
+    const std::vector<std::unique_ptr<Chassis>>& getChassis() const
+    {
+        return chassis;
+    }
+
+  private:
+    /**
+     * Chassis in the system.
+     */
+    std::vector<std::unique_ptr<Chassis>> chassis{};
+};
+
+} // namespace phosphor::power::sequencer
