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
Secrets are encrypted “vaults” for sensitive configuration such as API keys, auth tokens, passwords, and similar credentials. Each secret contains one or more named variables (key/value pairs). xyOps stores the variable data encrypted at rest and only decrypts it in memory when needed at runtime. Secrets can be assigned to:- Events: Jobs launched by events receive secret variables as environment variables
- Categories: All events in selected categories receive the secrets
- Plugins: Jobs using the plugin receive the secrets
- Web Hooks: Hooks access secrets through template expansion via
{{ secrets.VAR_NAME }}
Data Model
Secret Object
Secret Object
Secret metadata stored in plaintext:
id- Unique identifiertitle- Display nameenabled- Active/inactive toggleicon- Optional icon identifiernotes- Description (plaintext only)names- List of variable names (not values)- Assignment lists:
events,categories,plugins,web_hooks
Encrypted Payload
Encrypted Payload
Variable values stored in separate encrypted record:
- Never exposed in list APIs
- Only decrypted by administrators explicitly
- Each access is logged
Encryption
xyOps uses authenticated encryption to protect secret values at rest:Encryption Details
Algorithm
AES-256-GCM for confidentiality and integrity
AES-256-GCM combines Advanced Encryption Standard with a 256-bit key and Galois/Counter Mode (GCM) to provide both data confidentiality and authentication.
Key Derivation
scrypt with parameters:
N=16384(CPU/memory cost)r=8(block size)p=1(parallelization)- Per-record random 16-byte salt
Nonce & AAD
- Nonce/IV: Per-record random 12-byte IV
- AAD: Secret ID bound as Additional Authenticated Data to prevent record swapping
Assigning Access
Secrets control where they may be used through assignment:Events
Events
Grant to selected events - their jobs receive the variables:
Categories
Categories
Grant to all events in selected categories:
Plugins
Plugins
Grant to selected plugins when they run jobs, actions, or triggers:
Web Hooks
Web Hooks
Grant to selected web hooks for template expansion:
Merge Precedence
If multiple secrets define the same variable name, the final value is determined by merge order:Web hooks have no merging; each referenced secret’s variables are expanded independently in templates.
Runtime Delivery
Jobs
Jobs
Secret variables injected into job’s process environment as
NAME=value pairs:Variables follow POSIX naming rules: letters, digits, underscores (start with letter or underscore).
Web Hooks
Web Hooks
Secrets available via template expansion:
Decryption Lifecycle
Decryption Lifecycle
- Encrypted data remains at rest until needed
- xyOps decrypts into memory at exact moment required
- Values used and never persisted in plaintext
- Memory cleared after use
Auditing and Logging
xyOps records both routine and user-initiated access to secrets.Routine Runtime Use
Logged “quietly” to dedicatedSecret.log file:
- Epoch timestamp and formatted date/time
- Server hostname and PID
- Textual description
- Full secret metadata JSON (no values)
- Access type (event, category, plugin, or web hook)
Administrator Decryption
Logged “loudly” in Activity Log when admin decrypts through UI or API:Create, update, and delete operations are also logged in the Activity Log.
Using Secrets in the UI
The Secrets admin page requires administrator privileges.Create Secret
Define title, optional icon/notes, assignments, and variables:
- Values encrypted on save
- Only variable
namesstored in plaintext - ID auto-generated if not provided
Edit Metadata
Update title, icon, notes, and assignment lists without touching encrypted data:
- No decryption required
- Changes saved immediately
View/Edit Values
Values not loaded by default:
- Click to view/decrypt (requires admin role)
- Confirmation dialog displayed
- Access logged to Activity Log
- Saving re-encrypts and stores new payload
Enable/Disable
Toggle availability without deleting data:
- Disabled secrets not injected into jobs
- Useful for temporary suspension
API Usage
Key secret API endpoints:Best Practices
Metadata Security
Metadata Security
Keep titles/notes non-sensitive:Good:
- Title: “Production Database”
- Names:
DB_HOST,DB_USER,DB_PASS
- Title: “DB password is hunter2”
- Names:
PROD_DB_ADMIN_PASSWORD
Naming Conventions
Naming Conventions
Use clear, uppercase names with underscores:
Avoid variable name collisions across assigned secrets.
Binary Data
Binary Data
Base64-encode binary payloads before storing:
Environment Size Limits
Environment Size Limits
POSIX systems enforce limits on total argv+environment size:
- Linux: Often ≥2 MB
- macOS: Commonly ~256 KB
- Check with:
getconf ARG_MAX
- Keep each value under a few kilobytes
- For large data, use files or Buckets and pass references
- Monitor total environment size across all secrets
Web Hook Security
Web Hook Security
Prefer placing secrets in headers or body, not URLs:
Job Script Security
Job Script Security
Ensure scripts don’t echo environment variables to logs:Scrub or redact as needed.
Secret Key Rotation
Theconfig.secret_key is used to derive encryption keys for all secrets. To rotate:
API Reference
get_secrets- List all secrets (metadata only)get_secret- Get single secret metadatadecrypt_secret- Decrypt and retrieve values (admin only, logged)create_secret- Create new secret with encrypted valuesupdate_secret- Update secret metadata or valuesdelete_secret- Permanently delete secret
Required Privileges
- Administrator role: Required to decrypt secrets, create, update, or delete
- Valid session or API Key: Required to list secrets and view metadata
Jobs automatically receive secrets based on assignments - no special privileges required.