glab-runner-controller
Manage GitLab runner controllers and authentication tokens. Create, inspect, update, delete controllers; manage scopes; and generate, rotate, and revoke tokens. Admin-only experimental feature for managing runner controller lifecycle. Triggers on runner controller, controller token, controller scope, experimental runner, admin runner.
What this skill does
# glab-runner-controller Manage GitLab runner controllers and their authentication tokens. ## ⚠️ Experimental Feature **Status:** EXPERIMENTAL (Admin-only) - This feature may be broken or removed without prior notice - Use at your own risk - Requires GitLab admin privileges - See: https://docs.gitlab.com/policy/development_stages_support/ ## What It Does Runner controllers manage the orchestration of GitLab Runners in your infrastructure. This skill provides commands to: - Create and configure runner controllers - Inspect controller details and connection status - Manage controller lifecycle (list, get, update, delete) - Manage controller scopes (instance-level or runner-level) - Generate and rotate authentication tokens - Revoke compromised tokens ## Common Workflows ### Create Runner Controller ```bash # Create with default settings glab runner-controller create # Create with description glab runner-controller create --description "Production runners" # Create enabled controller glab runner-controller create --description "Prod" --state enabled ``` **States:** - `disabled` - Controller exists but inactive - `enabled` - Controller is active (default) - `dry_run` - Test mode (no actual runner execution) ### List and View Controllers ```bash # List all controllers glab runner-controller list # List with pagination glab runner-controller list --page 2 --per-page 50 # Output as JSON glab runner-controller list --output json # Get one controller with status details glab runner-controller get 42 glab runner-controller get 42 --output json ``` ### Update Controller ```bash # Update description glab runner-controller update 42 --description "Updated name" # Change state glab runner-controller update 42 --state disabled # Update both glab runner-controller update 42 --description "Prod" --state enabled ``` ### Delete Controller ```bash # Delete with confirmation prompt glab runner-controller delete 42 # Delete without confirmation glab runner-controller delete 42 --force ``` ## Scope Management Runner controller scopes determine what the controller is allowed to evaluate. ### List Scopes ```bash # List all scopes for controller 42 glab runner-controller scope list 42 # JSON output glab runner-controller scope list 42 --output json ``` ### Add Scopes ```bash # Allow the controller to evaluate all instance runners glab runner-controller scope create 42 --instance # Allow the controller to evaluate a specific runner glab runner-controller scope create 42 --runner 5 # Add multiple runner scopes glab runner-controller scope create 42 --runner 5 --runner 10 glab runner-controller scope create 42 --runner 5,10 ``` ### Remove Scopes ```bash # Remove the instance-level scope glab runner-controller scope delete 42 --instance # Remove a specific runner-level scope glab runner-controller scope delete 42 --runner 5 --force ``` > **Note:** Older docs/examples may refer to `glab runner-controller runner ...` subcommands. The current user-facing surface is `glab runner-controller scope ...` plus `glab runner-controller get`. ## Token Management Workflows ### Token Lifecycle **Create → Rotate → Revoke** is the typical token lifecycle for security best practices. #### 1. Create Token ```bash # Create token for controller 42 glab runner-controller token create 42 # Create with description glab runner-controller token create 42 --description "production" # Output as JSON (for automation) glab runner-controller token create 42 --output json ``` **Important:** Save the token value immediately - it's only shown once at creation. #### 2. List Tokens ```bash # List all tokens for controller 42 glab runner-controller token list 42 # List as JSON glab runner-controller token list 42 --output json # Paginate glab runner-controller token list 42 --page 1 --per-page 20 ``` #### 3. Rotate Token Rotation generates a new token and invalidates the old one. ```bash # Rotate token 1 (with confirmation) glab runner-controller token rotate 42 1 # Rotate without confirmation glab runner-controller token rotate 42 1 --force # Rotate and output as JSON glab runner-controller token rotate 42 1 --force --output json ``` **Use cases:** - Scheduled rotation (security policy compliance) - Token compromise response - Key rotation before employee departure #### 4. Revoke Token ```bash # Revoke token 1 (with confirmation) glab runner-controller token revoke 42 1 # Revoke without confirmation glab runner-controller token revoke 42 1 --force ``` **When to revoke:** - Token compromised or leaked - Controller decommissioned - Access no longer needed ### Token Security Best Practices 1. **Rotate regularly** - Set up scheduled rotation (e.g., every 90 days) 2. **Use descriptions** - Track token purpose and owner 3. **Revoke immediately** when compromised 4. **Never commit tokens** to version control 5. **Use `--output json`** for automation (parse token value securely) ## Decision Tree: Controller State Selection ``` Do you need the controller active? ├─ Yes → --state enabled ├─ Testing configuration? → --state dry_run └─ No (maintenance/setup) → --state disabled ``` ## Troubleshooting **"Permission denied" or "403 Forbidden":** - Runner controller commands require GitLab admin privileges - Verify you're authenticated as an admin user - Check `glab auth status` to confirm current user **"Runner controller not found":** - Verify controller ID with `glab runner-controller list` - Controller may have been deleted - Check if you have access to the correct GitLab instance **Token creation fails:** - Ensure controller exists and is enabled - Verify admin privileges - Check GitLab instance version (experimental features may require recent versions) **Token rotation shows old token still works:** - Token invalidation may take a few seconds to propagate - Wait 10-30 seconds and test again - Check controller state (disabled controllers don't enforce token validation) **Cannot delete controller:** - Check if controller has active runners - May need to decommission runners first - Use `--force` to override (⚠️ destructive) **Experimental feature not available:** - Verify glab version: `glab version` (requires a recent glab build) - Check if feature flag is enabled on GitLab instance - Confirm GitLab instance version supports runner controllers ## Related Skills **CI/CD & Runners:** - `glab-ci` - View and manage CI/CD pipelines and jobs - `glab-job` - Retry, cancel, view logs for individual jobs - `glab-runner` - Manage individual runners (list, assign, jobs, managers, update, delete) **Repository Management:** - `glab-repo` - Manage repositories (runner controllers are instance-level) **Authentication:** - `glab-auth` - Login and authentication management ## Command Reference For complete command syntax and all available flags, see: - [references/commands.md](references/commands.md)
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.