diff --git a/CMakeLists.txt b/CMakeLists.txt
index 28b0163..1a4aeb6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -136,19 +136,20 @@
 link_directories(${SYSREPO_LIBRARY_DIRS})
 target_include_directories(sysreposubscription SYSTEM PRIVATE ${SYSREPO_INCLUDE_DIRS})
 
-add_executable(netconf-cli
-    src/main.cpp
+add_executable(sysrepo-cli
+    src/cli.cpp
     )
-target_include_directories(netconf-cli PRIVATE ${REPLXX_PATH})
-target_link_libraries(netconf-cli netconfaccess sysrepoaccess yangschema docopt parser ${REPLXX_LIBRARY})
+target_compile_definitions(sysrepo-cli PRIVATE SYSREPO_CLI)
+target_include_directories(sysrepo-cli PRIVATE ${REPLXX_PATH})
+target_link_libraries(sysrepo-cli sysrepoaccess yangschema docopt parser ${REPLXX_LIBRARY})
 if(CMAKE_CXX_FLAGS MATCHES "-stdlib=libc\\+\\+")
-    target_link_libraries(netconf-cli c++experimental)
+    target_link_libraries(sysrepo-cli c++experimental)
 else()
-    target_link_libraries(netconf-cli stdc++fs)
+    target_link_libraries(sysrepo-cli stdc++fs)
 endif()
 
-add_dependencies(netconf-cli target-NETCONF_CLI_VERSION)
-target_include_directories(netconf-cli PRIVATE ${PROJECT_BINARY_DIR})
+add_dependencies(sysrepo-cli target-NETCONF_CLI_VERSION)
+target_include_directories(sysrepo-cli PRIVATE ${PROJECT_BINARY_DIR})
 
 include(CTest)
 if(BUILD_TESTING)
@@ -347,5 +348,5 @@
 endif()
 
 install(TARGETS
-    netconf-cli
+    sysrepo-cli
     RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/)
diff --git a/src/main.cpp b/src/cli.cpp
similarity index 84%
rename from src/main.cpp
rename to src/cli.cpp
index fd064ba..7384f33 100644
--- a/src/main.cpp
+++ b/src/cli.cpp
@@ -12,18 +12,26 @@
 #include <sstream>
 #include "NETCONF_CLI_VERSION.h"
 #include "interpreter.hpp"
+#if defined(SYSREPO_CLI)
 #include "sysrepo_access.hpp"
+#define PROGRAM_NAME "sysrepo-cli"
+#define PROGRAM_DESCRIPTION R"(CLI interface to sysrepo \
+\
+Usage: \
+  sysrepo-cli \
+  sysrepo-cli (-h | --help) \
+  sysrepo-cli --version \
+)"
+#else
+#error "Unknown CLI backend"
+#endif
 
-const auto HISTORY_FILE_NAME = "netconf-cli_history";
 
-static const char usage[] =
-    R"(CLI interface to remote NETCONF hosts
 
-Usage:
-  netconf-cli
-  netconf-cli (-h | --help)
-  netconf-cli --version
-)";
+
+const auto HISTORY_FILE_NAME = PROGRAM_NAME "_history";
+
+static const char usage[] = PROGRAM_DESCRIPTION;
 
 
 int main(int argc, char* argv[])
@@ -31,11 +39,16 @@
     auto args = docopt::docopt(usage,
                                {argv + 1, argv + argc},
                                true,
-                               "netconf-cli " NETCONF_CLI_VERSION,
+                               PROGRAM_NAME " " NETCONF_CLI_VERSION,
                                true);
-    std::cout << "Welcome to netconf-cli" << std::endl;
+    std::cout << "Welcome to " PROGRAM_NAME << std::endl;
 
-    SysrepoAccess datastore("netconf-cli");
+#if defined(SYSREPO_CLI)
+    SysrepoAccess datastore(PROGRAM_NAME);
+#else
+#error "Unknown CLI backend"
+#endif
+
     auto dataQuery = std::make_shared<DataQuery>(datastore);
     Parser parser(datastore.schema(), dataQuery);
 
