diff --git a/gui/chronosharegui.cpp b/gui/chronosharegui.cpp
index cbcafe2..d37b985 100644
--- a/gui/chronosharegui.cpp
+++ b/gui/chronosharegui.cpp
@@ -41,6 +41,9 @@
 #ifdef ADHOC_SUPPORTED
   , m_executor (1)
 #endif
+#ifdef SPARKLE_SUPPORTED
+  , m_autoUpdate(0)
+#endif
 {
   setWindowTitle("Settings");
 
@@ -147,6 +150,9 @@
 #ifdef ADHOC_SUPPORTED
   delete m_wifiAction;
 #endif
+#ifdef SPARKLE_SUPPORTED
+  delete m_autoUpdate;
+#endif
   delete m_openFolder;
   delete m_viewSettings;
   delete m_changeFolder;
@@ -208,6 +214,11 @@
   connect (m_wifiAction, SIGNAL (toggled(bool)), this, SLOT(onAdHocChange(bool)));
 #endif
 
+#ifdef SPARKLE_SUPPORTED
+  m_autoUpdate = new QAction (tr("Check For Updates"), this);
+  connect (m_autoUpdate, SIGNAL(triggered()), this, SLOT(onCheckForUpdates()));
+#endif
+
   // create the "quit program" action
   m_quitProgram = new QAction(tr("&Quit"), this);
   connect(m_quitProgram, SIGNAL(triggered()), qApp, SLOT(quit()));
@@ -279,6 +290,14 @@
 #endif
 }
 
+#ifdef SPARKLE_SUPPORTED
+void
+ChronoShareGui::onCheckForUpdates()
+{
+  m_autoUpdate->checkForUpdates();
+}
+#endif
+
 void ChronoShareGui::setIcon()
 {
   // set the icon image
diff --git a/gui/chronosharegui.h b/gui/chronosharegui.h
index eba4c12..8403a66 100644
--- a/gui/chronosharegui.h
+++ b/gui/chronosharegui.h
@@ -25,6 +25,11 @@
 
 #include "adhoc.h"
 
+#if __APPLE__ && HAVE_SPARKLE
+#define SPARKLE_SUPPORTED 1
+#include "auto-update.h"
+#endif
+
 #include <QtGui>
 #include <QWidget>
 #include <QSystemTrayIcon>
@@ -70,7 +75,9 @@
 
   // click on adhoc button
   void onAdHocChange (bool state); // cannot be protected with #ifdef. otherwise something fishy with QT
-
+#ifdef SPARKLE_SUPPORTED
+  void onCheckForUpdates();
+#endif
 
 private:
   // create actions that result from clicking a menu option
@@ -109,6 +116,7 @@
   QAction* m_viewSettings; // chronoShare settings
   QAction* m_changeFolder; // change the shared folder action
   QAction* m_quitProgram; // quit program action
+  QAction *m_checkForUpdates;
 
   QAction *m_wifiAction;
 
@@ -133,6 +141,9 @@
   Executor m_executor;
 #endif
 
+#ifdef SPARKLE_SUPPORTED
+  AutoUpdate *m_autoUpdate;
+#endif
   // QString m_settingsFilePath; // settings file path
   // QString m_settings;
 };
diff --git a/osx/auto-update/auto-update.h b/osx/auto-update/auto-update.h
new file mode 100644
index 0000000..14caa32
--- /dev/null
+++ b/osx/auto-update/auto-update.h
@@ -0,0 +1,8 @@
+#ifndef AUTO_UPDATE_H
+#define AUTO_UPDATE_H
+class AutoUpdate
+{
+  public:
+    virtual void checkForUpdates() = 0;
+};
+#endif
diff --git a/osx/auto-update/sparkle-auto-update.h b/osx/auto-update/sparkle-auto-update.h
new file mode 100644
index 0000000..9050bff
--- /dev/null
+++ b/osx/auto-update/sparkle-auto-update.h
@@ -0,0 +1,15 @@
+#ifndef SPARKLE_AUTO_UPDATE_H
+#define SPARKLE_AUTO_UPDATE_H
+#include "auto-update.h"
+#include <QString>
+class SparkleAutoUpdate : public AutoUpdate
+{
+public:
+  SparkleAutoUpdate (const QString &url);
+  ~SparkleAutoUpdate ();
+  virtual void checkForUpdates();
+private:
+  class Private;
+  Private *d;
+}
+#endif
diff --git a/osx/auto-update/sparkle-auto-update.mm b/osx/auto-update/sparkle-auto-update.mm
new file mode 100644
index 0000000..be49b55
--- /dev/null
+++ b/osx/auto-update/sparkle-auto-update.mm
@@ -0,0 +1,28 @@
+#include "sparkle-auto-update.h"
+#import <Sparkle/Sparkle.h>
+
+class SparkleAutoUpdate::Private
+{
+  public:
+    SUUpdater *updater;
+};
+
+SparkleAutoUpdate::SparkleAutoUpdate(const QString &updateUrl)
+{
+  d = new Private;
+  d->updater = [SUUpdater sharedUpdater];
+  [d->updater setAutomaticallyChecksForUpdates:YES];
+  NSURL *url = [NSURL URLWithString: [NSString stringWithUTF8String: updateUrl.toUtf8().data()]];
+  [d->updater setFeedURL: url];
+}
+
+SparkleAutoUpdate::~SparkleAutoUpdate()
+{
+  delete d;
+  // presummably SUUpdater handles garbage collection
+}
+
+void SparkleAutoUpdate::checkForUpdates()
+{
+  [d->updater checkForUpdatesInBackground];
+}
diff --git a/wscript b/wscript
index f2d7b1d..e8725b6 100644
--- a/wscript
+++ b/wscript
@@ -1,4 +1,5 @@
 # -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+import os
 
 VERSION='0.1'
 APPNAME='chronoshare'
@@ -13,6 +14,35 @@
 
     opt.load('compiler_c compiler_cxx boost ccnx protoc qt4')
 
+def check_framework(conf, name, **kwargs):
+  frameworkLocations = (os.environ.get('HOME') + '/Library/Frameworks'
+                        , '/opt/local/Library/Frameworks'
+                        , '/Library/Frameworks'
+                        , '/Network/Library/Frameworks'
+                        , '/System/Library/Frameworks'
+                        )
+  uselib = name.upper()
+  frameworkName = name + ".framework"
+  found = False
+  for frameworkLocation in frameworkLocations:
+    dynamicLib = os.path.join(frameworkLocation, frameworkName, name)
+    if os.path.exists(dynamicLib):
+      conf.env.append_unique('FRAMEWORK_' + uselib, name)
+      conf.msg('Checking for %s' % name, dynamicLib, 'GREEN')
+      conf.env.append_unique('INCLUDES_' + uselib, os.path.join(frameworkLocation, frameworkName, 'Headers'))
+      found = True
+      define_name = kwargs.get('define_name', None)
+      if define_name is not None:
+        conf.define(define_name, 1)
+      break
+
+  if not found:
+    mandatory = kwargs.get('mandatory', True)
+    if mandatory:
+      conf.fatal('Cannot find ' + frameworkName)
+    else:
+      conf.msg('Checking for %s' % name, False, 'YELLOW')
+
 def configure(conf):
     conf.load("compiler_c compiler_cxx")
 
@@ -25,6 +55,12 @@
     if Utils.unversioned_sys_platform () == "darwin":
         conf.check_cxx(framework_name='Foundation', uselib_store='OSX_FOUNDATION', cxxflags="-ObjC++", mandatory=False)
         conf.check_cxx(framework_name='CoreWLAN',   uselib_store='OSX_COREWLAN',   cxxflags="-ObjC++", define_name='HAVE_COREWLAN', mandatory=False)
+        conf.check_cxx(framework_name='Sparkle', uselib_store='SPARKLE', cxxflags='-ObjC++', define_name='HAVE_SPARKLE', mandatory=False)
+        #check_framework(conf, 'Sparkle', define_name='HAVE_SPARKLE', mandatory=False)
+        if conf.get_define('HAVE_SPARKLE'):
+          conf.env.SPARKLE = True
+        else:
+          conf.env.SPARKLE = False
 
     if not conf.check_cfg(package='openssl', args=['--cflags', '--libs'], uselib_store='SSL', mandatory=False):
         libcrypto = conf.check_cc(lib='crypto',
@@ -167,7 +203,12 @@
 </plist>'''
         qt.mac_app = "ChronoShare.app"
         qt.mac_plist = app_plist % "ChronoShare"
-        qt.use += " OSX_FOUNDATION OSX_COREWLAN adhoc"
+        if not bld.env['SPARKLE']:
+          qt.use += " OSX_FOUNDATION OSX_COREWLAN adhoc"
+        else:
+          qt.use += " OSX_SPARKLE OSX_FOUNDATION OSX_COREWLAN adhoc"
+          qt.source.append("osx/auto-update/sparkle-auto-update.mm")
+          qt.includes += " osx/auto-update"
         # qt.use += " OSX_FOUNDATION OSX_COREWLAN adhoc"
 
 
