diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..9696e2ecafd15e4e5c1dd664880bb536f22f46fc
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+build/
+_skbuild/
+dist/
+CellFrame.egg-info/
+*.text
+
diff --git a/.gitmodules b/.gitmodules
index d3c26ccb903d2d8ccd29aca2ebd8d92380ec38bb..42c99228152869b99bc67f9f17620324b3a6d622 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -76,3 +76,9 @@
 [submodule "libdap-server-http-db"]
 	path = libdap-server-http-db
 	url = http://gitlab.demlabs.net/cellframe/libdap-server-http-db.git
+[submodule "libdap-chain-net-python"]
+	path = libdap-chain-net-python
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-net-python.git
+[submodule "libdap-client-python"]
+	path = libdap-client-python
+	url = https://gitlab.demlabs.net/cellframe/libdap-client-python.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ef90638032a28dffab49ad58466a4148a7e56d06..cc2f3eff99a060d0244d9f924896722eddfbd489 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -61,10 +61,18 @@ add_subdirectory(libdap-crypto-python)
 target_compile_options(dap_crypto_python_module PRIVATE "-fpic" )
 add_subdirectory(libdap-server-http-db)
 target_compile_options(dap_server_http_db PRIVATE "-fpic")
+add_subdirectory(libdap-chain-net-python)
+target_compile_options(dap_chain_net_python_module PRIVATE "-fpic")
+target_compile_options(dap_enc_server PRIVATE "-fpic")
+target_compile_options(dap_http_server PRIVATE "-fpic")
+target_compile_options(dap_session PRIVATE "-fpic")
 
 add_subdirectory(libdap-chain-python)
 target_compile_options(dap_chain_python_module PRIVATE "-fpic")
 
+add_subdirectory(libdap-client-python)
+target_compile_options(dap_client_python_module PRIVATE "-fpic")
+
 file(GLOB PYTHON_CELLFRAME_SRCS src/*.c)
 file(GLOB PYTHON_CELLFRAME_HEADERS include/*.h)
 
@@ -118,7 +126,8 @@ endif()
 target_link_libraries(${PROJECT_NAME} dap_python_module 
                       dap_crypto_python_module 
                       DapServerCore
-                     dap_chain_python_module
+                      dap_chain_python_module
+                      dap_chain_net_python_module
                      )
 #target_link_libraries(${PROJECT_NAME} dap_core dap_crypto)
 
diff --git a/include/python-cellframe.h b/include/python-cellframe.h
index cc02a5fb9e46238eabfee7714e6d8f2462a7b93f..69e90ba4a667e85c2c544a6867e64bdc8b8cb58d 100644
--- a/include/python-cellframe.h
+++ b/include/python-cellframe.h
@@ -18,6 +18,14 @@
 #include "wrapping_dap_chain_datum_tx.h"
 #include "wrapping_dap_chain_ledger.h"
 // ============
+// === Chain net ===
+#include "libdap_chain_net_python.h"
+#include "wrapping_dap_chain_net_node.h"
+#include "wrapping_dap_chain_net_node_cli.h"
+#include "wrapping_dap_chain_net_node_client.h"
+#include "wrapping_dap_chain_net_node_info.h"
+#include "wrapping_dap_chain_net_state.h"
+// ============
 #include "dap_common.h"
 
 
diff --git a/libdap-chain-net-python b/libdap-chain-net-python
new file mode 160000
index 0000000000000000000000000000000000000000..bfaba654af5353bf3cb1986f351ddce5106d7a84
--- /dev/null
+++ b/libdap-chain-net-python
@@ -0,0 +1 @@
+Subproject commit bfaba654af5353bf3cb1986f351ddce5106d7a84
diff --git a/libdap-client-python b/libdap-client-python
new file mode 160000
index 0000000000000000000000000000000000000000..b1918f7c8378d1e03e2915565c3764c4a803b2b6
--- /dev/null
+++ b/libdap-client-python
@@ -0,0 +1 @@
+Subproject commit b1918f7c8378d1e03e2915565c3764c4a803b2b6
diff --git a/src/python-cellframe.c b/src/python-cellframe.c
index 5e525c79b930e15a0aaa191c6d470b4cb32c87c4..432eab7d2baf8a1c20cbd50687d3997933227811 100644
--- a/src/python-cellframe.c
+++ b/src/python-cellframe.c
@@ -143,7 +143,15 @@ PyMODINIT_FUNC PyInit_CellFrame(void){
             PyType_Ready(&DapChainTxType_DapChainTxCondTypeObject) < 0 ||
             PyType_Ready(&DapChainDatumTx_DapChainDatumTxObjectType) < 0 ||
             PyType_Ready(&DapChainTxOutCond_DapChainTxOutCondObjectType) < 0 ||
-            PyType_Ready(&DapChainLedger_DapChainLedgerType) < 0
+            PyType_Ready(&DapChainLedger_DapChainLedgerType) < 0 ||
+            // =============
+            // === Chain net ===
+            PyType_Ready(&DapChainNetObject_DapChainNetObjectType) < 0 ||
+            PyType_Ready(&DapChainNodeCliObject_DapChainNodeCliObjectType) < 0 ||
+            PyType_Ready(&DapChainNodeClientObject_DapChainNodeClientObjectType) < 0 ||
+            PyType_Ready(&DapChainNodeInfoObject_DapChainNodeInfoObjectType) < 0 ||
+            PyType_Ready(&DapChainNetNodeObject_DapChainNetNodeObjectType) < 0 ||
+            PyType_Ready(&DapChainNetStateObject_DapChainNetStateObjectType) < 0
             // =============
             )
                return NULL;
@@ -199,6 +207,14 @@ PyMODINIT_FUNC PyInit_CellFrame(void){
     PyModule_AddObject(module, "ChainTxOutCond", (PyObject*)&DapChainTxOutCond_DapChainTxOutCondObjectType);
     PyModule_AddObject(module, "ChainLedger", (PyObject*)&DapChainLedger_DapChainLedgerType);
     // =============
+    // === Chain net ===
+    PyModule_AddObject(module, "ChainNet", (PyObject*)&DapChainNetObject_DapChainNetObjectType);
+    PyModule_AddObject(module, "ChainNodeCLI", (PyObject*)&DapChainNodeCliObject_DapChainNodeCliObjectType);
+    PyModule_AddObject(module, "ChainNodeClient", (PyObject*)&DapChainNodeClientObject_DapChainNodeClientObjectType);
+    PyModule_AddObject(module, "ChainNodeInfo", (PyObject*)&DapChainNodeInfoObject_DapChainNodeInfoObjectType);
+    PyModule_AddObject(module, "ChainNetNode", (PyObject*)&DapChainNetNodeObject_DapChainNetNodeObjectType);
+    PyModule_AddObject(module, "ChainNetState", (PyObject*)&DapChainNetStateObject_DapChainNetStateObjectType);
+    // =============
 
 
     return module;