A public address
SkillDev toolsLets your agent explain and fix the "needs your weft to be reachable from the internet" error by setting up a public URL.
Then ask your AI: use the A public address skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add it as a step in a pipeline you build on Ahel, or connect Ahel to Claude, ChatGPT, Cursor, Claude Code or Codex and ask your AI to use it.
About this skill
Read when a trigger needs the internet to reach weft (a route, a provider that pushes its events), when the user asks about a public URL or a tunnel, or when activation fails with \"needs your weft to be reachable from the internet\": what the error means, walking the user through ./setup.sh --publi
What this skill tells your AI
The instructions your AI receives, as published by weavemindai/weft in tangle/claude-code/.claude/skills/weft-public-address/SKILL.md and read by Ahel’s review.
Webhook-style triggers (a Route, a Drive watch, a Slack app
installed in other workspaces) need the runtime reachable from the
internet. Polling triggers (Telegram, email, sheets, RSS, cron) and
everything local work without one.
The error, verbatim. When a project with a dial-in trigger is activated on a weft the internet cannot reach, activation refuses with:
this trigger needs '' to deliver events TO your weft, which requires your weft to be reachable from the internet, and it is not. If you accept making its public trigger surface reachable, rerun
./setup.sh --public-urland re-activate; or use a connection that supports dialing out (your own provider app), where the service offers one.
If you see that, or a user pastes it, this is the cause and nothing else. It is not a broken credential, a wrong path, or a bad subscription. Say so in one sentence before doing anything else, because the wording sends people hunting through their provider settings.
Walking a user through it. The command is ./setup.sh --public-url,
always. Never weft daemon start --public-url: it exists, but every
message weft prints names setup.sh, and the user should be typing the same
thing the tool told them. Steps:
- Say what it will do: open a Cloudflare quick tunnel so the provider can reach their machine, and expose only the event, signal, file-link and OAuth-callback routes. The management API stays unreachable. The book's public address page lists the exact routes; offer it, do not paste it.
- Get their consent before running it, because it makes a surface on
their machine reachable from the internet. This is one of the
ask-first moves. - Run
./setup.sh --public-url, thenweft daemon statusto read back the hostname it minted. - Re-activate the project. If the same error comes back, the transport was never the problem; go and read the trigger's own metadata for which transports its connection actually supports.
The alternative, and prefer it when it exists. Several services can
dial out instead. For Slack, pasting an app-level token with
connections:write on the connection switches it to Socket Mode and drops
the public-address requirement entirely. Offer that first: it needs no
tunnel and nothing on the user's machine becomes reachable.
A quick tunnel's hostname changes whenever the tunnel restarts, so any
URL the user registered by hand at a provider goes stale. If they are
registering webhook URLs anywhere, they want the named-tunnel setup
(WEFT_PUBLIC_TUNNEL_TOKEN plus WEFT_PUBLIC_TUNNEL_HOSTNAME, both
required, hostname HTTPS with no port or path), which is on the same book
page.
Google Drive has a second requirement on top of the address: it must be on a domain verified in the app's Google console, or Google refuses to create the watch. That refusal comes from Google, not weft, and no amount of tunnel work fixes it.
A 403 carrying error code: 1010 on a file link is Cloudflare's
Browser Integrity Check refusing the client (Python's urllib is one it
refuses), never weft. The fix is a Cloudflare configuration rule on the
user's side, and the book's public address page walks through it.
Signals
- GitHub stars
- 2k
- Forks
- 218
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
weft-public-address- Source
- github.com/weavemindai/weft
Related picks
Skill · sickn33
The pick for Pythonpython-design-patterns
Skill · wshobson
The pick for Pythonslack-gif-creator
Skill · anthropics
The pick for Slackslack-automation
Skill · davila7
The pick for Slackcloudflare-email-service
Skill · cloudflare
The pick for Cloudflarecloudflare-setup
Skill · peterpme
The pick for Cloudflare