| name | ops |
| description | Infrastructure operations - 1Password secrets, Coolify deployments, Postman tests, Hetzner/Hostinger servers |
Ops Skill
Infrastructure operations skill for managing deployments, secrets, servers, and API testing.
When to Use
Invoke this skill when:
- Deploying applications to Coolify or Hostinger
- Retrieving secrets from 1Password
- Running API tests with Newman
- Checking server status
- Managing environment variables
Part 1: Secrets Management (1Password)
Prerequisites
1Password CLI must be installed and desktop app running:
op --version
Getting Secrets
# List vaults
op vault list
# List items in a vault
op item list --vault "Development"
# Get a specific credential
op item get "API_KEY" --fields password
# Get full item as JSON
op item get "Database Connection" --format json
Common Secret Patterns
# Database URL
DB_URL=$(op item get "Production Database" --fields connectionString)
# API keys
OPENAI_KEY=$(op item get "OpenAI" --fields apiKey)
# Service accounts
op item get "Service Account" --fields username,password
Error Handling
If 1Password CLI times out:
[ERROR] connecting to desktop app timed out
Solution: Ensure 1Password desktop app is running with CLI integration enabled.
Part 2: Coolify Deployments
Coolify is the primary deployment platform with 50+ mycli tools available.
Server Management
# List all servers
mycli run coolify/servers/list
# Get server details
mycli run coolify/servers/get --uuid "server-uuid"
# Check server resources
mycli run coolify/servers/resources --uuid "server-uuid"
# Validate server connection
mycli run coolify/servers/validate --uuid "server-uuid"
Application Management
# List all applications
mycli run coolify/apps/list
# Get application details
mycli run coolify/apps/get --uuid "app-uuid"
# Create new application (GitHub)
mycli run coolify/apps/create-github \
--project_uuid "project-uuid" \
--server_uuid "server-uuid" \
--repository "owner/repo" \
--branch "main"
# Deploy application
mycli run coolify/deployments/deploy --uuid "app-uuid"
# Get deployment status
mycli run coolify/deployments/get --uuid "deployment-uuid"
Environment Variables
# List env vars for an app
mycli run coolify/apps/env/list --uuid "app-uuid"
# Update single env var
mycli run coolify/apps/env/update \
--uuid "app-uuid" \
--key "API_KEY" \
--value "new-value"
# Bulk update env vars
mycli run coolify/apps/env/bulk-update \
--uuid "app-uuid" \
--env "KEY1=value1,KEY2=value2"
Database Management
# List databases
mycli run coolify/databases/list
# Create PostgreSQL database
mycli run coolify/databases/create \
--server_uuid "server-uuid" \
--type "postgresql" \
--name "mydb"
# Start/stop database
mycli run coolify/databases/start --uuid "db-uuid"
mycli run coolify/databases/stop --uuid "db-uuid"
Services
# List services
mycli run coolify/services/list
# Start/stop/restart service
mycli run coolify/services/start --uuid "service-uuid"
mycli run coolify/services/stop --uuid "service-uuid"
mycli run coolify/services/restart --uuid "service-uuid"
Part 3: Hostinger VPS (Docker)
For direct Docker projects on Hostinger VPS.
Docker Projects
# List Docker projects
mycli run hostinger/vps/docker/list --vm_id "vm-id"
# Get project details
mycli run hostinger/vps/docker/get --vm_id "vm-id" --project_id "project-id"
# Get project logs
mycli run hostinger/vps/docker/logs --vm_id "vm-id" --project_id "project-id"
# Start/stop/restart project
mycli run hostinger/vps/docker/start --vm_id "vm-id" --project_id "project-id"
mycli run hostinger/vps/docker/stop --vm_id "vm-id" --project_id "project-id"
mycli run hostinger/vps/docker/restart --vm_id "vm-id" --project_id "project-id"
VPS Management
# Get VPS info
mycli run hostinger/vps/get --vm_id "vm-id"
# List all VPS
mycli run hostinger/vps/list
Part 4: API Testing (Newman)
Run Postman collections for API testing.
Running Collections
# Basic run
newman run collection.json
# With environment
newman run collection.json -e environment.json
# With reporters
newman run collection.json -r cli,html --reporter-html-export report.html
# Specific folder
newman run collection.json --folder "Authentication"
CI Integration
# Run and fail on errors
newman run collection.json --bail
# Run with iteration data
newman run collection.json -d data.csv
# Run with delay between requests
newman run collection.json --delay-request 500
Common Workflows
Deploy to Production
# 1. Get production secrets
DB_URL=$(op item get "Production DB" --fields connectionString)
# 2. Update environment variables
mycli run coolify/apps/env/update \
--uuid "prod-app-uuid" \
--key "DATABASE_URL" \
--value "$DB_URL"
# 3. Trigger deployment
mycli run coolify/deployments/deploy --uuid "prod-app-uuid"
# 4. Check deployment status
mycli run coolify/deployments/list --uuid "prod-app-uuid"
Health Check All Servers
# Check Coolify servers
mycli run coolify/servers/list | jq '.[] | {name, status}'
# Check Hostinger VPS
mycli run hostinger/vps/list | jq '.[] | {hostname, state}'
# Run API health tests
newman run health-checks.json
Rotate Secrets
# 1. Generate new secret in 1Password
# 2. Update in Coolify
mycli run coolify/apps/env/update \
--uuid "app-uuid" \
--key "API_SECRET" \
--value "$(op item get 'API Secret' --fields password)"
# 3. Restart application
mycli run coolify/services/restart --uuid "app-uuid"
# 4. Verify with API test
newman run auth-tests.json
Infrastructure Overview
| Platform | Type | Count | Purpose |
|---|---|---|---|
| Coolify | PaaS | 2 servers | Main deployments |
| Hostinger | VPS | 2 servers | Docker projects |
| Hetzner | Cloud | - | Underlying infra |
Access via mycli:
coolify/*- 50+ toolshostinger/vps/*- VPS managementsentry/*- Error tracking (when configured)
Part 5: Error Tracking (Sentry/GlitchTip)
Manage error tracking and monitoring across environments.
Setup
Configure error tracking with:
/setup-error-tracking
Querying Errors via API
Until mycli has native Sentry integration, use the API directly:
# Set auth token
SENTRY_TOKEN=$(op item get "Sentry Auth Token" --fields password)
# List recent issues
curl -H "Authorization: Bearer $SENTRY_TOKEN" \
"https://sentry.io/api/0/projects/ORG/PROJECT/issues/?query=is:unresolved"
# Get issue details
curl -H "Authorization: Bearer $SENTRY_TOKEN" \
"https://sentry.io/api/0/issues/ISSUE_ID/"
# Resolve an issue
curl -X PUT -H "Authorization: Bearer $SENTRY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "resolved"}' \
"https://sentry.io/api/0/issues/ISSUE_ID/"
GlitchTip API (Same as Sentry)
GlitchTip uses Sentry-compatible API:
# Use your GlitchTip instance URL
GLITCHTIP_URL="https://errors.myapp.com"
curl -H "Authorization: Bearer $GLITCHTIP_TOKEN" \
"$GLITCHTIP_URL/api/0/projects/ORG/PROJECT/issues/"
MyCLI Integration (Future)
When mycli has Sentry integration:
# List unresolved errors
mycli run sentry/issues/list \
--project="myapp" \
--query="is:unresolved"
# Get error details
mycli run sentry/issues/get --id="12345"
# Resolve issue
mycli run sentry/issues/resolve --id="12345"
# Get error stats
mycli run sentry/stats/errors \
--project="myapp" \
--period="24h"
# Create alert rule
mycli run sentry/alerts/create \
--project="myapp" \
--name="High error rate" \
--conditions='[{"type":"event_frequency","value":100,"interval":"1h"}]'
Common Workflows
Investigate Production Error:
# 1. Get recent unresolved issues
curl -s -H "Authorization: Bearer $SENTRY_TOKEN" \
"https://sentry.io/api/0/projects/ORG/PROJECT/issues/?query=is:unresolved&limit=10" \
| jq '.[].title'
# 2. Get specific issue events
curl -s -H "Authorization: Bearer $SENTRY_TOKEN" \
"https://sentry.io/api/0/issues/ISSUE_ID/events/" \
| jq '.[0]'
# 3. Check if related to recent deploy
mycli run coolify/deployments/list --uuid "$APP_UUID" | head -5
Post-Deploy Error Check:
# Wait for errors after deploy
sleep 300 # 5 minutes
# Check for new errors since deploy
DEPLOY_TIME=$(date -u -d '5 minutes ago' +%Y-%m-%dT%H:%M:%S)
curl -s -H "Authorization: Bearer $SENTRY_TOKEN" \
"https://sentry.io/api/0/projects/ORG/PROJECT/issues/?query=firstSeen:>$DEPLOY_TIME" \
| jq 'length'
Storing Credentials
# Sentry Auth Token (for API access)
op item create \
--category=api_credential \
--title="Sentry Auth Token" \
--vault="Development" \
credential="sntrys_xxx..."
# Sentry DSN (for SDK)
op item create \
--category=login \
--title="Sentry DSN - MyApp" \
--vault="Development" \
url="https://sentry.io" \
password="https://xxx@o123.ingest.sentry.io/123"