class_docstr: Base class for any frontend that gets exposed by LightningFlows.
  
  The flow attribute will be set by the app while bootstrapping.
docstr: Start the process that serves the UI at the given hostname and port number.
  
  Arguments:
      host: The hostname where the UI will be served. This gets determined by the dispatcher (e.g., cloud),
          but defaults to localhost when running locally.
      port: The port number where the UI will be served. This gets determined by the dispatcher, which by default
          chooses any free port when running locally.
      root_path: root_path for the server if app in exposed via a proxy at `/<root_path>`
  
  
  Example:
  
      An custom implementation could look like this:
  
      .. code-block:: python
  
          def start_server(self, host, port, root_path=""):
              self._process = subprocess.Popen(["flask", "run" "--host", host, "--port", str(port)])
docstr_tok: ["Start","the","process","that","serves","the","UI","at","the","given","hostname","and","port","number",".","Arguments",":","host",":","The","hostname","where","the","UI","will","be","served",".","This","gets","determined","by","the","dispatcher","(","e.g.",",","cloud",")",",","but","defaults","to","localhost","when","running","locally",".","port",":","The","port","number","where","the","UI","will","be","served",".","This","gets","determined","by","the","dispatcher",",","which","by","default","chooses","any","free","port","when","running","locally",".","root_path",":","root_path","for","the","server","if","app","in","exposed","via","a","proxy","at","`","\/","<","root_path",">","`","Example",":","An","custom","implementation","could","look","like","this",":","..","code-block",":",":","python","def","start_server","(","self",",","host",",","port",",","root_path=","''","''",")",":","self._process","=","subprocess.Popen","(","[","``","flask","''",",","``","run","''","``","--","host","''",",","host",",","``","--","port","''",",","str","(","port",")","]",")"]
code: def start_server(
      self, host: str, port: int, root_path: str = ""
  ) -> None:
      """Start the process that serves the UI at the given hostname and port number.
  
      Arguments:
          host: The hostname where the UI will be served. This gets determined by the dispatcher (e.g., cloud),
              but defaults to localhost when running locally.
          port: The port number where the UI will be served. This gets determined by the dispatcher, which by default
              chooses any free port when running locally.
          root_path: root_path for the server if app in exposed via a proxy at `/<root_path>`
  
  
      Example:
  
          An custom implementation could look like this:
  
          .. code-block:: python
  
              def start_server(self, host, port, root_path=""):
                  self._process = subprocess.Popen(["flask", "run" "--host", host, "--port", str(port)])
  
      """
  
imports: from abc import ABC, abstractmethod
  from typing import TYPE_CHECKING, Optional
label_desc: Use image node_id 2 for calling the Frontend obj's underlying member method code with example usage: obj.start_server(host, port, root_path) without return types