User Guide# Getting Started Installation 1. Install uv 2. Install EOS 3. Configure EOS 4. Launch External Services 5. Start EOS 6. Launch the Web UI Infrastructure Setup Key Requirements Multi-Computer Lab Setup Main EOS Computer Worker Computers Concepts Packages Create a Package Devices Device Implementation YAML File (device.yml) Python File (device.py) Resources Defining resources in laboratories Notes Declaring resources in task specifications Assigning resources in protocols Protocol‑level resource metadata (optional) Allocation and exclusivity When to model as a resource Laboratories Laboratory Implementation Computers (Optional) Devices (Required) Resources (Optional) Tasks Parameters Resources Files Task Implementation YAML File (task.yml) Parameter Specification Integer Float String Boolean Choice List Dictionary Python File (task.py) References Quick syntax Minimal example Protocols Protocol Implementation YAML File (protocol.yml) Optimizer File (optimizer.py) Campaigns Optimization Setup (Analyze and Design Phases) Automation Setup (Make and Test Phases) Optimizers Distributed Execution Optimizer Implementation Input and Output Parameter Naming Example Custom Optimizer Beacon Optimizer How It Works Why Hybrid? Setting Up Parameter Reference Strategy Mix AI Model AI Context Claude Agent SDK Using Local Models with Ollama Runtime Parameters Expert Insights Scheduling Choosing a scheduler Task durations Device and resource allocation Task groups Device and resource holds Protocol run priorities CP-SAT parameters Scheduling simulation Comparison table Interfaces Web UI Editor Tasks Protocol Runs Campaigns Device Inspector Files Management Logs REST API Submitting Protocol Runs Submitting Campaigns Submitting On-Demand Tasks Cancelling Querying Status Device RPC Documentation MCP Server Connecting Claude Code Claude Desktop Other MCP Clients Capabilities Examples Advanced SiLA 2 Integration Overview Setup Hosting SiLA Servers Connecting to External SiLA Servers Manual Connection Autodiscovery Using Servers from Tasks Long-Lived Connections Calling Servers from Device Code LockController Support Default Behavior Custom Timeout Custom Retry Behavior Disable Auto-Locking Manual Lock Control Jinja2 Templating Variables Arithmetic Conditionals Loops Macros Examples Color Mixing Installation Sample Usage Package Structure Devices Tasks Laboratory Protocol Dynamic Parameters and Optimization References Between Tasks