cyrus-setup-launch
Print a summary of the Cyrus setup and offer to start the agent.
By cyrusagents · 794 installs
npx skills add cyrusagents/cyrus --skill cyrus-setup-launch
Source repository · Upstream listing
CRITICAL: Never use Read , Edit , or Write tools on ~/.cyrus/.env or any file inside ~/.cyrus/ . Use only Bash commands ( grep , printf , etc.) to interact with env files — secrets must never be read into the conversation context.
Setup Launch
Prints a summary of the completed setup and offers to start Cyrus.
Step 1: Gather Configuration
Read current state:
Step 2: Print Summary
Print a formatted summary:
Use ✓ for configured items and ✗ for skipped/unconfigured items.
Step 3: Make Cyrus Persistent
Cyrus needs to run as a background process so it stays alive and restarts after reboots. Use the AskUserQuestion tool if available to ask:
How would you like to keep Cyrus running in the background?
1. pm2 (recommended) — Node.js process manager. Simple to set up, auto restarts on crash, log management built in. Best for most users.
2. systemd (Linux only) — OS level service manager. Starts on boot automatically, managed with systemctl . Best for dedicated Linux servers.
3. Neither — just run cyrus in the foreground for now (you can set up persistence later).
Option 1: pm2
The agent should run all of these commands directly:
1. Check if pm2 is installed ( which pm2 ). If not, install it ( npm install g pm2 ).
2. Start Cyrus: pm2 start cyrus name cyrus
3. Save the process list: pm2 save
4. Run pm2 startup — this prints a system specific command. The agent should run that output command too (it typically requires sudo ).
After setup, inform the user of useful commands:
pm2 logs cyrus — view logs
pm2 restart cyrus — restart
pm2 stop cyrus — stop
Option 2: systemd (Linux only)
The agent should run all of these commands directly:
1. Resolve the actual values for the service file:
2. Write the service file:
3. Enable and start:
After setup, inform the user of useful commands:
sudo systemctl status cyrus — check status
sudo journalctl u cyrus f — view logs
sudo systemctl restart cyrus — restart
Option 3: Foreground
Run directly:
Step 4: Start ngrok (if applicable)
If the user configured ngrok in the endpoint step, the agent should start it:
If using pm2, also make ngrok persistent:
Step 5: Sandbox CA Certificate Trust (if sandbox enabled)
If the user's ~/.cyrus/config.json has sandbox.enabled: true , check whether the egress proxy CA certificate is trusted in the system keychain.
Check if sandbox is enabled:
If sandbox is enabled, check trust status:
If the cert is found (exit code 0): report ✓ trusted. Offer to set sandbox.systemWideCert: true in config.json to skip per session cert env vars.
If not found (exit code 44): inform the user and offer to run the trust command:
On Linux, check with test f /usr/local/share/ca certificates/cyrus egress ca.crt . If not present:
After trusting system wide, offer to set sandbox.systemWideCert: true in config.json. This skips per session cert env vars ( NODE EXTRA CA CERTS , GIT SSL CAINFO , etc.) since the OS cert store handles trust for all tools.
If the user declines system wide trust, Cyrus still works — it sets cert env vars per session. But some tools (Bun, .NET, curl on macOS with SecureTransport) will only work with system wide trust.
Step 6: Verify Running
Once Cyrus starts, verify it's listening:
Should return {"status":"idle"} or similar.
Then try assigning a Linear issue to Cyrus, or @mentioning it in Slack, to verify the full pipeline works!
Completion
✓ Cyrus is running and ready. Assign a Linear issue or @mention in Slack to test it out!