diff --git a/configure.ac b/configure.ac
index bc45102e071b604c6eb61ce9792d7b2bffbabb91..53bb95210290c42eaf1d0cb700098a466c8a0b48 100644
--- a/configure.ac
+++ b/configure.ac
@@ -209,8 +209,6 @@ AS_IF([test "x$enable_shared" == "xyes"], [
 ])
 AC_MSG_RESULT([$RING_SHARED])
 
-CPPFLAGS="${CPPFLAGS} -DASIO_STANDALONE"
-
 dnl
 dnl  Check for the contrib directory
 dnl
diff --git a/src/manager.cpp b/src/manager.cpp
index dc569b02c21536c9434aeab751cfb4757c922572..169b7d1ba268314e789a649fabc3f20e3f8b49ab 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -83,9 +83,6 @@ using random_device = dht::crypto::random_device;
 
 #include <opendht/thread_pool.h>
 
-#include <asio/io_context.hpp>
-#include <asio/executor_work_guard.hpp>
-
 #ifndef WIN32
 #include <sys/time.h>
 #include <sys/resource.h>
@@ -334,9 +331,6 @@ struct Manager::ManagerPimpl
 
     Manager& base_; // pimpl back-pointer
 
-    std::shared_ptr<asio::io_context> ioContext_;
-    std::thread ioContextRunner_;
-
     /** Main scheduler */
     ScheduledExecutor scheduler_;
 
@@ -414,7 +408,6 @@ struct Manager::ManagerPimpl
 
 Manager::ManagerPimpl::ManagerPimpl(Manager& base)
     : base_(base)
-    , ioContext_(std::make_shared<asio::io_context>())
     , toneCtrl_(base.preferences)
     , currentCallMutex_()
     , dtmfKey_()
@@ -438,15 +431,6 @@ Manager::ManagerPimpl::ManagerPimpl(Manager& base)
     rand_.seed(seed);
 
     jami::libav_utils::ring_avcodec_init();
-
-    ioContextRunner_ = std::thread([context = ioContext_](){
-        try {
-            auto work = asio::make_work_guard(*context);
-            context->run();
-        } catch (const std::exception& ex) {
-            JAMI_ERR("Unexpected io_context thread exception: %s", ex.what());
-        }
-    });
 }
 
 bool
@@ -852,13 +836,6 @@ Manager::finish() noexcept
         dht::ThreadPool::computation().join();
 
         pj_shutdown();
-
-        if (!pimpl_->ioContext_->stopped()){
-            pimpl_->ioContext_->reset(); // allow to finish
-            pimpl_->ioContext_->stop();  // make thread stop
-        }
-        if (pimpl_->ioContextRunner_.joinable())
-            pimpl_->ioContextRunner_.join();
     } catch (const VoipLinkException &err) {
         JAMI_ERR("%s", err.what());
     }
@@ -1727,12 +1704,6 @@ Manager::scheduler()
     return pimpl_->scheduler_;
 }
 
-std::shared_ptr<asio::io_context>
-Manager::ioContext() const
-{
-    return pimpl_->ioContext_;
-}
-
 void
 Manager::addTask(std::function<bool()>&& task)
 {
diff --git a/src/manager.h b/src/manager.h
index 34af7b30585ec4146cc47925563e87c6f6489121..9d0a9b3d44d448ae5753c00bcce0abb39a6cc38a 100644
--- a/src/manager.h
+++ b/src/manager.h
@@ -44,10 +44,6 @@
 #include <functional>
 #include <algorithm>
 
-namespace asio {
-    class io_context;
-}
-
 namespace jami {
 
 namespace video {
@@ -862,8 +858,6 @@ class Manager {
 
         ScheduledExecutor& scheduler();
 
-        std::shared_ptr<asio::io_context> ioContext() const;
-
         void addTask(std::function<bool()>&& task);
         std::shared_ptr<Task> scheduleTask(std::function<void()>&& task, std::chrono::steady_clock::time_point when);