Loading...
Loading...
Print a summary of the Cyrus setup and offer to start the agent.
npx skill4agent add ceedaragents/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 savecurl -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!