diff --git a/osx/Info.plist b/osx/Info.plist
new file mode 100644
index 0000000..24e72d7
--- /dev/null
+++ b/osx/Info.plist
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+    <key>CFBundleExecutable</key>
+    <string>NDNx Control Center</string>
+    <key>CFBundleGetInfoString</key>
+    <string>Created by Waf</string>
+    <key>CFBundleIconFile</key>
+    <string>ndnx-main.icns</string>
+    <key>CFBundleIdentifier</key>
+    <string>net.named-data.control-center</string>
+    <key>CFBundlePackageType</key>
+    <string>APPL</string>
+    <key>CFBundleSignature</key>
+    <string>????</string>
+    <key>NOTE</key>
+    <string>THIS IS A GENERATED FILE, DO NOT MODIFY</string>
+    <key>NSPrincipalClass</key>
+    <string>NSApplication</string>
+    <!-- <key>LSUIElement</key> -->
+    <!-- <string>1</string> -->
+</dict>
+</plist>
diff --git a/osx/main.mm b/osx/main.mm
new file mode 100644
index 0000000..edc5186
--- /dev/null
+++ b/osx/main.mm
@@ -0,0 +1,13 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * @copyright See LICENCE for copyright and license information.
+ *
+ * @author Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, char *argv[])
+{
+    return NSApplicationMain(argc, (const char **)argv);
+}
diff --git a/osx/ndnx-main.icns b/osx/ndnx-main.icns
new file mode 100644
index 0000000..ececc16
--- /dev/null
+++ b/osx/ndnx-main.icns
Binary files differ
diff --git a/osx/ndnx-tray.icns b/osx/ndnx-tray.icns
new file mode 100644
index 0000000..f347dd7
--- /dev/null
+++ b/osx/ndnx-tray.icns
Binary files differ
diff --git a/osx/sparkle-auto-update.h b/osx/sparkle-auto-update.h
new file mode 100644
index 0000000..88f8c66
--- /dev/null
+++ b/osx/sparkle-auto-update.h
@@ -0,0 +1,36 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * @copyright See LICENCE for copyright and license information.
+ *
+ * @author Zhenkai Zhu <zhenkai@cs.ucla.edu>
+ * @author Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef SPARKLE_AUTO_UPDATE_H
+#define SPARKLE_AUTO_UPDATE_H
+
+/**
+ * @brief Class implementing interface for automatic updates for OSX using Sparkle framework
+ */
+class SparkleAutoUpdate
+{
+public:
+  /**
+   * @brief Constructor
+   * @param updateUrl URL to Sparkle update definition file
+   */
+  SparkleAutoUpdate (const char *updateUrl);
+  ~SparkleAutoUpdate ();
+
+  /**
+   * @brief Check for updates once
+   */
+  void
+  checkForUpdates ();
+
+private:
+  class Private;
+  Private *d;
+};
+
+#endif // SPARKLE_AUTO_UPDATE_H
diff --git a/osx/sparkle-auto-update.mm b/osx/sparkle-auto-update.mm
new file mode 100644
index 0000000..a1dc5c0
--- /dev/null
+++ b/osx/sparkle-auto-update.mm
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * @copyright See LICENCE for copyright and license information.
+ *
+ * @author Zhenkai Zhu <zhenkai@cs.ucla.edu>
+ * @author Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "sparkle-auto-update.h"
+
+#import <Foundation/Foundation.h>
+#import <AppKit/AppKit.h>
+#import <Sparkle/Sparkle.h>
+
+class SparkleAutoUpdate::Private
+{
+public:
+  SUUpdater *updater;
+};
+
+SparkleAutoUpdate::SparkleAutoUpdate(const char *updateUrl)
+{
+  d = new Private;
+  d->updater = [[SUUpdater sharedUpdater] retain];
+  NSURL *url = [NSURL URLWithString: [NSString stringWithCString:updateUrl encoding:NSASCIIStringEncoding]];
+  [d->updater setFeedURL: url];
+  [d->updater setAutomaticallyChecksForUpdates: YES];
+  [d->updater setUpdateCheckInterval: 86400];
+}
+
+SparkleAutoUpdate::~SparkleAutoUpdate()
+{
+  [d->updater release];
+  delete d;
+  // presummably SUUpdater handles garbage collection
+}
+
+void SparkleAutoUpdate::checkForUpdates()
+{
+  //[d->updater checkForUpdatesInBackground];
+  [d->updater checkForUpdates : nil];
+}
