openlink-license-manager
Skill42 starsChanged 50 days agoMITView on GitHub
Start, stop, restart, enable at boot, and check the status of the OpenLink License Manager (oplmgr) daemon on macOS, Linux, and Windows. Detects OS and init system automatically. Use when the user asks to start, stop, restart, enable, disable, or check the status of the OpenLink License Manager or oplmgr.
In this repository45 other files it gives its agents.
- agent-rdf-memory/AGENTS.mdAGENTS.md
- AGENTS.mdAGENTS.md
- a2a-clientSkill
- acp-clientSkill
- csv-to-rdf-det-generatorSkill
- data-twinglerSkill
- dbpedia-query-skillSkill
- document-to-kg-skillSkill
- fediverse-crudSkill
- fuxi-engineerSkill
- infographic-describerSkill
- iodbc-dsn-managerSkill
- kg-generatorSkill
- linked-data-skillsSkill
- llm-routing-skillSkill
- monidSkill
- mpp-stripe-clientSkill
- mtls-curlSkill
- opal-agent-skill-assemblerSkill
- openlink-license-readerSkill
- openlink-request-broker-configuratorSkill
- opml-rss-readerSkill
- osdi-inclusion-engineSkill
- pinchtabSkill
- rdf-det-variant-generatorSkill
- rdf-infographic-skillSkill
- resource-access-offers-generatorSkill
- rss-feed-generatorSkill
- s3-query-skillSkill
- screencast-recorderSkill
- set-webdav-resource-propertySkill
- sparql-faceted-browserSkill
- ucp-clientSkill
- uriburner-opal-agent-skillsSkill
- virtuoso-rdf-bulk-loaderSkill
- virtuoso-rdf-loaderSkill
- virtuoso-support-agentSkill
- wc2026-match-reportSkill
- weblog-from-webdavSkill
- website-from-webdavSkill
- wikidata-query-skillSkill
- world-cup-2026-navigatorSkill
- x402-buyerSkill
- xmla-clientSkill
- youidSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. About 0 are common, 12 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈12
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Default execution order when REST or remote access is needed:
- Distinctive: line 22
If the user names a specific mode or protocol, follow that preference instead.
- Distinctive: line 43
If OS detection is ambiguous, ask the user to confirm their OS before proceeding.
- Distinctive: line 49
Run these checks in order before attempting any privileged command.
- Very specific: line 65
If this sudo succeeds (passwordless sudo already configured for another rule or user is root): proceed.
- Very specific: line 66
If this sudo fails with a password prompt error: inform the user and ask them to run the command in Terminal.app:
- Distinctive: line 99
Windows: no pre-flight checks needed — Administrator privilege is handled by the OS service manager.
- Very specific: line 124
Before starting, detect the version and derive and validate the +directory value:
- Distinctive: line 260
Default license directories by version and OS:
- Distinctive: line 272
After any start or stop action, automatically run the status command for the detected platform and display the result to confirm the …
- Distinctive: line 282
Run Step 0 — detect OS and (on Linux) init system
- Distinctive: line 283
Run Step 1, Check A — verify symlink exists.
- Distinctive: line 284
Run Step 1, Check B — verify passwordless sudo.
- Distinctive: line 285
Run Step 2 — show the relevant command(s) and ask for confirmation
- Distinctive: line 287
Run Step 5 — show status output
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
OpenLink License Manager Skill
Purpose
Manage the OpenLink License Manager daemon (oplmgr) lifecycle across macOS, Linux, and Windows. Covers start, stop, restart, status, enable/disable at boot, and version detection.
Execution Routing
Default execution order when REST or remote access is needed:
- Local CLI execution — manage
oplmgrviasudocommands,launchctl, orsystemctl(primary mode) - URIBurner REST functions — for remote license server status checks or management
- Terminal-owned OAuth flow — when a REST endpoint requires OAuth 2.0 authentication, execute the OAuth flow from the terminal (authorization code, client credentials, or device flow), capture the Bearer token, and inject it into subsequent REST/OpenAPI calls via
Authorization: Bearer {token}headers - MCP — if a remote MCP-enabled service exposes license manager tools
If the user names a specific mode or protocol, follow that preference instead.
Step 0 — Detect OS and Init System
# Detect OS
uname -s # Darwin = macOS, Linux = Linux
# Windows: uname absent; detect via %OS% or assume Windows if neither works
# On Linux only — detect init system
systemctl --version 2>/dev/null && echo "systemd" || echo "manual"uname -s output | OS |
Darwin | macOS |
Linux | Linux |
| (absent / error) | Windows |
If OS detection is ambiguous, ask the user to confirm their OS before proceeding.
Step 1 — Pre-flight Checks (macOS and Linux only)
Run these checks in order before attempting any privileged command. Claude Code runs non-interactively (no TTY), so both the symlink and passwordless sudo must be in place.
Check A — Symlink at /usr/local/bin/oplmgr
sudoers cannot handle paths containing spaces. The real binary lives at /Library/Application Support/openlink/bin/oplmgr, so a space-free symlink is required.
ls -la /usr/local/bin/oplmgr 2>/dev/null && echo "symlink OK" || echo "symlink MISSING"If symlink is MISSING, attempt to create it automatically:
sudo ln -s "/Library/Application Support/openlink/bin/oplmgr" /usr/local/bin/oplmgr- If this
sudosucceeds (passwordless sudo already configured for another rule or user is root): proceed. - If this
sudofails with a password prompt error: inform the user and ask them to run the command in Terminal.app:
Then retry from the top of Step 1.sudo ln -s "/Library/Application Support/openlink/bin/oplmgr" /usr/local/bin/oplmgr
On Linux: no symlink is needed if the binary path already contains no spaces (e.g. /opt/openlink/oplmgr/oplmgr).
Check B — Passwordless sudo for /usr/local/bin/oplmgr
sudo -n /usr/local/bin/oplmgr +stop 2>&1; echo "exit:$?"
# exit:0 or a non-password error = passwordless sudo OK
# "sudo: a password is required" = NOT configuredIf passwordless sudo is NOT configured, stop and inform the user:
Passwordless
sudois not configured foroplmgr. Please run the following in Terminal.app:echo 'YOUR_USERNAME ALL=(ALL) NOPASSWD: /usr/local/bin/oplmgr' | sudo tee /etc/sudoers.d/oplmgr && sudo chmod 440 /etc/sudoers.d/oplmgrOn Linux (systemd), grant passwordless sudo for
systemctlinstead:echo 'YOUR_USERNAME ALL=(ALL) NOPASSWD: /bin/systemctl start oplmgr.service, /bin/systemctl stop oplmgr.service, /bin/systemctl restart oplmgr.service, /bin/systemctl status oplmgr.service' | sudo tee /etc/sudoers.d/oplmgr && sudo chmod 440 /etc/sudoers.d/oplmgrThen return here and retry.
Windows: no pre-flight checks needed — Administrator privilege is handled by the OS service manager.
Step 2 — Show Command and Confirm
Always display the exact command(s) that will be run and ask the user to confirm before executing.
Present the applicable command from the tables below, then proceed only on confirmation.
Step 3 — Command Reference by Platform
macOS
Priority 1 — Direct binary (preferred)
Try oplmgr from its installation directory first:
# Locate the binary (prefer symlink at /usr/local/bin/oplmgr)
which oplmgr 2>/dev/null || ls /usr/local/bin/oplmgr 2>/dev/nullBefore starting, detect the version and derive and validate the +directory value:
# Step A: Detect version
/usr/local/bin/oplmgr 2>&1 | head -5
# Step B: Derive license directory
LICENSE_DIR="${OPL_LICENSE_DIR:-/Library/Application Support/openlink/Licenses}"
# Step C: Validate — directory must exist and contain at least one .lic file
ls "${LICENSE_DIR}"/*.lic 2>/dev/null | head -1Decision table:
| Condition | Action |
Directory exists and contains .lic files | Proceed — use as +directory |
Directory exists but no .lic files | Warn the user; ask them to confirm the correct license directory before proceeding |
| Directory does not exist | Halt — inform the user that no license directory was found and ask for the correct path |
$OPL_LICENSE_DIR is unset and default missing | Halt — inform the user with the exact message below |
If no valid license directory is found, stop and inform the user:
No license directory could be found. Neither
$OPL_LICENSE_DIRnor the default path (/Library/Application Support/openlink/Licenses/) exists or contains.licfiles. Please provide the path to the directory containing your OpenLink license files, then retry.
| Version | Start command |
| v1.3.6+ | sudo /usr/local/bin/oplmgr +start +directory "<validated-license-dir>" |
| v1.3.5 and earlier | sudo /usr/local/bin/oplmgr +start (uses $OPL_LICENSE_DIR automatically; warn if unset) |
| Action | Command |
| Start (v1.3.6+) | sudo /usr/local/bin/oplmgr +start +directory "<validated-license-dir>" |
| Start (v1.3.5−) | sudo /usr/local/bin/oplmgr +start |
| Stop | sudo /usr/local/bin/oplmgr +stop |
| Status | ps aux | grep -i oplmgr | grep -v grep |
| Version | /usr/local/bin/oplmgr 2>&1 | head -5 |
Canonical binary location: /Library/Application Support/openlink/bin/oplmgr
Symlink (no spaces — required for sudoers): /usr/local/bin/oplmgr
Important: Always use
/usr/local/bin/oplmgr(the symlink) forsudocommands. The real path contains spaces whichsudoerscannot handle.
Priority 2 — launchctl fallback (if binary unavailable or for boot persistence)
| Action | Command |
| Start | sudo /bin/launchctl load "/Library/LaunchDaemons/com.openlinksw.oplmgr.plist" |
| Stop | sudo /bin/launchctl unload "/Library/LaunchDaemons/com.openlinksw.oplmgr.plist" |
| Status | sudo launchctl list | grep oplmgr |
| Enable at boot | Persistent automatically via LaunchDaemon plist (no separate enable step needed) |
Note: If a non-default license directory is used, edit the plist at
/Library/LaunchDaemons/com.openlinksw.oplmgr.plistto reflect the new path before loading.
Linux — systemd (preferred when available)
# Check for systemd
systemctl --version 2>/dev/null| Action | Command |
| Start | sudo systemctl start oplmgr.service |
| Stop | sudo systemctl stop oplmgr.service |
| Restart | sudo systemctl restart oplmgr.service |
| Status | sudo systemctl status oplmgr.service |
| Enable at boot | sudo systemctl enable oplmgr.service |
| Disable at boot | sudo systemctl disable oplmgr.service |
| Version | oplmgr -? |
Linux — Manual (no systemd)
| Action | Command |
| Start (v1.3.6+) | sudo /opt/openlink/oplmgr/oplmgr +start +directory "${OPL_LICENSE_DIR:-/etc/oplmgr}" |
| Start (v1.3.5−) | sudo /opt/openlink/oplmgr/oplmgr -start |
| Stop | sudo /opt/openlink/oplmgr/oplmgr -stop |
| Status | ps aux | grep -i oplmgr | grep -v grep |
| Enable at boot | N/A — manual start only |
| Version | /opt/openlink/oplmgr/oplmgr 2>&1 | head -5 |
Note: Installation path may vary. Common alternatives:
/opt/openlink/bin/oplmgr, or per-productbin/directories. Check$OPL_LICENSE_DIRfor hints.
Windows
Administrator privileges are required for all service operations.
Priority 1 — PowerShell (preferred)
| Action | Command |
| Start | powershell -Command "Start-Service -Name 'OpenLink License Manager'" |
| Stop | powershell -Command "Stop-Service -Name 'OpenLink License Manager' -Force" |
| Restart | powershell -Command "Restart-Service -Name 'OpenLink License Manager' -Force" |
| Status | powershell -Command "Get-Service -Name 'OpenLink License Manager'" |
| Enable auto-start | powershell -Command "Set-Service -Name 'OpenLink License Manager' -StartupType Automatic" |
| Disable auto-start | powershell -Command "Set-Service -Name 'OpenLink License Manager' -StartupType Manual" |
| Version | powershell -Command "& '$env:windir\oplmgr.exe' -?" |
Priority 2 — net / sc (fallback)
| Action | Command |
| Start | net start "OpenLink License Manager" |
| Stop | net stop "OpenLink License Manager" |
| Restart | net stop "OpenLink License Manager" && net start "OpenLink License Manager" |
| Status | sc query "OpenLink License Manager" |
| Enable auto-start | sc config "OpenLink License Manager" start= auto |
| Disable auto-start | sc config "OpenLink License Manager" start= demand |
| Version | %windir%\oplmgr.exe -? |
On 64-bit Windows with mixed 32/64-bit installations: consolidate all license files in a single directory (e.g.
C:\Program Files\OpenLink Software\Licenses\) to avoid bitness-mismatch issues with the registry lookup at:HKLM\SOFTWARE\OpenLink Software\License Manager\License Directories\
Step 4 — Version Detection and Behavioral Notes
oplmgr -?| Version | Behavior |
| v1.3.5 and earlier | Uses $OPL_LICENSE_DIR environment variable only to locate license files |
| v1.3.6 and later | Supports +directory parameter; searches $OPL_LICENSE_DIR, +directory paths, and PATH for *.lic files |
Default license directories by version and OS:
| OS | v1.3.5 and earlier | v1.3.6 and later |
| macOS | /Library/Application Support/openlink/bin/ | /Library/Application Support/openlink/Licenses/ |
| Linux | $OPL_LICENSE_DIR (set by openlink.sh) | /etc/oplmgr/ |
| Windows | Registry-defined directories | Registry-defined directories |
Step 5 — Post-Action Status Check
After any start or stop action, automatically run the status command for the detected platform and display the result to confirm the operation succeeded.
Initialization Sequence
When invoked:
⛔ PRE-BUILD CHECK: Before producing output, re-read the relevant workflow section above and re-read any checklists or verification gates defined in this skill. Confirm each checklist item before writing output. Build to pass — do not retro-fit. Apply the CLAUDE.md Anti-Drift Protocol: re-read spec section before build, gate-first validation, section-by-section delivery.
- Run Step 0 — detect OS and (on Linux) init system
- Run Step 1, Check A — verify symlink exists; attempt to create it automatically if missing
- Run Step 1, Check B — verify passwordless sudo; halt with setup instructions if not configured
- Run Step 2 — show the relevant command(s) and ask for confirmation
- Execute on confirmation — run the command
- Run Step 5 — show status output
Troubleshooting
| Symptom | Cause | Fix |
sudo: a terminal is required | No TTY — Claude Code runs non-interactively | Configure passwordless sudo via /etc/sudoers.d/oplmgr (see Step 1) |
expected a fully-qualified path name | sudoers parse error — path contains spaces | Create symlink at /usr/local/bin/oplmgr and use that in the sudoers rule (see Step 1) |
oplmgr: command not found | Binary not in PATH | Use full path (see Step 3 Priority 1 section for platform) |
launchctl: no plist found | plist missing or path wrong | Check /Library/LaunchDaemons/com.openlinksw.oplmgr.plist exists |
Unit oplmgr.service not found | No systemd unit installed | Fall back to manual start/stop commands |
Access denied / 5: Access is denied | Insufficient privileges on Windows | Run command prompt as Administrator |
| Service starts then stops immediately | License file not found | Check $OPL_LICENSE_DIR / default license path for valid .lic files |
+directory path missing or empty | $OPL_LICENSE_DIR unset and default path doesn't exist | Supply the license directory path explicitly when prompted (see Step 3 decision table) |
sc query shows STOPPED after start attempt | Service misconfigured | Check Windows Event Viewer for oplmgr errors |
Version
1.5.0 — License directory validation added before +start on macOS/Linux: checks existence and presence of .lic files; halts with actionable message when $OPL_LICENSE_DIR is unset and the OS default path is missing or empty. Added troubleshooting row for +directory path missing or empty.
1.4.0 — macOS/Linux start now detects version and derives +directory value before issuing +start (v1.3.6+ only). Windows: PowerShell Start-Service/Stop-Service added as Priority 1; net/sc demoted to Priority 2 fallback.
1.3.0 — Step 1 now includes Check A (symlink detection + automatic creation attempt) before Check B (passwordless sudo). Skill self-heals the symlink when possible without user intervention.
1.2.0 — macOS commands now use /usr/local/bin/oplmgr symlink throughout (sudoers cannot handle paths with spaces). Setup instructions updated to include symlink creation step. Added expected a fully-qualified path name to troubleshooting table.
1.1.0 — Added passwordless sudo pre-check (Step 1) with setup instructions for macOS and Linux. Added sudo: a terminal is required to troubleshooting table.
1.0.0 — Initial release. macOS (binary + launchctl fallback), Linux (systemd + manual fallback), Windows (service). Version detection and behavioral notes for v1.3.5 vs v1.3.6+.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

