diff --git a/xos/gui/conf/proxy.js b/xos/gui/conf/proxy.js
index b6e5e83..41908c0 100644
--- a/xos/gui/conf/proxy.js
+++ b/xos/gui/conf/proxy.js
@@ -1,13 +1,9 @@
-
 /*
  * Copyright 2017-present Open Networking Foundation
-
  * 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.
@@ -15,34 +11,21 @@
  * limitations under the License.
  */
 
-
 const httpProxy = require('http-proxy');
 
 const target = process.env.PROXY || '192.168.46.100';
 
-const apiProxy = httpProxy.createProxyServer({
-  target: `http://${target}:9101`
+console.log(`proxy setup to: ${target}`);
+
+const proxy = httpProxy.createProxyServer({
+  target: `http://${target}`
 });
 
-const staticFilesProxy = httpProxy.createProxyServer({
-  target: `http://${target}/spa`
-});
-
-apiProxy.on('error', (error, req, res) => {
+proxy.on('error', (error, req, res) => {
   res.writeHead(500, {
     'Content-Type': 'text/plain'
   });
   console.error('[Proxy]', error);
 });
 
-staticFilesProxy.on('error', (error, req, res) => {
-  res.writeHead(500, {
-    'Content-Type': 'text/plain'
-  });
-  console.error('[Proxy]', error);
-});
-
-module.exports = {
-  api: apiProxy,
-  static: staticFilesProxy
-};
+module.exports = proxy;
