diff --git a/simulation/halsim_ws_server/CMakeLists.txt b/simulation/halsim_ws_server/CMakeLists.txt
index e5b55c8..370d2f8 100644
--- a/simulation/halsim_ws_server/CMakeLists.txt
+++ b/simulation/halsim_ws_server/CMakeLists.txt
@@ -13,4 +13,4 @@
 
 set_property(TARGET halsim_ws_server PROPERTY FOLDER "libraries")
 
-install(TARGETS halsim_ws_server EXPORT halsim_ws_server DESTINATION "${main_lib_dest}")
+install(TARGETS halsim_ws_server EXPORT halsim_ws_server)
diff --git a/simulation/halsim_ws_server/build.gradle b/simulation/halsim_ws_server/build.gradle
index fbdee04..8db1951 100644
--- a/simulation/halsim_ws_server/build.gradle
+++ b/simulation/halsim_ws_server/build.gradle
@@ -1,3 +1,6 @@
+if (project.hasProperty('onlylinuxathena')) {
+    return;
+}
 
 description = "WebSocket Server Extension"
 
@@ -20,25 +23,20 @@
 
 model {
     testSuites {
-        def comps = $.components
-        if (!project.hasProperty('onlylinuxathena')) {
-            "${pluginName}Test"(GoogleTestTestSuiteSpec) {
-                for(NativeComponentSpec c : comps) {
-                    if (c.name == pluginName) {
-                        testing c
-                        break
-                    }
+        "${pluginName}Test"(GoogleTestTestSuiteSpec) {
+            for(NativeComponentSpec c : $.components) {
+                if (c.name == pluginName) {
+                    testing c
+                    break
                 }
-                sources {
-                    cpp {
-                        source {
-                            srcDirs 'src/test/native/cpp'
-                            include '**/*.cpp'
-                        }
-                        exportedHeaders {
-                            srcDirs 'src/test/native/include', 'src/main/native/cpp'
-                        }
-                    }
+            }
+            sources.cpp {
+                source {
+                    srcDirs 'src/test/native/cpp'
+                    include '**/*.cpp'
+                }
+                exportedHeaders {
+                    srcDirs 'src/test/native/include', 'src/main/native/cpp'
                 }
             }
         }
diff --git a/simulation/halsim_ws_server/src/main/native/cpp/HALSimHttpConnection.cpp b/simulation/halsim_ws_server/src/main/native/cpp/HALSimHttpConnection.cpp
index 77dec08..ee188b3 100644
--- a/simulation/halsim_ws_server/src/main/native/cpp/HALSimHttpConnection.cpp
+++ b/simulation/halsim_ws_server/src/main/native/cpp/HALSimHttpConnection.cpp
@@ -9,10 +9,10 @@
 #include <string_view>
 
 #include <fmt/format.h>
+#include <wpi/MemoryBuffer.h>
 #include <wpi/SmallVector.h>
 #include <wpi/StringExtras.h>
 #include <wpi/fs.h>
-#include <wpi/raw_istream.h>
 #include <wpinet/MimeTypes.h>
 #include <wpinet/UrlParser.h>
 #include <wpinet/raw_uv_ostream.h>
@@ -76,6 +76,16 @@
 }
 
 void HALSimHttpConnection::OnSimValueChanged(const wpi::json& msg) {
+  // Skip sending if this message is not in the allowed filter list
+  try {
+    auto& type = msg.at("type").get_ref<const std::string&>();
+    if (!m_server->CanSendMessage(type)) {
+      return;
+    }
+  } catch (wpi::json::exception& e) {
+    fmt::print(stderr, "Error with message: {}\n", e.what());
+  }
+
   // render json to buffers
   wpi::SmallVector<uv::Buffer, 4> sendBufs;
   wpi::raw_uv_ostream os{sendBufs, [this]() -> uv::Buffer {
@@ -115,8 +125,9 @@
   }
 
   // open file
-  wpi::raw_fd_istream is{filename, ec, true};
-  if (ec) {
+  std::unique_ptr<wpi::MemoryBuffer> fileBuffer =
+      wpi::MemoryBuffer::GetFile(filename, ec);
+  if (fileBuffer == nullptr || ec) {
     MySendError(404, "error opening file");
     return;
   }
@@ -132,16 +143,7 @@
   wpi::SmallVector<uv::Buffer, 4> bodyData;
   wpi::raw_uv_ostream bodyOs{bodyData, 4096};
 
-  std::string fileBuf;
-  size_t oldSize = 0;
-
-  while (fileBuf.size() < size) {
-    oldSize = fileBuf.size();
-    fileBuf.resize(oldSize + 1);
-    is.read(&(*fileBuf.begin()) + oldSize, 1);
-  }
-
-  bodyOs << fileBuf;
+  bodyOs << fileBuffer->GetBuffer();
 
   SendData(bodyOs.bufs(), false);
   if (!m_keepAlive) {
diff --git a/simulation/halsim_ws_server/src/main/native/cpp/HALSimWeb.cpp b/simulation/halsim_ws_server/src/main/native/cpp/HALSimWeb.cpp
index 8a6df97..790d0b5 100644
--- a/simulation/halsim_ws_server/src/main/native/cpp/HALSimWeb.cpp
+++ b/simulation/halsim_ws_server/src/main/native/cpp/HALSimWeb.cpp
@@ -77,6 +77,22 @@
     m_port = 3300;
   }
 
+  const char* msgFilters = std::getenv("HALSIMWS_FILTERS");
+  if (msgFilters != nullptr) {
+    m_useMsgFiltering = true;
+
+    std::string_view filters(msgFilters);
+    filters = wpi::trim(filters);
+    wpi::SmallVector<std::string_view, 16> filtersSplit;
+
+    wpi::split(filters, filtersSplit, ',', -1, false);
+    for (auto val : filtersSplit) {
+      m_msgFilters[wpi::trim(val)] = true;
+    }
+  } else {
+    m_useMsgFiltering = false;
+  }
+
   return true;
 }
 
@@ -100,6 +116,16 @@
   m_server->Listen();
   fmt::print("Listening at http://localhost:{}\n", m_port);
   fmt::print("WebSocket URI: {}\n", m_uri);
+
+  // Print any filters we are using
+  if (m_useMsgFiltering) {
+    fmt::print("WS Message Filters:");
+    for (auto filter : m_msgFilters.keys()) {
+      fmt::print("* \"{}\"\n", filter);
+    }
+  } else {
+    fmt::print("No WS Message Filters specified");
+  }
 }
 
 bool HALSimWeb::RegisterWebsocket(
@@ -157,3 +183,10 @@
     fmt::print(stderr, "Error with incoming message: {}\n", e.what());
   }
 }
+
+bool HALSimWeb::CanSendMessage(std::string_view type) {
+  if (!m_useMsgFiltering) {
+    return true;
+  }
+  return m_msgFilters.count(type) > 0;
+}
diff --git a/simulation/halsim_ws_server/src/main/native/include/HALSimHttpConnection.h b/simulation/halsim_ws_server/src/main/native/include/HALSimHttpConnection.h
index 91cfb61..7073256 100644
--- a/simulation/halsim_ws_server/src/main/native/include/HALSimHttpConnection.h
+++ b/simulation/halsim_ws_server/src/main/native/include/HALSimHttpConnection.h
@@ -10,6 +10,7 @@
 #include <utility>
 
 #include <HALSimBaseWebSocketConnection.h>
+#include <wpi/json_fwd.h>
 #include <wpi/mutex.h>
 #include <wpinet/HttpWebSocketServerConnection.h>
 #include <wpinet/uv/AsyncFunction.h>
@@ -17,10 +18,6 @@
 
 #include "HALSimWeb.h"
 
-namespace wpi {
-class json;
-}  // namespace wpi
-
 namespace wpilibws {
 
 class HALSimHttpConnection
diff --git a/simulation/halsim_ws_server/src/main/native/include/HALSimWeb.h b/simulation/halsim_ws_server/src/main/native/include/HALSimWeb.h
index de5d1f2..03f2cb6 100644
--- a/simulation/halsim_ws_server/src/main/native/include/HALSimWeb.h
+++ b/simulation/halsim_ws_server/src/main/native/include/HALSimWeb.h
@@ -7,23 +7,22 @@
 #include <functional>
 #include <memory>
 #include <string>
+#include <string_view>
 
 #include <WSBaseProvider.h>
 #include <WSProviderContainer.h>
 #include <WSProvider_SimDevice.h>
+#include <wpi/StringMap.h>
+#include <wpi/json_fwd.h>
 #include <wpinet/uv/Async.h>
 #include <wpinet/uv/Loop.h>
 #include <wpinet/uv/Tcp.h>
 
-namespace wpi {
-class json;
-}  // namespace wpi
-
 namespace wpilibws {
 
 class HALSimWeb : public std::enable_shared_from_this<HALSimWeb> {
  public:
-  using LoopFunc = std::function<void(void)>;
+  using LoopFunc = std::function<void()>;
   using UvExecFunc = wpi::uv::Async<LoopFunc>;
 
   HALSimWeb(wpi::uv::Loop& loop, ProviderContainer& providers,
@@ -41,6 +40,8 @@
   // network -> sim
   void OnNetValueChanged(const wpi::json& msg);
 
+  bool CanSendMessage(std::string_view type);
+
   const std::string& GetWebrootSys() const { return m_webroot_sys; }
   const std::string& GetWebrootUser() const { return m_webroot_user; }
   const std::string& GetServerUri() const { return m_uri; }
@@ -69,6 +70,9 @@
 
   std::string m_uri;
   int m_port;
+
+  bool m_useMsgFiltering;
+  wpi::StringMap<bool> m_msgFilters;
 };
 
 }  // namespace wpilibws
diff --git a/simulation/halsim_ws_server/src/test/native/cpp/main.cpp b/simulation/halsim_ws_server/src/test/native/cpp/main.cpp
index a9f739a..61e3a88 100644
--- a/simulation/halsim_ws_server/src/test/native/cpp/main.cpp
+++ b/simulation/halsim_ws_server/src/test/native/cpp/main.cpp
@@ -5,6 +5,7 @@
 #include <thread>
 
 #include <fmt/format.h>
+#include <gtest/gtest.h>
 #include <hal/DriverStation.h>
 #include <hal/HALBase.h>
 #include <hal/Main.h>
@@ -13,7 +14,6 @@
 
 #include "HALSimWSServer.h"
 #include "WebServerClientTest.h"
-#include "gtest/gtest.h"
 
 namespace uv = wpi::uv;
 
diff --git a/simulation/halsim_ws_server/src/test/native/include/WebServerClientTest.h b/simulation/halsim_ws_server/src/test/native/include/WebServerClientTest.h
index cda61dd..6f2995f 100644
--- a/simulation/halsim_ws_server/src/test/native/include/WebServerClientTest.h
+++ b/simulation/halsim_ws_server/src/test/native/include/WebServerClientTest.h
@@ -4,6 +4,7 @@
 
 #pragma once
 
+#include <functional>
 #include <memory>
 #include <string>
 
@@ -21,7 +22,7 @@
 class WebServerClientTest {
  public:
   using BufferPool = wpi::uv::SimpleBufferPool<4>;
-  using LoopFunc = std::function<void(void)>;
+  using LoopFunc = std::function<void()>;
   using UvExecFunc = wpi::uv::AsyncFunction<void(LoopFunc)>;
 
   explicit WebServerClientTest(wpi::uv::Loop& loop) : m_loop(loop) {}
