Active / Idle / Off
The same panel in three states. Status bar anchors the top. Everything below Enabled dims when off.
Non-persistent, currently running
When a non-persistent bot is already running (from Run Now or a schedule), the Run Now button disables to prevent stacking.
Why this design
Slide toggles for power, checkbox for config. Enabled and Auto-restart create/destroy processes — they have real consequences. Colony messaging is a routing preference. The control type signals the weight of the action.
Everything dims below Enabled. Model selector, actions, and sub-toggles all depend on the bot being enabled. Dimming at 35% opacity makes the dependency visually obvious without hiding information.
Context-dependent actions. Persistent bots get Restart. Non-persistent get Run Now. Already-running non-persistent shows "Running..." disabled. No confused states.
Status anchors the top. The first thing you read is the bot's state — Active (green dot), Idle (ember ring), Off (text only). You never have to deduce status from toggle positions.
~280px total height. Compact enough for a sidebar panel. No wasted space, no decorative chrome.