diff --git a/require-ess/src/require.c b/require-ess/src/require.c
index 1478780489b69c55362bf6e6421fbd4f82205723..b91e88400505596eec5c42db918c2236bf9f1c0f 100644
--- a/require-ess/src/require.c
+++ b/require-ess/src/require.c
@@ -352,6 +352,8 @@ char *realpathSeparator(const char *location) {
   return buffer;
 }
 
+int isModuleLoaded(const char *libname);
+
 static int setupDbPath(const char *module, const char *dbdir) {
   char *absdir =
       realpathSeparator(dbdir); /* so we can change directory later safely */
@@ -373,6 +375,9 @@ static int setupDbPath(const char *module, const char *dbdir) {
 
   putenvprintf("%s_DB=%s", module, absdir);
   putenvprintf("TEMPLATES=%s", absdir);
+  if (isModuleLoaded("stream")) {
+    pathAdd("STREAM_PROTOCOL_PATH", absdir);
+  }
   pathAdd("EPICS_DB_INCLUDE_PATH", absdir);
   free(absdir);
   return 0;
@@ -727,6 +732,16 @@ const char *getLibLocation(const char *libname) {
   return NULL;
 }
 
+int isModuleLoaded(const char *libname) {
+  moduleitem *m;
+
+  for (m = loadedModules; m; m = m->next) {
+    if (strcmp(m->content, libname) == 0)
+      return TRUE;
+  }
+  return FALSE;
+}
+
 int libversionShow(const char *outfile) {
   moduleitem *m;
   size_t lm, lv;