diff --git a/package.json b/package.json
index 60a29119b9be0129d463788274f78100d31d1b80..527b304c585c8b3f71ec63cc1e779fb58317ca10 100644
--- a/package.json
+++ b/package.json
@@ -80,7 +80,7 @@
     "lodash": "^4.17.5",
     "node-sass": "^4.7.2",
     "prettier": "^1.7.0",
-    "puppeteer": "^1.3.0",
+    "puppeteer": "1.3.0",
     "rimraf": "^2.6.2",
     "sass-loader": "^6.0.7",
     "selfsigned": "^1.10.2",
diff --git a/scripts/run-bot.js b/scripts/run-bot.js
index d66609ce243168cc50662f35eeb1fea822a53ae5..4aec8fd5b066210088cbac1428767b0e8e2d60d0 100644
--- a/scripts/run-bot.js
+++ b/scripts/run-bot.js
@@ -19,13 +19,19 @@ const querystring = require("query-string");
   const navigate = async () => {
     try {
       await page.goto(url);
+      await page.evaluate(() => {
+        console.log(navigator.userAgent);
+      });
       console.log("BPDEBUG navigated");
+      // Interact with the page so that audio can play.
+      page.mouse.click(100, 100);
+      await page.evaluate(() => {
+        window.interacted();
+      });
     } catch (e) {
+      console.log("Navigation error", e);
       setTimeout(navigate, 1000);
     }
   };
   navigate();
-
-  // Interact with the page so that audio can play.
-  page.mouse.click(100, 100);
 })();
diff --git a/scripts/run-bot.sh b/scripts/run-bot.sh
index 3c9751544d01268276134ed16cf8a25c50563c93..48fcb470bd6748461d3e4bcb4ec430b7dda90c90 100755
--- a/scripts/run-bot.sh
+++ b/scripts/run-bot.sh
@@ -4,8 +4,8 @@ script_directory=$(dirname "$0")
 script_directory=$(realpath "$script_directory")
 cd $script_directory/..
 
-# yarn build
-# yarn serve --ssl --port 8080
-yarn
-yarn start &
+yarn build
+yarn serve --ssl --port 8080 public
+# yarn
+# yarn start &
 node scripts/run-bot.js
diff --git a/src/hub.js b/src/hub.js
index a1244ec392153906f5f760f45d1b8f6aa97e1deb..46e85c04cce2060eecd602f2d511b5cbe072efe0 100644
--- a/src/hub.js
+++ b/src/hub.js
@@ -298,6 +298,13 @@ const onReady = async () => {
         playerRig.setAttribute("avatar-replay", "");
         const audio = document.getElementById("bot-recording");
         mediaStream.addTrack(audio.captureStream().getAudioTracks()[0]);
+        // wait for runner script to confirm interaction so that we can play audio.
+        const interacted = new Promise(resolve => {
+          window.interacted = resolve;
+        });
+        console.log("BPDEBUG waiting for interaction");
+        await interacted;
+        console.log("BPDEBUG playing audio");
         audio.play().catch(e => console.log(e.toString()));
         NAF.connection.adapter.setLocalMediaStream(mediaStream);
       }
diff --git a/yarn.lock b/yarn.lock
index 8c3139410925dc40c6bc785b3a2eb74e9f02e3d8..da047023a9b19545b6a90502092b7dfc14c0eff3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6756,7 +6756,7 @@ punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
 
-puppeteer@^1.3.0:
+puppeteer@1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.3.0.tgz#f571c5f27153ca164a8188e6328ce2e4946878f3"
   dependencies: