diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d70aec97a94165937137d16102c003b938a8bc17
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,13 @@
+stages:
+    - prepare
+    - build
+    - test
+
+variables:
+    GIT_SUBMODULE_STRATEGY: normal
+
+kelvin-node-schedule:
+    stage: build
+    tags:
+    - kelvin-node
+    script: ~/production/integration/gitlab-CI/build_all_handler.sh kelvin-node && ~/production/integration/gitlab-CI/travis_test.sh
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a8a8bc865def159983987d299d9cd05fcc10dd70..30fab3b03210d31f7f4dd3951431f4ef0cafb469 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -37,8 +37,8 @@ SET(DESTDIR "/opt/${PROJECT_NAME}")
 SET( CPACK_GENERATOR "DEB")
 SET( CPACK_PACKAGE_NAME  "${PROJECT_NAME}")
 SET( CPACK_PACKAGE_VERSION_MAJOR 1)
-SET( CPACK_PACKAGE_VERSION_MINOR 1)
-SET( CPACK_PACKAGE_VERSION_PATCH 15)
+SET( CPACK_PACKAGE_VERSION_MINOR 2)
+SET( CPACK_PACKAGE_VERSION_PATCH 1)
 
 SET( CPACK_SYSTEM_NAME "debian-9.7-amd64")
 SET( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${CPACK_PACKAGE_VERSION_PATCH}")
diff --git a/README.md b/README.md
index 69fb3acc68ae696217e8efcb58839a92c4d3abb4..663d4417613e934eaf2d3fcefa5f663e2eeb9f4f 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 # kelvin-node
 Kelvin Blockchain node
 
-[![Build Status](https://travis-ci.com/cellframe/kelvin-node.svg?branch=master)](https://travis-ci.com/cellframe/kelvin-node)
+[![Build Status](https://travis-ci.com/osetrovich/kelvin-node-ci.svg?branch=master)](https://travis-ci.com/osetrovich/kelvin-node-ci)
 
 [Kelvin node manual](https://github.com/cellframe/kelvin-node/wiki/Kelvin-Node)
 
diff --git a/dist/share/configs/kelvin-node.cfg.tpl b/dist/share/configs/kelvin-node.cfg.tpl
index ebc4f0fb263301f15c9be07021125f611dbcdf4f..a119d36edf748c91013d8b004942bf4f44f12e18 100644
--- a/dist/share/configs/kelvin-node.cfg.tpl
+++ b/dist/share/configs/kelvin-node.cfg.tpl
@@ -8,6 +8,8 @@ node_role=full
 #seed_mode=false
 auto_online=false
 
+# Console
+
 # Server part
 [server]
 #   By default you don't need to open you to the world
@@ -28,6 +30,14 @@ access_groups=expats,services,admins
 network_address=10.11.12.0
 network_mask=255.255.255.0
 
+# Console interface server
+[conserver]
+enabled=true
+#listen_tcp_port=12345
+listen_unix_socket_path=/opt/kelvin-node/var/run/node_cli
+# Default permissions 770
+#listen_unix_socket_permissions=770
+
 # Application Resources
 [resources]
 #   0 means auto detect
diff --git a/docs/CellFrame.dia b/docs/CellFrame.dia
new file mode 100644
index 0000000000000000000000000000000000000000..2842fa389f882de944696171ce8ca9995c77a247
Binary files /dev/null and b/docs/CellFrame.dia differ
diff --git a/docs/Cellframe.png b/docs/Cellframe.png
new file mode 100644
index 0000000000000000000000000000000000000000..d271fdba2bdfdec9a6528852be4d17d0d9f2c5bd
Binary files /dev/null and b/docs/Cellframe.png differ
diff --git a/docs/ChainFrame.dia b/docs/ChainFrame.dia
index 9ec80e6539df7d21bb18224210623a42fa5e3c89..2842fa389f882de944696171ce8ca9995c77a247 100644
Binary files a/docs/ChainFrame.dia and b/docs/ChainFrame.dia differ
diff --git a/libdap b/libdap
index 2cafdb986c3f27998060421e257deac0eb4e315d..85933c820be2c81416848447b82bb8af15a34a5c 160000
--- a/libdap
+++ b/libdap
@@ -1 +1 @@
-Subproject commit 2cafdb986c3f27998060421e257deac0eb4e315d
+Subproject commit 85933c820be2c81416848447b82bb8af15a34a5c
diff --git a/libdap-chain b/libdap-chain
index b94cdd0d9ea3e10b5ade8a5f8073d34521a2783a..1d4a2b526f78ad87bb83d8c4f7004f0e73c76a59 160000
--- a/libdap-chain
+++ b/libdap-chain
@@ -1 +1 @@
-Subproject commit b94cdd0d9ea3e10b5ade8a5f8073d34521a2783a
+Subproject commit 1d4a2b526f78ad87bb83d8c4f7004f0e73c76a59
diff --git a/libdap-chain-net b/libdap-chain-net
index 16835fd4f6414416616433c01116ebbc7b922e6c..e2037726c32fda74dabfa000c7844a3a23ace5f2 160000
--- a/libdap-chain-net
+++ b/libdap-chain-net
@@ -1 +1 @@
-Subproject commit 16835fd4f6414416616433c01116ebbc7b922e6c
+Subproject commit e2037726c32fda74dabfa000c7844a3a23ace5f2
diff --git a/libdap-crypto b/libdap-crypto
index 6249887fdd5c9ed88eb26c1e10f853ea9f7001b6..1acfbdd8f5f3caef4c2e584ae2c20ab584b22b4e 160000
--- a/libdap-crypto
+++ b/libdap-crypto
@@ -1 +1 @@
-Subproject commit 6249887fdd5c9ed88eb26c1e10f853ea9f7001b6
+Subproject commit 1acfbdd8f5f3caef4c2e584ae2c20ab584b22b4e
diff --git a/libdap-server-core b/libdap-server-core
index d442b1fafaf6f8eddd339b3429c74b5325cef5f0..de9b4c77a021af36148515e3dbc56403ab45490f 160000
--- a/libdap-server-core
+++ b/libdap-server-core
@@ -1 +1 @@
-Subproject commit d442b1fafaf6f8eddd339b3429c74b5325cef5f0
+Subproject commit de9b4c77a021af36148515e3dbc56403ab45490f
diff --git a/libdap-stream-ch b/libdap-stream-ch
index 9bead7765fba0a633098bf2279547c4dbf62cc4f..f2eabb784a6286356359e69cb50a2957a57aa0b0 160000
--- a/libdap-stream-ch
+++ b/libdap-stream-ch
@@ -1 +1 @@
-Subproject commit 9bead7765fba0a633098bf2279547c4dbf62cc4f
+Subproject commit f2eabb784a6286356359e69cb50a2957a57aa0b0
diff --git a/sources/dap_defines.h b/sources/dap_defines.h
new file mode 100644
index 0000000000000000000000000000000000000000..c82859bfb0ded393029907080717b05ccdb4f84c
--- /dev/null
+++ b/sources/dap_defines.h
@@ -0,0 +1,18 @@
+#pragma once
+#define DAP_APP_NAME NODE_NETNAME "-node"
+#ifdef _WIN32
+  #define SYSTEM_PREFIX "opt/"DAP_APP_NAME
+#else
+  #define SYSTEM_PREFIX "/opt/"DAP_APP_NAME
+#endif
+
+#define LOCAL_PREFIX "~/."DAP_APP_NAME
+
+#define SYSTEM_CONFIGS_DIR SYSTEM_PREFIX"/etc"
+#define LOCAL_CONFIGS_DIR LOCAL_PREFIX"/etc"
+
+#define SYSTEM_CONFIG_GLOBAL_FILENAME SYSTEM_PREFIX"/etc/"DAP_APP_NAME".cfg"
+#define LOCAL_CONFIG_GLOBAL LOCAL_PREFIX"/etc/"DAP_APP_NAME".cfg"
+
+#define SYSTEM_PID_FILE_PATH SYSTEM_PREFIX"/run/"DAP_APP_NAME".pid"
+#define LOCAL_PID_FILE_PATH SYSTEM_PREFIX"/run/"DAP_APP_NAME".pid"
diff --git a/sources/main.c b/sources/main.c
index 8aa8c76cef312165164893df34f0831b29158a25..e516da04d0a57cea6f5c43025a3f51b70ba6b355 100644
--- a/sources/main.c
+++ b/sources/main.c
@@ -102,23 +102,7 @@
 #include "dap_process_manager.h"
 #include "dap_traffic_track.h"
 
-#define DAP_APP_NAME NODE_NETNAME "-node"
-#ifdef _WIN32
-  #define SYSTEM_PREFIX "opt/"DAP_APP_NAME
-#else
-  #define SYSTEM_PREFIX "/opt/"DAP_APP_NAME
-#endif
-
-#define LOCAL_PREFIX "~/."DAP_APP_NAME
-
-#define SYSTEM_CONFIGS_DIR SYSTEM_PREFIX"/etc"
-#define LOCAL_CONFIGS_DIR LOCAL_PREFIX"/etc"
-
-#define SYSTEM_CONFIG_GLOBAL_FILENAME SYSTEM_PREFIX"/etc/"DAP_APP_NAME".cfg"
-#define LOCAL_CONFIG_GLOBAL LOCAL_PREFIX"/etc/"DAP_APP_NAME".cfg"
-
-#define SYSTEM_PID_FILE_PATH SYSTEM_PREFIX"/run/"DAP_APP_NAME".pid"
-#define LOCAL_PID_FILE_PATH SYSTEM_PREFIX"/run/"DAP_APP_NAME".pid"
+#include "dap_defines.h"
 
 #define ENC_HTTP_URL "/enc_init"
 #define STREAM_CTL_URL "/stream_ctl"
diff --git a/sources/main_node_cli.c b/sources/main_node_cli.c
index 383c506bd6f9a7b3225c10c746930aa9b2eea98a..588aee1fda8717e8efef089b228d785c257aa811 100644
--- a/sources/main_node_cli.c
+++ b/sources/main_node_cli.c
@@ -34,6 +34,8 @@
 #include "main_node_cli_net.h"
 #include "main_node_cli_shell.h"
 
+#include "dap_defines.h"
+
 static connect_param *cparam;
 
 /**
@@ -179,6 +181,9 @@ int main(int argc, const char * argv[])
     //    set_default_locale();
     //    command_execution_string = shell_script_filename = (char *) NULL;
 
+    dap_common_init(DAP_APP_NAME " Console interface", NULL);
+    dap_log_level_set(L_CRITICAL );
+    dap_config_init( SYSTEM_CONFIG_GLOBAL_FILENAME );
     // connect to node
     cparam = node_cli_connect();
     if(!cparam)
diff --git a/sources/main_node_cli_net.c b/sources/main_node_cli_net.c
index 1f989825268e77f098099b531de5cab1efb47e34..88d930458504fbc1cd9ed59517397be2611c2dba 100644
--- a/sources/main_node_cli_net.c
+++ b/sources/main_node_cli_net.c
@@ -68,7 +68,7 @@
  */
 static int add_mem_data(uint8_t **memory, size_t *memory_len, char *add_mem, size_t add_size)
 {
-    *memory = (char*) realloc(*memory, *memory_len + add_size + 1);
+    *memory = (uint8_t*) realloc(*memory, *memory_len + add_size + 1);
     //out of memory!
     if(*memory == NULL) {
         //printf("not enough memory (realloc returned NULL)\n");
@@ -124,9 +124,9 @@ connect_param* node_cli_connect(void)
     CURL *curl_handle = curl_easy_init();
 
 #ifndef _WIN32
-    int ret = curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, UNIX_SOCKET_FILE); // unix socket mode
+    int ret = curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, dap_config_get_item_str( g_config, "conserver", "listen_unix_socket_path") ); // unix socket mode
 #else
-    int ret = curl_easy_setopt(curl_handle, CURLOPT_PORT, 9999); // unix socket mode
+    int ret = curl_easy_setopt(curl_handle, CURLOPT_PORT, dap_config_get_item_uint16 ( g_config, "conserver", "listen_tcp_port")); // unix socket mode
 #endif
 
     curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, 60L); // complete within 60 seconds