
cyrus-setup-endpoint
Configure the public webhook endpoint for Cyrus — ngrok, Cloudflare Tunnel, or custom URL.
- Installs
- 1K
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/cyrusagents/cyrus --skill cyrus-setup-endpoint- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads cyrus-setup-endpoint automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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
grep -E '^CYRUS_BASE_URL=' ~/.cyrus/.env 2>/dev/null
If CYRUS_BASE_URL is already set, inform the user:
Webhook endpoint already configured:
<value>To reconfigure, removeCYRUS_BASE_URLfrom~/.cyrus/.envand 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?
- 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.
Step 3: Configure Endpoint
Option 1: ngrok
3a. Check if ngrok is installed
which ngrok
If not installed, provide install instructions:
macOS:
brew install ngrok
Linux:
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok-v3-stable-linux-amd64.tgz | sudo tar xvz -C /usr/local/bin
3b. Guide ngrok domain setup
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.
3c. Write ngrok configuration
Write the ngrok config so it can be started with ngrok start cyrus:
mkdir -p ~/.config/ngrok
Then write ~/.config/ngrok/ngrok.yml (merge with existing if present):
version: 3
agent:
authtoken: <token>
endpoints:
- name: cyrus
url: <domain>
upstream:
url: 3456
For the authtoken, use a clipboard-to-file approach:
macOS:
# User copies authtoken, then runs:
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:
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
printf 'CYRUS_BASE_URL=https://%s\n' "<domain>" >> ~/.cyrus/.env
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 cyrusRun 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:
printf 'CLOUDFLARE_TOKEN=%s\n' "$(pbpaste)" >> ~/.cyrus/.env
Universal fallback:
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):
printf 'CYRUS_BASE_URL=https://<hostname>\n' >> ~/.cyrus/.env
Option 3: Own URL
Ask the user for their URL. Validate it starts with https://.
printf 'CYRUS_BASE_URL=%s\n' "<url>" >> ~/.cyrus/.env
Step 4: Write Common Config
Ensure these are present in ~/.cyrus/.env (add only if missing):
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/.env
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
FAQ
What does the cyrus-setup-endpoint skill do?
Configure the public webhook endpoint for Cyrus — ngrok, Cloudflare Tunnel, or custom URL.
How do I install cyrus-setup-endpoint?
Run npx skills add https://github.com/cyrusagents/cyrus --skill cyrus-setup-endpoint in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/cyrus-setup-endpoint/ (personal) or .claude/skills/cyrus-setup-endpoint/ (project).
Which AI agents can use cyrus-setup-endpoint?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is cyrus-setup-endpoint safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains cyrus-setup-endpoint?
It is published by cyrusagents in cyrusagents/cyrus. It has 1,026 recorded installs.
More from cyrusagents/cyrus
cyrus-setup
cyrusagents/cyrus
Set up Cyrus end-to-end — install prerequisites, configure authentication, create integrations (Linear, GitHub, Slack), add repositories, and launch. Run this once to get Cyrus running as a background agent.
cyrus-setup-linear
cyrusagents/cyrus
Create a Linear OAuth application and configure Cyrus to use it — supports agent-browser automation or guided manual setup.
cyrus-setup-claude-auth
cyrusagents/cyrus
Configure Claude Code authentication for Cyrus — API key, OAuth token, or third-party provider.
cyrus-setup-github
cyrusagents/cyrus
Configure GitHub for Cyrus — gh CLI login and git config for PRs, with optional webhook setup to enable @mention responses in PR comments, automated rebases and merges, and auto-fixing based on CI failures (coming soon).
cyrus-setup-prerequisites
cyrusagents/cyrus
Check and install prerequisites for Cyrus — Node.js, jq, gh CLI, and the cyrus-ai npm package.
cyrus-setup-repository
cyrusagents/cyrus
Add one or more Git repositories to Cyrus configuration so it can process issues from those repos.
Popular backend & apis skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
entra-app-registration
microsoft/azure-skills
Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.
google-agents-cli-adk-code
google/agents-cli
This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).
embedded-captions
heygen-com/hyperframes
Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.
entra-agent-id
microsoft/azure-skills
Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).
neon
neondatabase/agent-skills
Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.