.. _observability_frontend: LMCache Frontend ================ .. warning:: This page documents the behavior of LMCache's in-process mode (deprecated). Please consider using :doc:`LMCache MP mode ` for better feature support and performance. For the MP mode equivalent of this page, see :doc:`/mp/frontend_dashboard`. LMCache Frontend is a monitoring and proxy service for LMCache clusters, providing a web interface for cluster management and HTTP request proxying to cluster nodes. .. image:: https://raw.githubusercontent.com/LMCache/lmcache_frontend/main/res/img.png :alt: LMCache Frontend Dashboard :align: center Features -------- - **Cluster Monitoring**: Web-based dashboard for visualizing cluster status - **Request Proxying**: HTTP proxy service to forward requests to any cluster node - **Flexible Configuration**: Support for both IP:port and Unix domain sockets - **Plugin System**: Integration with LMCache plugin framework Installation ------------ Install from PyPI: .. code-block:: bash pip install lmcache_frontend Or install from source: .. code-block:: bash git clone https://github.com/LMCache/lmcache_frontend.git cd lmcache_frontend pip install -e . Quick Start ----------- Starting the Service ^^^^^^^^^^^^^^^^^^^^ .. code-block:: bash lmcache-frontend --port 8080 --host 0.0.0.0 Command Line Options ^^^^^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 :widths: 20 80 * - Option - Description * - ``--port`` - Service port (default: 8000) * - ``--host`` - Bind host address (default: 0.0.0.0) * - ``--config`` - Path to configuration file * - ``--nodes`` - Direct node configuration (JSON string) After starting the service, access the dashboard at ``http://localhost:8080/``. Configuration ------------- Node Configuration ^^^^^^^^^^^^^^^^^^ Create a ``config.json`` file with node definitions: .. code-block:: json [ { "name": "node1", "host": "127.0.0.1", "port": "/tmp/lmcache_internal_api_server/socket/9090" }, { "name": "node2", "host": "127.0.0.1", "port": "/tmp/lmcache_internal_api_server/socket/9091" } ] The ``port`` field can be configured as either an integer port number or a string path for Unix domain sockets. LMCache Plugin Integration ^^^^^^^^^^^^^^^^^^^^^^^^^^ To start the frontend via the LMCache plugin framework, add the following to your ``lmcache.yaml``: .. code-block:: yaml extra_config: plugin.frontend.port: 8080 internal_api_server_enabled: True internal_api_server_port_start: 9090 plugin_locations: ["/scripts/scheduler_lmc_frontend_plugin.py"] internal_api_server_socket_path_prefix: "/tmp/lmcache_internal_api_server/socket" Proxying Requests ----------------- Proxy requests using the format: .. code-block:: text /proxy/{target_host}/{target_port_or_socket}/{path} Examples: .. code-block:: bash # Proxy to a Unix socket curl "http://localhost:8080/proxy/localhost/%252Ftmp%252Flmcache_internal_api_server%252Fsocket_8081/metrics" # Proxy a POST request curl -X POST http://localhost:9090/proxy/localhost/8081/run_script \ -F "script=@/root/scratch.py" Contributing ------------ LMCache Frontend is an open-source project and we welcome contributions from the community! Whether you want to fix bugs, add new features, improve documentation, or share ideas, your contributions are appreciated. Ways to contribute: - **Report Issues**: Found a bug or have a feature request? Open an issue on GitHub. - **Submit Pull Requests**: Fork the repository, make your changes, and submit a PR. - **Improve Documentation**: Help us make the docs clearer and more helpful. - **Share Feedback**: Let us know how you're using LMCache Frontend and what could be improved. Join us in making LMCache Frontend better for everyone! More Information ---------------- For more details, visit the `LMCache Frontend GitHub repository `_.