xyOps Documentation

repository·main·Indexed 26 days ago

https://github.com/pixlcore/xyops

xyOps is a unified platform for job scheduling, workflow automation, server monitoring, alerting, and incident response. Version 1.0.85 provides a cohesive feedback loop connecting automation tasks with real-time monitoring. The platform includes tools for server lifecycle management via control.sh, database interaction through db-cli.js, and user/privilege management via storage-cli.js. It is BSD-licensed and supports self-hosting, professional, and enterprise tiers.

Tokens
150.8K
Snippets
354
Records
793
Agent score
86%

What's inside xyOps

  1. Overview of Notification Channels

    main

    Notification Channels in xyOps allow you to bundle multiple notification targets and follow-up actions under a single reusable name. Instead of configuring individual emails, webhooks, or remediation events separately for every workflow, you can reference a single channel. When a channel is triggered, xyOps executes all its configured actions in parallel.

    Common capabilities include:

    • Email: Notifies channel users and external email addresses.
    • Web Hook: Fires an outbound webhook with a templated payload.
    • Run Event: Launches a specific event (e.g., for remediation).
    • In-App Notify: Sends a UI notification to users, optionally playing an .mp3 sound.
  2. Overview of xyOps Database Architecture

    main

    xyOps uses Unbase built on top of pixl-server-storage. Records are stored as JSON in a key/value backend (SQLite by default).

    Querying Capabilities:

    • Simple field:words syntax.
    • Structured PxQL syntax.

    Indexing Types:

    • word: Default full-text/word index.
    • number: Numeric index.
    • date: Date index.

    Note: Date and number fields may be stored with reduced precision (e.g., divided by 3600 to index hour-level buckets) to optimize performance.

  3. Overview of xyOps Tickets

    main
    Tickets in xyOps are lightweight JSON records used to track issues, releases, changes, incidents, and operational work. They provide an audit trail, support Markdown comments, allow file attachments, and can drive automation by running jobs/events directly from the ticket. Tickets can be auto-created from jobs or alerts and can react to system events.
  4. Overview of Single Sign-On (SSO) in xyOps

    main

    xyOps supports Single Sign-On (SSO) by outsourcing user authentication to third-party identity providers (e.g., Microsoft, Google, GitHub, Okta, Auth0, Cognito).

    xyOps utilizes a "trusted headers" implementation. In this flow:

    1. An authentication tool (like an OIDC plugin or proxy) authenticates the user.
    2. The tool forwards the request to xyOps including specific "trusted headers".
    3. xyOps detects these headers to create or update user accounts and manages the session internally.

    xyOps can automatically assign user roles and privileges based on groups defined in your identity provider.

  5. Overview of xyOps Expression Format

    main

    xyOps uses a custom expression syntax based on the JEXL (JavaScript Expression Language). It supports JavaScript-style dot paths, array indexing, arithmetic, and boolean operators.

    Key features include:

    • Object Traversal: Access deep object trees using dot notation.
    • Array Filtering: Select items from arrays based on sub-object keys.
    • Macro Expansion: Use {{ mustache }} syntax for inline macro expansion in string evaluations.

    This format powers several subsystems, including Monitor Expressions, Alert Triggers, Alert Messages, Plugin Parameters, Workflow Controllers, Web Hook Messages, and Email Templates.

  6. Understand xyOps Limits and Inheritance

    main

    Limits are restrictions applied to events and workflows to govern resource usage (e.g., CPU, memory, time) or control execution flow (e.g., retries, queue size).

    Inheritance and Precedence

    Limits can be defined at four levels. When multiple limits of the same type exist, xyOps follows a specific precedence order:

    1. Event/Workflow limits: Defined directly in the editor (Highest priority).
    2. Workflow limit nodes: Attached to specific nodes within a workflow.
    3. Category inherited limits: Defined in the Category editor and inherited by all events in that category.
    4. Universal inherited limits: Defined in the global configuration file (Lowest priority).

    Conflict Resolution

    • Single-application limits: For Max Concurrent Jobs, Max Retry Limit, Max Queue Limit, and Max File Limit, xyOps picks only the first enabled limit it finds based on the precedence order above.
    • Multi-application limits: For resource-based limits like Max Run Time, Max Output Size, Max CPU Limit, and Max Memory Limit, all defined limits are applied. This allows you to trigger different actions (e.g., a warning vs. an abort) at different thresholds.
  7. Understand xyOps Core Concepts: Events and Workflows

    main

    xyOps automation is built on two primary concepts:

    • Events: Defines a single unit of work. An event specifies:
      • What to run (a plugin and its parameters).
      • Where to run it (specific servers or groups).
      • When to run (triggers).
      • How to control/react (limits and actions).
    • Workflows: A visual graph used for orchestration. A workflow run acts as a parent job that launches sub-jobs on its nodes. Use workflows for branching, parallelism (fan-out/join), repeating tasks, or multiplexing across servers.
  8. Understand the xyOps Portable Data Format (XYPDF)

    main

    XYPDF (xyOps Portable Data Format) is a JSON-based method for exporting, storing, transferring, and importing data objects within xyOps. It allows users to serialize data structures into a portable file that can be moved between different xyOps installations.

    File Formats

    • Plain Text: Uses the .json extension.
    • Compressed: Uses the .json.gz extension (Gzip-compressed).

    Import/Export Workflow

    1. Export: Select objects in the xyOps UI to serialize them into a XYPDF wrapper and download the file.
    2. Import: Upload a XYPDF file via the xyOps UI. The system can either create new objects or replace existing objects that share the same IDs.
  9. Understand xyOps User Profiles

    main

    A user profile in xyOps combines identity, authentication, permissions, and UI preferences.

    Key components include:

    • Identity: username (unique), full_name (display name), and email.
    • Status: The active boolean determines if a user can log in. Suspended users (active: false) are blocked.
    • Authentication: Uses bcrypt hashes for passwords.
    • Permissions: Managed via a roles array and a privileges object.
    • Resource Limits: Access to specific event categories and server groups can be restricted.
    • Preferences: Includes UI settings like language, timezone, color_acc, privacy_mode, and contrast.
    • Avatar: Users can upload or replace profile images via the UI.
  10. Understand xyOps Data Privacy and Self-Hosting

    main
    xyOps is designed as self-hosted software. By design, xyOps does not transmit data to PixlCore or any third party operated by PixlCore. The software does not include telemetry, analytics, or tracking, and does not 'call home' to PixlCore servers. All data processed by xyOps remains entirely within the Customer's own infrastructure, and the Customer is solely responsible for all data stored or processed within their deployment.
  11. Understand xyOps Triggers overview

    main

    Triggers in xyOps define the conditions under which an event or workflow is allowed to run jobs. You can compose multiple triggers on a single event to manage automatic schedules, one-time launches, manual control, and blackout windows.

    Key behaviors include:

    • Launching Triggers: manual, schedule, interval, and single actually initiate job runs.
    • Modifier/Constraint Triggers: catchup, nth, range, blackout, delay, precision, and plugin augment or restrict scheduling.
    • Precision: The scheduler typically runs once per minute, but can support second-level precision.
    • Timezones: Supported for schedule and plugin triggers via a timezone field. Note that range, blackout, and interval times are absolute and timezone-agnostic.