User Guide# Getting Started Installation Install uv and EOS Configure and Start Manual Configuration Update EOS Infrastructure Setup Key Requirements Multi-Computer Lab Setup Main EOS Computer Worker Computers Concepts Packages Create a Package Add Entities to a Package Install Package Dependencies Configuring the User Directory 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 Laboratories Example Computers Devices Resources Tasks Parameters Resources Files Task Implementation YAML File (task.yml) Parameter Specification Integer Float String Boolean Choice List Dictionary Parameter Groups Python File (task.py) References Syntax Example Protocols Define a Protocol Task Fields Conditionals (run_if) Optimization Campaigns Choose How to Supply Parameters Campaign Settings Resuming Prepare a Protocol for Repeated Runs Optimizers Choose an Optimizer Protocol Integration Custom Optimizer Contract Parameter Schema and Runtime Controls Beacon Optimizer How Sampling Works Configure Beacon Settings AI Providers Claude Agent SDK Ollama Runtime Changes and Insights History and Token Use Customizing Beacon Integration Rules A Complete Grid-Search Example Grid Optimizer Beacon Subclass Factory Run and Tune a Campaign Scheduling Choosing a scheduler Task durations Device and resource allocation Task groups Device and resource holds Protocol run priorities CP-SAT parameters Scheduling simulation 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 MCP Server Connecting Claude Code Claude Desktop Other MCP Clients Capabilities Examples Authentication & Authorization How It Works Identity Roles Accounts Machine Access Setup TLS Configuration reference Managing Users from the CLI Calling the API with a Token Advanced SiLA 2 Integration 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 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