cyrus-setup-endpoint
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCRITICAL: Never use , , or tools on or any file inside . Use only commands (, , etc.) to interact with env files — secrets must never be read into the conversation context.
ReadEditWrite~/.cyrus/.env~/.cyrus/Bashgrepprintf >>重要提示:切勿对或内的任何文件使用、或工具。仅使用Bash命令(如、等)与环境变量文件交互——机密信息绝不能被读取到对话上下文当中。
~/.cyrus/.env~/.cyrus/ReadEditWritegrepprintf >>Setup Endpoint
设置端点
Configures a public URL so Linear (and other integrations) can send webhooks to your Cyrus instance.
配置一个公共URL,让Linear(以及其他集成服务)能够向你的Cyrus实例发送Webhook。
Step 1: Check Existing Configuration
步骤1:检查现有配置
bash
grep -E '^CYRUS_BASE_URL=' ~/.cyrus/.env 2>/dev/nullIf is already set, inform the user:
CYRUS_BASE_URLWebhook endpoint already configured:To reconfigure, remove<value>fromCYRUS_BASE_URLand re-run this skill.~/.cyrus/.env
Skip to Step 4 (write port/webhooks if missing).
bash
grep -E '^CYRUS_BASE_URL=' ~/.cyrus/.env 2>/dev/null如果已设置,请告知用户:
CYRUS_BASE_URLWebhook端点已配置:如需重新配置,请从<value>中移除~/.cyrus/.env并重新运行此技能。CYRUS_BASE_URL
跳至步骤4(如果缺少端口/Webhooks配置则进行写入)。
Step 2: Choose Endpoint Method
步骤2:选择端点方式
Ask the user:
How will you expose Cyrus to the internet for webhooks?
- ngrok (recommended — every free account includes one static domain that persists across restarts)
- Cloudflare Tunnel (permanent, requires Cloudflare account)
- 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.
询问用户:
你将通过哪种方式将Cyrus暴露到互联网以接收Webhook?
- ngrok(推荐——每个免费账户都包含一个静态域名,重启后仍保持不变)
- Cloudflare Tunnel(永久可用,需要Cloudflare账户)
- 自定义URL(你已拥有公共URL/域名)
重要说明: ngrok的免费套餐包含一个永久静态域名——不要告知用户这是付费功能,也不要说URL会在重启后变更。每个免费ngrok账户都可在https://dashboard.ngrok.com/domains获取一个静态域名。
Step 3: Configure Endpoint
步骤3:配置端点
Option 1: ngrok
选项1:ngrok
3a. Check if ngrok is installed
3a. 检查ngrok是否已安装
bash
which ngrokIf not installed, provide install instructions:
macOS:
bash
brew install ngrokLinux:
bash
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok-v3-stable-linux-amd64.tgz | sudo tar xvz -C /usr/local/binbash
which ngrok如果未安装,提供安装说明:
macOS:
bash
brew install ngrokLinux:
bash
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok-v3-stable-linux-amd64.tgz | sudo tar xvz -C /usr/local/bin3b. Guide ngrok domain setup
3b. 引导配置ngrok域名
Instruct the user:
ngrok provides a free static domain so your URL doesn't change between restarts.
- Sign up or log in at https://dashboard.ngrok.com
- Go to https://dashboard.ngrok.com/domains
- Copy your free static domain (e.g.,
)your-name-here.ngrok-free.app- 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.
指导用户:
ngrok提供免费静态域名,让你的URL在重启后不会变更。
- 在https://dashboard.ngrok.com注册或登录
- 访问https://dashboard.ngrok.com/domains
- 复制你的免费静态域名(例如:
)your-name-here.ngrok-free.app- 访问https://dashboard.ngrok.com/get-started/your-authtoken并复制你的authtoken
请求用户提供:
- 他们的ngrok域名
- 他们的ngrok authtoken
重要提示: authtoken是机密信息,请使用剪贴板转文件的命令。
3c. Write ngrok configuration
3c. 写入ngrok配置
Write the ngrok config so it can be started with :
ngrok start cyrusbash
mkdir -p ~/.config/ngrokThen write (merge with existing if present):
~/.config/ngrok/ngrok.ymlyaml
version: 3
agent:
authtoken: <token>
endpoints:
- name: cyrus
url: <domain>
upstream:
url: 3456For the authtoken, use a clipboard-to-file approach:
macOS:
bash
undefined写入ngrok配置,以便通过启动:
ngrok start cyrusbash
mkdir -p ~/.config/ngrok然后写入(如果已有则合并):
~/.config/ngrok/ngrok.ymlyaml
version: 3
agent:
authtoken: <token>
endpoints:
- name: cyrus
url: <domain>
upstream:
url: 3456对于authtoken,使用剪贴板转文件的方法:
macOS:
bash
undefinedUser copies authtoken, then runs:
用户复制authtoken后运行:
NGROK_TOKEN=$(pbpaste) && cat > ~/.config/ngrok/ngrok.yml << EOF
version: 3
agent:
authtoken: $NGROK_TOKEN
endpoints:
- name: cyrus url: <domain> upstream: url: 3456 EOF
**Universal fallback:**
```bash
read -s -p "Paste your ngrok authtoken: " NGROK_TOKEN && cat > ~/.config/ngrok/ngrok.yml << EOF
version: 3
agent:
authtoken: $NGROK_TOKEN
endpoints:
- name: cyrus
url: <domain>
upstream:
url: 3456
EOF
echo " ✓ Saved"NGROK_TOKEN=$(pbpaste) && cat > ~/.config/ngrok/ngrok.yml << EOF
version: 3
agent:
authtoken: $NGROK_TOKEN
endpoints:
- name: cyrus url: <domain> upstream: url: 3456 EOF
**通用备用方案:**
```bash
read -s -p "Paste your ngrok authtoken: " NGROK_TOKEN && cat > ~/.config/ngrok/ngrok.yml << EOF
version: 3
agent:
authtoken: $NGROK_TOKEN
endpoints:
- name: cyrus
url: <domain>
upstream:
url: 3456
EOF
echo " ✓ Saved"3d. Write CYRUS_BASE_URL
3d. 写入CYRUS_BASE_URL
bash
printf 'CYRUS_BASE_URL=https://%s\n' "<domain>" >> ~/.cyrus/.envWhere is the ngrok domain the user provided (e.g., ).
<domain>your-name-here.ngrok-free.appInform the user:
To start ngrok, run:Run this in a separate terminal before starting Cyrus.ngrok start cyrus
bash
printf 'CYRUS_BASE_URL=https://%s\n' "<domain>" >> ~/.cyrus/.env其中是用户提供的ngrok域名(例如:)。
<domain>your-name-here.ngrok-free.app告知用户:
要启动ngrok,请运行:请在启动Cyrus之前,在单独的终端中运行此命令。ngrok start cyrus
Option 2: Cloudflare Tunnel
选项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:
bash
printf 'CLOUDFLARE_TOKEN=%s\n' "$(pbpaste)" >> ~/.cyrus/.envUniversal fallback:
bash
read -s -p "Paste your Cloudflare token: " val && printf 'CLOUDFLARE_TOKEN=%s\n' "$val" >> ~/.cyrus/.env && echo " ✓ Saved"Then write the base URL (not a secret — agent can write directly):
bash
printf 'CYRUS_BASE_URL=https://<hostname>\n' >> ~/.cyrus/.env请求用户提供:
- 他们的Cloudflare Tunnel令牌
- 他们的隧道主机名(例如:)
cyrus.yourdomain.com
令牌是机密信息——使用剪贴板转环境变量的方法:
macOS:
bash
printf 'CLOUDFLARE_TOKEN=%s\n' "$(pbpaste)" >> ~/.cyrus/.env通用备用方案:
bash
read -s -p "Paste your Cloudflare token: " val && printf 'CLOUDFLARE_TOKEN=%s\n' "$val" >> ~/.cyrus/.env && echo " ✓ Saved"然后写入基础URL(非机密信息——可直接写入):
bash
printf 'CYRUS_BASE_URL=https://<hostname>\n' >> ~/.cyrus/.envOption 3: Own URL
选项3:自定义URL
Ask the user for their URL. Validate it starts with .
https://bash
printf 'CYRUS_BASE_URL=%s\n' "<url>" >> ~/.cyrus/.env请求用户提供他们的URL。验证URL以开头。
https://bash
printf 'CYRUS_BASE_URL=%s\n' "<url>" >> ~/.cyrus/.envStep 4: Write Common Config
步骤4:写入通用配置
Ensure these are present in (add only if missing):
~/.cyrus/.envbash
grep -q '^CYRUS_SERVER_PORT=' ~/.cyrus/.env 2>/dev/null || printf 'CYRUS_SERVER_PORT=3456\n' >> ~/.cyrus/.env
grep -q '^LINEAR_DIRECT_WEBHOOKS=' ~/.cyrus/.env 2>/dev/null || printf 'LINEAR_DIRECT_WEBHOOKS=true\n' >> ~/.cyrus/.env
grep -q '^CYRUS_HOST_EXTERNAL=' ~/.cyrus/.env 2>/dev/null || printf 'CYRUS_HOST_EXTERNAL=true\n' >> ~/.cyrus/.envLINEAR_DIRECT_WEBHOOKS=trueCYRUS_HOST_EXTERNAL=true确保以下配置存在于中(仅当缺失时添加):
~/.cyrus/.envbash
grep -q '^CYRUS_SERVER_PORT=' ~/.cyrus/.env 2>/dev/null || printf 'CYRUS_SERVER_PORT=3456\n' >> ~/.cyrus/.env
grep -q '^LINEAR_DIRECT_WEBHOOKS=' ~/.cyrus/.env 2>/dev/null || printf 'LINEAR_DIRECT_WEBHOOKS=true\n' >> ~/.cyrus/.env
grep -q '^CYRUS_HOST_EXTERNAL=' ~/.cyrus/.env 2>/dev/null || printf 'CYRUS_HOST_EXTERNAL=true\n' >> ~/.cyrus/.envLINEAR_DIRECT_WEBHOOKS=trueCYRUS_HOST_EXTERNAL=trueCompletion
完成
✓ Webhook endpoint configured:✓ Server port: 3456 ✓ Direct webhooks: enabled<CYRUS_BASE_URL>
✓ Webhook端点已配置:✓ 服务器端口:3456 ✓ 直接Webhook:已启用<CYRUS_BASE_URL>