diff --git a/buffet/privet/privet_manager.h b/buffet/privet/privet_manager.h
new file mode 100644
index 0000000..23e19d4
--- /dev/null
+++ b/buffet/privet/privet_manager.h
@@ -0,0 +1,107 @@
+// Copyright 2014 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BUFFET_PRIVET_PRIVET_MANAGER_H_
+#define BUFFET_PRIVET_PRIVET_MANAGER_H_
+
+#include <memory>
+#include <set>
+#include <string>
+#include <vector>
+
+#include <base/memory/weak_ptr.h>
+#include <base/scoped_observer.h>
+#include <chromeos/daemons/dbus_daemon.h>
+
+#include "buffet/privet/cloud_delegate.h"
+
+namespace chromeos {
+namespace dbus_utils {
+class AsyncEventSequencer;
+}
+}
+
+namespace libwebserv {
+class ProtocolHandler;
+class Request;
+class Response;
+class Server;
+}
+
+namespace privetd {
+
+class PrivetdConfigParser;
+class DaemonState;
+class CloudDelegate;
+class DeviceDelegate;
+class SecurityManager;
+class ShillClient;
+class ApManagerClient;
+class WifiBootstrapManager;
+class PeerdClient;
+class PrivetHandler;
+
+class Manager : public chromeos::DBusServiceDaemon,
+                public CloudDelegate::Observer {
+ public:
+  Manager(bool disable_security,
+          bool enable_ping,
+          const std::set<std::string>& device_whitelist,
+          const base::FilePath& config_path,
+          const base::FilePath& state_path);
+  ~Manager() override;
+
+  void RegisterDBusObjectsAsync(
+      chromeos::dbus_utils::AsyncEventSequencer* sequencer) override;
+
+  void OnShutdown(int* return_code) override;
+
+  void OnDeviceInfoChanged() override;
+
+ private:
+  void PrivetRequestHandler(std::unique_ptr<libwebserv::Request> request,
+                            std::unique_ptr<libwebserv::Response> response);
+
+  void PrivetResponseHandler(std::unique_ptr<libwebserv::Response> response,
+                             int status,
+                             const base::DictionaryValue& output);
+
+  void HelloWorldHandler(std::unique_ptr<libwebserv::Request> request,
+                         std::unique_ptr<libwebserv::Response> response);
+
+  void OnChanged();
+
+  void OnConnectivityChanged(bool online);
+
+  void OnProtocolHandlerConnected(
+      libwebserv::ProtocolHandler* protocol_handler);
+
+  void OnProtocolHandlerDisconnected(
+      libwebserv::ProtocolHandler* protocol_handler);
+
+  bool disable_security_;
+  bool enable_ping_;
+  std::unique_ptr<PrivetdConfigParser> parser_;
+  std::set<std::string> device_whitelist_;
+  base::FilePath config_path_;
+  std::unique_ptr<DaemonState> state_store_;
+  std::unique_ptr<CloudDelegate> cloud_;
+  std::unique_ptr<DeviceDelegate> device_;
+  std::unique_ptr<SecurityManager> security_;
+  std::unique_ptr<ShillClient> shill_client_;
+  std::unique_ptr<ApManagerClient> ap_manager_client_;
+  std::unique_ptr<WifiBootstrapManager> wifi_bootstrap_manager_;
+  std::unique_ptr<PeerdClient> peerd_client_;
+  std::unique_ptr<PrivetHandler> privet_handler_;
+  std::unique_ptr<libwebserv::Server> web_server_;
+
+  ScopedObserver<CloudDelegate, CloudDelegate::Observer> cloud_observer_{this};
+
+  base::WeakPtrFactory<Manager> weak_ptr_factory_{this};
+  DISALLOW_COPY_AND_ASSIGN(Manager);
+};
+
+}  // namespace privetd
+
+#endif  // BUFFET_PRIVET_PRIVET_MANAGER_H_
