Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pixlcore/xyops/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Servers are the worker nodes in a xyOps cluster. Each server runs the lightweight satellite agent (xySat), maintains a persistent WebSocket connection to the conductor, collects monitoring metrics, and executes jobs on demand. A server may be a physical host, virtual machine, or container running Linux, macOS, or Windows.Servers run xySat and act as job runners and metrics collectors. Conductors run the full xyOps stack and coordinate scheduling, routing, storage, and UI.
Key Concepts
Servers vs. Conductors
- Server: A worker node running xySat that reports host details and metrics, and executes jobs sent by a conductor. Servers may be grouped and targeted by events.
- Conductor: A full xyOps instance (primary or hot standby) that manages the schedule, routes jobs to servers, stores data, and serves the UI/API.
Metrics Collection
Servers collect two types of metrics:- Per-second (“quick”): CPU, memory, disk, and network retained in a rolling 60-second in-memory buffer for UI
- Per-minute (monitors): User-defined monitor plugins run each minute on servers to produce numeric values that feed charts, alerts, and dashboards
Adding Servers
You can add servers in three ways:Via the UI (one-line installer)
- Go to the Servers tab and click “Add Server…”
- Optionally set a label, icon, enabled state, and pick groups
- Copy the pre-configured one-line install command for Docker, Linux, macOS or Windows
- Run it on the target host
- The installer authenticates, installs xySat as a startup service (systemd/launchd/Windows Service), writes the config, and starts the agent
- The server appears immediately in the cluster and begins streaming metrics
Automated bootstrap (API Key)
For autoscaling or ephemeral hosts, generate an API Key and use your provisioning to call the bootstrap endpoint during first boot.
Automated Docker Workers
To automate adding new Docker-based workers:Get the installation command
Click “Add Server” from the sidebar, select “Docker” as the target platform, and copy the installation command.
Groups and Auto-Assignment
Servers can belong to one or more groups used for organizing the fleet, scoping monitors/alerts, and targeting events.How Auto-Assignment Works
How Auto-Assignment Works
- Auto-assignment: Groups can declare a hostname regular expression. When a server comes online or its hostname changes, matching groups are applied automatically.
- Multiple groups: Servers can match and join multiple groups.
- Manual assignment: If you manually assign groups to a server, automatic hostname-based matching is disabled for that server.
- Re-evaluation: Group matches are re-evaluated if a server’s hostname changes.
Targeting Events at Servers
Events specify targets as a list containing server IDs and/or group IDs. At run time, the scheduler resolves these into the set of currently online, enabled servers, then picks one using the event’s selection algorithm. Selection algorithms:random- Random selectionround_robin- Round-robin rotationleast_cpu- Server with lowest CPU loadleast_mem- Server with lowest memory usage- Monitor-based policy
Behavior When Servers are Offline
- Single-server target: If the target server is offline, behavior is configurable via limits (add a Queue limit to allow queuing; without one, the job fails immediately)
- Group target: Offline servers are ignored; alternate online servers from the group are selected
Alerts can optionally suppress job launches on a specific server, so a server under alert may be excluded from selection until it clears.
User Data
xyOps can store arbitrary data with each server called “user data” - a freeform JSON object that can contain any data you want (including nested objects/arrays). This data is:- Automatically passed to all running jobs on the server
- Available for custom event targeting
- Stored in memory on the primary conductor for all active servers
- In the UI, on the server details page, click “Edit Server”
- Call the
update_server_dataAPI - Inside a running job by outputting a
serverDataobject
Server UI Page
Each server has a dedicated page showing live and historical state:Online/offline badge, label/hostname, IP, OS/arch, CPU details, memory, virtualization, agent version, uptime, and groups
Small rolling graphs for CPU, memory, disk, and network over the last 60 seconds (per second)
Charts for all user-defined monitors and deltas, with alert overlays (per minute)
Current process table showing PID, parent, CPU, memory, network, and other metrics for each process
Current network connections showing state, source and dest IPs, and transfer metrics
Live jobs executing on the server, including workflow parents/children
Active alerts affecting this server, with links to history
Lifecycle and Health
Online/Offline Status
A server is online while its xySat WebSocket is connected. If the socket drops, the server is immediately marked offline. The UI updates in real time.Enable/Disable
Disabling a server removes it from job selection but it can remain online and continue reporting metrics.Decommissioning Servers
To retire a server, open its detail page and click the trash can icon:- Online: The conductor sends an uninstall command to the agent, which shuts down and removes xySat. You can also optionally delete historical data.
- Offline: You can still delete the server but must opt to delete history, as uninstall requires an active connection.
Code Reference
Server validation and management is implemented in/workspace/source/lib/server.js:
server.js:15-38
Related APIs
get_active_servers- List all currently online serversget_active_server- Get details for a specific active serverget_server- Get server details from databaseupdate_server- Update server configurationdelete_server- Remove server from clusterwatch_server- Start a watch to take snapshots every minutecreate_snapshot- Take a snapshot of server statesearch_servers- Search server history and summaries