            (pr-str
              {:ua-product (clojure.browser.repl/get-ua-product)
               :value (str ~e)
-              :stacktrace (.-stack ~e)})))))
-  (-evaluate [this _ _ js]
-    (binding [browser-state (:browser-state this)
-              ordering (:ordering this)
-              es (:es this)
-              server/state (:server-state this)]
-      (browser-eval js)))
-  (-load [this provides url]
-    (load-javascript this provides url))
-  (-tear-down [this]
-    (binding [server/state (:server-state this)]
-      (server/stop))
-    (.shutdown (:es this))))
+              :stacktrace (.-stack ~e)}))))))
 
 (defn repl-env*
   [{:keys [output-dir] :as opts}]
   (merge (BrowserEnv.)
-    {:port 9000
+    {:host "localhost"
+     :port 9000
      :working-dir (->> [".repl" (util/clojurescript-version)]
                        (remove empty?) (string/join "-"))
      :serve-static true

    string/split-lines
    (drop-while #(.startsWith % "Error"))
    (take-while #(not (.startsWith % "    at eval")))
    (map #(chrome-st-el->frame % opts))
    (remove nil?)
    vec))

(comment
  (parse-stacktrace nil
    "Error: 1 is not ISeqable
    at Object.cljs$core$seq [as seq] (http://localhost:9000/out/cljs/core.js:4258:8)
    at Object.cljs$core$first [as first] (http://localhost:9000/out/cljs/core.js:4288:19)

    (drop-while #(.startsWith % "Error"))
    (take-while #(not (.startsWith % "eval code")))
    (remove string/blank?)
    (map #(safari-st-el->frame repl-env % opts))
    (remove nil?)
    vec))

