diff --git a/agkyra/gui.py b/agkyra/gui.py
index 89ad4d917d53f4ff351e28e361ea1871461a9a5b..5e0068bc0a193eb5ffcec41c818e29fdb41f92bc 100644
--- a/agkyra/gui.py
+++ b/agkyra/gui.py
@@ -44,7 +44,8 @@ class GUI(WebSocketBaseClient):
             '/home/saxtouri/node-webkit-v0.11.6-linux-x64/nw',
             # self.gui_exec_path,
             abspath('gui/gui.nw'),
-            fp.name])
+            fp.name,
+            '--data-path', abspath('~/.agkyra')])
         LOG.debug('GUI process closed, remove temp file')
         os.remove(fp.name)
 
diff --git a/agkyra/gui/menu.html b/agkyra/gui/menu.html
index 1b76a8a7792a8ec0694af53f92be2d21ae6a01c9..7ba6e4f50e46a70ec5870b37a55a64c05eb61a50 100644
--- a/agkyra/gui/menu.html
+++ b/agkyra/gui/menu.html
@@ -112,9 +112,9 @@ menu.append(new gui.MenuItem({
   label: 'Launch Pithos+ page',
   icon: 'images/pithos.png',
   click: function () {
-    var pithos_url = globals['settings']['pithos_url'];
-    console.log('Visit ' + pithos_url);
-    gui.Shell.openExternal(pithos_url);
+    var pithos_ui = globals['settings']['pithos_ui'];
+    console.log('Visit ' + pithos_ui);
+    gui.Shell.openExternal(pithos_ui);
   }
 }));
 
diff --git a/agkyra/gui/package.json b/agkyra/gui/package.json
index edf1c1a7f8d32ba91dc69c2a0603e8800d2adfeb..e6731e994cffd6d4643e76541c2af3380fad8624 100644
--- a/agkyra/gui/package.json
+++ b/agkyra/gui/package.json
@@ -12,5 +12,6 @@
     "name": "Synnefo Development Team",
     "web": "http://www.synnefo.org"
     }],
-  "licences": [{"type": "GPLv3"}]
+  "licences": [{"type": "GPLv3"}],
+  "chromium-args": "--incognito"
 }
diff --git a/agkyra/gui/protocol.js b/agkyra/gui/protocol.js
index 7ace28f72afb23d73afe0031732a9cce7a751e6d..44f79a25ee36993c2c7dafd63a513e66152aac23 100644
--- a/agkyra/gui/protocol.js
+++ b/agkyra/gui/protocol.js
@@ -16,8 +16,7 @@ var globals = {
     'url': null,
     'container': null,
     'directory': null,
-    'pithos_url': null,
-    'weblogin': null,
+    'pithos_ui': null,
     'exclude': null
   },
   'status': {"progress": null, "paused": null}
diff --git a/agkyra/gui/settings.html b/agkyra/gui/settings.html
index d248440b1e93841d9eac0e953a1c4b007d71189e..adf0661b388360d5984a8dcf5dcaff6c552af405 100644
--- a/agkyra/gui/settings.html
+++ b/agkyra/gui/settings.html
@@ -21,9 +21,8 @@
                 exclude = get_setting('exclude');
                 if (exclude) $('#exclude').val(
                     fs.readFileSync(exclude, encoding='utf-8'));
-                var weblogin = get_setting('weblogin');
-                var pithos_url = get_setting('pithos_url');
-                if (weblogin && pithos_url) {
+                var pithos_ui = get_setting('pithos_ui');
+                if (pithos_ui) {
                     $('#get_creds').show();
                 } else {
                     console.log('No pithos view, remove credential button');
@@ -49,17 +48,13 @@
             var gui = require('nw.gui');
             function extract_cookie(url) {
                 var cookie_name = '_pithos2_a';
-                var w = gui.Window.open(url, {
-                    focus: true, width: 520, height: 841
+                var logout_url = 'https://accounts.okeanos.grnet.gr/ui/logout'
+                var w = gui.Window.open(logout_url, {
+                    focus: false, width: 20, height: 20
                 });
-                w.cookies.getAll({name: cookie_name}, function(cookies) {
-                    if (cookies.length) {
-                        console.log('Already logged in');
-                        extract_credentials(cookies[0]);
-                        w.close();
-                    } else {
-                        console.log('Not logged in');
-                    }
+                w.close();
+                var w = gui.Window.open(logout_url, {
+                    focus: true, width: 520, height: 920
                 });
                 w.cookies.onChanged.addListener(function(info) {
                     if (info.cookie.name === cookie_name) {
@@ -71,9 +66,8 @@
             }
 
             function get_credentials() {
-                var weblogin = get_setting('weblogin')
-                var pithos_url = get_setting('url');
-                extract_cookie(weblogin + '?next=' + pithos_url);
+                var pithos_ui = get_setting('pithos_ui');
+                extract_cookie(pithos_ui);
             }
         </script>
     </head>
diff --git a/agkyra/protocol.py b/agkyra/protocol.py
index 60a836463518025b10d220403a833e342f8d1d32..8ed1f2089321b0d5e13bbcb0eb746ef2ee1b6734 100644
--- a/agkyra/protocol.py
+++ b/agkyra/protocol.py
@@ -3,6 +3,9 @@ import json
 import logging
 from os.path import abspath
 from titanic import syncer
+from config import AgkyraConfig
+from kamaki.clients.astakos import AstakosClient
+from kamaki.clients.pithos import PithosClient
 
 
 LOG = logging.getLogger(__name__)
@@ -61,15 +64,54 @@ class WebSocketProtocol(WebSocket):
     gui_id = None
     accepted = False
     settings = dict(
-        token='token',
-        url='https://accounts.okeanos.grnet.gr/identity/v2.0',
-        container='pithos',
-        directory='/tmp/.',
-        exclude=abspath('exclude.cnf'),
-        pithos_url='https://pithos.okeanos.grnet.gr/ui/',
-        weblogin='https://accounts.okeanos.grnet.gr/ui')
+        token=None, url=None,
+        container=None, directory=None,
+        exclude=None, pithos_ui=None)
     status = dict(progress=0, paused=True)
     file_syncer = None
+    cnf = AgkyraConfig()
+
+    def _load_settings(self):
+        sync = self.cnf.get('global', 'default_sync')
+        cloud = self.cnf.get_sync(sync, 'cloud')
+
+        url = self.cnf.get_cloud(cloud, 'url')
+        token = self.cnf.get_cloud(cloud, 'token')
+
+        astakos = AstakosClient(url, token)
+        self.settings['url'], self.settings['token'] = url, token
+
+        try:
+            endpoints = astakos.get_endpoints()['access']['serviceCatalog']
+            for endpoint in endpoints:
+                if endpoint['type'] == PithosClient.service_type:
+                    pithos_ui = endpoint['endpoints'][0]['SNF:uiURL']
+                    self.settings['pithos_ui'] = pithos_ui
+                    break
+        except Exception as e:
+            LOG.debug('Failed to retrieve pithos_ui: %s' % e)
+
+        for option in ('container', 'directory', 'exclude'):
+            self.settings[option] = self.cnf.get_sync(sync, option)
+
+    def _dump_settings(self):
+        sync = self.cnf.get('global', 'default_sync')
+        cloud = self.cnf.get_sync(sync, 'cloud')
+
+        old_url = self.cnf.get_cloud(cloud, 'url')
+        while old_url != self.settings['url']:
+            cloud = '%s_%s' % (cloud, sync)
+            try:
+                self.cnf.get_cloud(cloud, 'url')
+            except KeyError:
+                break
+
+        self.cnf.set_cloud(cloud, 'url', self.settings['url'])
+        self.cnf.set_cloud(cloud, 'token', self.settings['token'])
+        self.cnf.set_sync(sync, 'cloud', cloud)
+
+        for option in ('directory', 'container', 'exclude'):
+            self.cnf.set_sync(sync, option, self.settings[option])
 
     # Syncer-related methods
     def get_status(self):
@@ -79,10 +121,12 @@ class WebSocketProtocol(WebSocket):
         return self.status
 
     def get_settings(self):
+        self._load_settings()
         return self.settings
 
     def set_settings(self, new_settings):
         self.settings = new_settings
+        self._dump_settings()
 
     def pause_sync(self):
         self.status['paused'] = True
@@ -93,6 +137,7 @@ class WebSocketProtocol(WebSocket):
     # WebSocket connection methods
     def opened(self):
         LOG.debug('Helper: connection established')
+        self._load_settings()
 
     def closed(self, *args):
         LOG.debug('Helper: connection closed')