cyrus-setup-endpoint

Configure the public webhook endpoint for Cyrus — ngrok, Cloudflare Tunnel, or custom URL.

By cyrusagents · 822 installs

npx skills add cyrusagents/cyrus --skill cyrus-setup-endpoint

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 Endpoint Configures a public URL so Linear (and other integrations) can send webhooks to your Cyrus instance. Step 1: Check Existing Configuration If CYRUS BASE URL is already set, inform the user: Webhook endpoint already configured: <value To reconfigure, remove CYRUS BASE URL from ~/.cyrus/.env and re run this skill. Skip to Step 4 (write port/webhooks if missing). Step 2: Choose Endpoint Method Ask the user: How will you expose Cyrus to the internet for webhooks? 1. ngrok (recommended — every free account includes one static domain that persists across restarts) 2. Cloudflare Tunnel (permanent, requires Cloudflare account) 3. Own URL (you already have a public URL/domain) Important: ngrok's free tier includes a permanent static domain — do NOT tell the user this is a paid feature or that URLs change on restart. Every free ngrok account gets one static domain at https://dashboard.ngrok.com/domains. Step 3: Configure Endpoint Option 1: ngrok 3a. Check if ngrok is installed If not installed, provide install instructions: macOS: Linux: 3b. Guide ngrok domain setup Instruct the user: ngrok provides a free static domain so your URL doesn't change between restarts. 1. Sign up or log in at https://dashboard.ngrok.com 2. Go to https://dashboard.ngrok.com/domains 3. Copy your free static domain (e.g., your name here.ngrok free.app ) 4. Go to https://dashboard.ngrok.com/get started/your authtoken and copy your authtoken Ask the user to provide: Their ngrok domain Their ngrok authtoken CRITICAL: The authtoken is a secret. Use clipboard to file commands. 3c. Write ngrok configuration Write the ngrok config so it can be started with ngrok start cyrus : Then write ~/.config/ngrok/ngrok.yml (merge with existing if present): For the authtoken, use a clipboard to file approach: macOS: Universal fallback: 3d. Write CYRUS BASE URL Where <domain is the ngrok domain the user provided (e.g., your name here.ngrok free.app ). Inform the user: To start ngrok, run: ngrok start cyrus Run this in a separate terminal before starting Cyrus. Option 2: Cloudflare Tunnel Ask the user for: Their Cloudflare Tunnel token Their tunnel hostname (e.g., cyrus.yourdomain.com ) Token is a secret — use clipboard to env: macOS: Universal fallback: Then write the base URL (not a secret — agent can write directly): Option 3: Own URL Ask the user for their URL. Validate it starts with https:// . Step 4: Write Common Config Ensure these are present in ~/.cyrus/.env (add only if missing): LINEAR DIRECT WEBHOOKS=true enables direct Linear webhook signature verification. CYRUS HOST EXTERNAL=true enables direct Slack and GitHub webhook signature verification. Both are required for self hosted setups where webhooks come directly from the services (not forwarded through CYHOST). Completion ✓ Webhook endpoint configured: <CYRUS BASE URL ✓ Server port: 3456 ✓ Direct webhooks: enabled