Spaces:
Running
Running
| """BioOps Twin — Application Entry Point. | |
| Launches the Gradio industrial dashboard for the laboratory | |
| centrifuge digital twin. | |
| Usage:: | |
| python main.py | |
| Environment variables: | |
| GEMINI_API_KEY — Google Gemini API key. When set the agent | |
| operates in **LIVE** mode (Gemini 3.1 Pro with | |
| automatic function calling). When absent, | |
| the agent falls back to local **MOCK** mode. | |
| """ | |
| from __future__ import annotations | |
| import logging | |
| # --------------------------------------------------------------------------- | |
| # Logging — must be configured before any bioops import | |
| # --------------------------------------------------------------------------- | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format="%(asctime)s | %(levelname)-7s | %(name)s | %(message)s", | |
| ) | |
| logger = logging.getLogger("bioops_twin") | |
| def main() -> None: | |
| """Build and launch the BioOps Twin dashboard.""" | |
| from bioops.simulation_ui.dashboard import build_dashboard | |
| import os | |
| assets_dir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "assets")) | |
| logger.info("Launching BioOps Twin dashboard...") | |
| app = build_dashboard() | |
| app.queue().launch( | |
| server_name="0.0.0.0", | |
| server_port=7860, | |
| show_error=True, | |
| allowed_paths=[assets_dir], | |
| ) | |
| if __name__ == "__main__": | |
| main() | |