Loading...
Loading...
Print a summary of the Cyrus setup and offer to start the agent.
npx skill4agent add cyrusagents/cyrus cyrus-setup-launchReadEditWrite~/.cyrus/.env~/.cyrus/Bashgrepprintf >># Base URL
grep '^CYRUS_BASE_URL=' ~/.cyrus/.env 2>/dev/null | cut -d= -f2-
# Linear
grep -c '^LINEAR_CLIENT_ID=' ~/.cyrus/.env 2>/dev/null
# GitHub
gh auth status 2>&1 | head -1
# Slack
grep -c '^SLACK_BOT_TOKEN=' ~/.cyrus/.env 2>/dev/null
# Repositories
cat ~/.cyrus/config.json 2>/dev/null
# Claude auth
grep -c -E '^(ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN)=' ~/.cyrus/.env 2>/dev/null┌─────────────────────────────────────┐
│ Cyrus Setup Complete │
├─────────────────────────────────────┤
│ │
│ Endpoint: https://your-url.com │
│ Claude: ✓ API key configured │
│ │
│ Surfaces: │
│ Linear: ✓ Workspace connected │
│ GitHub: ✓ CLI authenticated │
│ Slack: ✓ Bot configured │
│ │
│ Repositories: │
│ • yourorg/yourrepo │
│ • yourorg/another-repo │
│ │
└─────────────────────────────────────┘AskUserQuestionHow would you like to keep Cyrus running in the background?
- pm2 (recommended) — Node.js process manager. Simple to set up, auto-restarts on crash, log management built in. Best for most users.
- systemd (Linux only) — OS-level service manager. Starts on boot automatically, managed with
. Best for dedicated Linux servers.systemctl- Neither — just run
in the foreground for now (you can set up persistence later).cyrus
which pm2npm install -g pm2pm2 start cyrus --name cyruspm2 savepm2 startupsudopm2 logs cyruspm2 restart cyruspm2 stop cyrusCYRUS_BIN=$(which cyrus)
CYRUS_USER=$(whoami)sudo tee /etc/systemd/system/cyrus.service > /dev/null << EOF
[Unit]
Description=Cyrus AI Agent
After=network.target
[Service]
Type=simple
User=$CYRUS_USER
EnvironmentFile=/home/$CYRUS_USER/.cyrus/.env
ExecStart=$CYRUS_BIN
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOFsudo systemctl daemon-reload
sudo systemctl enable cyrus
sudo systemctl start cyrussudo systemctl status cyrussudo journalctl -u cyrus -fsudo systemctl restart cyruscyrusngrok start cyruspm2 start "ngrok start cyrus" --name ngrok
pm2 save~/.cyrus/config.jsonsandbox.enabled: truegrep -o '"enabled":\s*true' ~/.cyrus/config.json 2>/dev/null | head -1# macOS — check System keychain for the Cyrus CA
security find-certificate -c "Cyrus Egress Proxy CA" /Library/Keychains/System.keychain 2>&1sandbox.systemWideCert: truesudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.cyrus/certs/cyrus-egress-ca.pemtest -f /usr/local/share/ca-certificates/cyrus-egress-ca.crtsudo cp ~/.cyrus/certs/cyrus-egress-ca.pem /usr/local/share/ca-certificates/cyrus-egress-ca.crt
sudo update-ca-certificatessandbox.systemWideCert: trueNODE_EXTRA_CA_CERTSGIT_SSL_CAINFOcurl -s http://localhost:3456/status{"status":"idle"}Then try assigning a Linear issue to Cyrus, or @mentioning it in Slack, to verify the full pipeline works!
✓ Cyrus is running and ready. Assign a Linear issue or @mention in Slack to test it out!