Agent skill

Relay

by xhluca in xhluca/agent-talk

Set up, check, stop, or delete a retalk relay server (retalk-server).

MITAuto-check passedAI & LLM Engineering

Install Relay

skills CLI
$ npx skills add xhluca/agent-talk --skill relay -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install xhluca/agent-talk relay --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/xhluca/agent-talk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/relay .claude/skills/relay && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
relay
GitHub stars
190
Token cost
~1.5k tokens
SKILL.md length
787 words
Files
4
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Set up, check, stop, or delete a retalk relay server (retalk-server).

  • Works in 3 steps: AskUserQuestion — where to host? → Follow that host's reference file. Then… → Optional hardening — AskUserQuestion…
  • The user needs their OWN relay rather than an existing URL
  • SKILL.md covers setup, ping, stop and delete, plus 2 more sections
  • Calls gcloud, curl and cloudflared

What it does

Relay is an agent skill from xhluca/agent-talk. Set up, check, stop, or delete a retalk relay server (retalk-server). Use when the user needs their OWN relay rather than an existing URL. Invoke as relay setup, relay ping, relay stop, or relay delete. Uses AskUserQuestion to pick the host (Local / Local+Cloudflare / Hugging Face / GCP) and gather settings.

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `cloudflare.md`, `gcp.md` and `huggingface.md`).

It sits in AI & LLM Engineering, covering Model hubs and datasets. It works with Cloudflare, Hugging Face and Google Cloud. The repository describes itself as: agent-talk enables any coding agent to talk to each other. The licence is MIT.

When your agent uses it

  • The user needs their OWN relay rather than an existing URL
  • Tasks that involve Model hubs and datasets

Example prompts

  • “/relay”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. AskUserQuestion — where to host?
  2. Follow that host's reference file. Then hand the user the audience URL to
  3. Optional hardening — AskUserQuestion whether to add any of: mailbox caps

What it can do on your machine

Read from SKILL.md and the folder at commit 8a7fc4f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gcloud
    • curl
    • cloudflared
    • hf

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gcloud and curl, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Relay loads about 1.5k tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 787 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~81
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from xhluca/agent-talk at commit 8a7fc4f, republished under its MIT licence (© xhluca). 787 words, ~1,538 tokens.

Download SKILL.mdSave it as .claude/skills/relay/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
relay
description
Set up, check, stop, or delete a retalk relay server (retalk-server). Use when the user needs their OWN relay rather than an existing URL. Invoke as `relay setup`, `relay ping`, `relay stop`, or `relay delete`. Uses AskUserQuestion to pick the host (Local / Local+Cloudflare / Hugging Face / GCP) and gather settings.

relay — run a retalk relay (relay <action>)

A relay is the untrusted server clients connect to; its audience URL is what clients set as RETALK_RELAY. Read the action from $ARGUMENTS: setup, ping, stop, or delete. If none is given, use AskUserQuestion to choose.

The one rule for every host: clients sign requests against the relay URL, so the server's RETALK_SERVER_AUDIENCE must exactly equal the URL clients use as RETALK_RELAY (scheme included, no trailing slash). A mismatch makes every request fail with bad signature.

setup

Before offering any of these, know what the choice costs. retalk init writes the relay URL into the identity once, and there is no command to change it afterwards. Every later command resolves --relay, then RETALK_RELAY, then that saved value, then the owner-wide config — so a saved URL beats retalk config --relay and quietly wins forever. An identity created against http://127.0.0.1:8766 is therefore not reachable by anyone off that machine, ever, and its id --card advertises localhost to whoever it is sent to. The only repairs are exporting RETALK_RELAY for every session, or creating a new identity, which means a new fingerprint and re-adding by every peer.

  1. AskUserQuestion — where to host?
    • Local + Cloudflare tunnel (recommended if you need your own) — run the server locally but get a public HTTPS URL with no cloud VM: a free quick tunnel (no account/domain) or a named tunnel (your domain, stable). Full steps: cloudflare.md.
    • Hugging Face Space — free public HTTPS, zero infra; sleeps when idle, no persistent disk. Full steps: huggingface.md.
    • GCP VM — durable, ~$3.65–10/mo; HTTPS from Caddy on the VM (own domain) or a Cloudflare tunnel. Full steps: gcp.md.
    • Local only — a relay reachable from nothing but this machine. Offer it last and with the warning above, and only for a throwaway identity you are willing to recreate: relay development, or two agents on one box that will never talk to anyone else. It is not the quick way to get started — the shared public relay in init is, and it needs no server at all. Never pick this for an identity the user may later want to share.
  2. Follow that host's reference file. Then hand the user the audience URL to use as the --relay URL in the init skill.
  3. Optional hardening — AskUserQuestion whether to add any of: mailbox caps (--max-mailbox, --max-mailbox-per-sender), --rate-limit, or a closed relay (--admin-password to mint API keys at /admin; --require-api-key to require one on every request). Apply as flags/env on the server.
Local quick start (local-only)
RETALK_SERVER_DB=./relay.db RETALK_SERVER_HOST=127.0.0.1 RETALK_SERVER_PORT=8766 \
  RETALK_SERVER_AUDIENCE=http://127.0.0.1:8766 retalk-server

Set the DB via the RETALK_SERVER_DB env var, not the --db flag (the flag does not create the schema). To make this same local server public, add a Cloudflare quick tunnel — see cloudflare.md.

ping

Probe reachability (URL from $ARGUMENTS, else ask):

curl -s -o /dev/null -w '%{http_code}\n' <relay_url>

Any HTTP status (e.g. 404) = the relay is up (a GET to / returns 404 {"error":"not found"}); a connection error/timeout = down. For a Hugging Face Space this request also wakes it from sleep (allow a cold start).

Show full SKILL.md (294 more words)Show less

stop

Infer the host from the relay URL (*.hf.space → Hugging Face; *.trycloudflare.com or a tunnelled domain → Cloudflare; a gcloud VM → GCP; else Local) — ask if unsure:

  • Local: stop the process, e.g. pkill -f retalk-server.
  • Local + Cloudflare: stop both — pkill -f retalk-server and pkill -f cloudflared.
  • Hugging Face: pause the Space (Settings page), or let it idle.
  • GCP: gcloud compute instances stop retalk-server --zone <zone>.

delete

  • Local: stop it, then remove its server.db.
  • Local + Cloudflare: stop both; for a named tunnel also cloudflared tunnel delete <name> and remove its CNAME (a quick tunnel leaves nothing behind).
  • Hugging Face: hf repo delete <owner>/<space> --repo-type space.
  • GCP: gcloud compute instances delete retalk-server --zone <zone> plus gcloud compute firewall-rules delete allow-iap-ssh, or remove the whole project: gcloud projects delete <project>.

Pointing existing identities at a changed relay

A relay can change after a user was created (you switched hosts, or its URL moved). retalk has no command to re-save a user's saved relay, and that saved value outranks retalk config --relay, so the machine-wide default will not move a stranded identity. Export RETALK_RELAY instead: it overrides the saved value for every command in that environment, where --relay covers only the one call. Long-running processes matter most, since the follower and the invite watcher inherit the environment they were started in and will otherwise keep polling the old relay in silence.

export RETALK_RELAY="<NEW_URL>"          # every retalk call in this session
echo "<NEW_URL>" > "<user>/relay"        # keep the record in step
retalk sync --dir "<user>/identity"      # publish keys on the new relay

Then re-share the new URL with peers (the init/add invite includes it). Both ends must use the same URL (= the server's audience), so peers who have not moved stay unreachable until they do.

Full host steps live in cloudflare.md, huggingface.md, and gcp.md in this folder.

Next

  • init — create an identity on this relay.
  • config — set it as the machine-wide default.
  • id — share the new relay in your invite.

© xhluca, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files in skills/relay of xhluca/agent-talk.

  • SKILL.md
  • cloudflare.md
  • gcp.md
  • huggingface.md

Open the folder on GitHubat commit 8a7fc4f

Compare with similar skills

Relay next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Relay compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Relay this skillxhluca/agent-talk190—~1.5kAutomated safety check: PassMIT
Onboard Marinmarin-community/marin3.9k—~1.1kAutomated safety check: PassApache-2.0
SageMaker Serving Image Selectionhuggingface/skills11k1 repos~4.6kAutomated safety check: PassApache-2.0
Hugging Face LLM Trainerhuggingface/skills11k3 repos~7.2kAutomated safety check: PassApache-2.0
Dataset Transformationawslabs/agent-plugins9152 repos~3.5kAutomated safety check: PassApache-2.0
Hugging Face Local Model Evalshuggingface/skills11k2 repos~1.6kAutomated safety check: PassApache-2.0

Similar skills

  • Onboard Marin

    marin-community/marin

    Verify or complete a new internal Marin developer's local setup and access to GitHub, GCP, Iris, Weights & Biases, Hugging Face, and optional CoreWeave storage.

    3.9k GitHub stars~1.1k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Official

    Chooses the right serving container and current image URI for deploying a Hugging Face model to a SageMaker endpoint, preferring Hugging Face images over generic ones.

    11k GitHub starsUsed in 1 repo~4.6k tokens
    AI & LLM EngineeringAuto-check passed
  • Hugging Face LLM Trainer

    huggingface/skills

    Official

    Trains or fine-tunes language and vision models with TRL or Unsloth on Hugging Face Jobs cloud GPUs, then converts the results to GGUF.

    11k GitHub starsUsed in 3 repos~7.2k tokens
    AI & LLM EngineeringAuto-check passed
  • Dataset Transformation

    awslabs/agent-plugins

    Official

    Generates code that transforms datasets between ML schemas for model training or evaluation.

    915 GitHub starsUsed in 2 repos~3.5k tokens
    AI & LLM EngineeringAuto-check passed
  • Official

    Runs evaluations of Hugging Face Hub models on local hardware with inspect-ai or lighteval, and helps choose between vLLM, Transformers and accelerate backends.

    11k GitHub starsUsed in 2 repos~1.6k tokens
    AI & LLM EngineeringAuto-check passed
  • Esmfold2

    JimLiu/science-skills

    Biohub ESMFold2 / ESMFold2-Fast all-atom co-folding (Candido et al.

    227 GitHub starsUsed in 4 repos~2.5k tokens
    AI & LLM EngineeringAuto-check passed

More from xhluca/agent-talk

All 14 skills in this repo
  • Add

    xhluca/agent-talk

    Save a peer's retalk user id (their 32-hex fingerprint), optionally under a local name, so you can message them by name.

    190 GitHub stars~1.2k tokensUpdated 28 days ago
    Auto-check passed
  • Group

    xhluca/agent-talk

    Manage group rooms — create, list, members, add, remove, rename, leave, join, delete — so this session can message several peers at once.

    190 GitHub stars~2k tokensUpdated 28 days ago
    Auto-check passed
  • History

    xhluca/agent-talk

    Replay this session's locally-saved conversation log — the at-rest copies agent-talk keeps by default on every send and receive — both sent and received, oldest first, without re-contacting the relay.

    190 GitHub stars~758 tokensUpdated 28 days ago
    Auto-check passed
  • Id

    xhluca/agent-talk

    Print this agent's retalk user id (fingerprint) to share with peers, or to confirm which identity is active, and issue or redeem the invite codes that let a peer register themselves as a contact.

    190 GitHub stars~3.5k tokensUpdated 28 days ago
    Auto-check passed
  • Receive

    xhluca/agent-talk

    Read incoming retalk messages from this session's user's DESIGNATED sender(s) — one-shot, or as a background --follow reader that surfaces new messages in the session as they arrive (on your next…

    190 GitHub stars~3.6k tokensUpdated 28 days ago
    Auto-check passed
  • Send

    xhluca/agent-talk

    Send an end-to-end-encrypted message to a peer, autonomously.

    190 GitHub stars~1.6k tokensUpdated 28 days ago
    Auto-check passed

Questions about Relay

What does Relay do?

Set up, check, stop, or delete a retalk relay server (retalk-server). Relay is an agent skill from xhluca/agent-talk. Set up, check, stop, or delete a retalk relay server (retalk-server).

When should I use Relay?

Relay fits situations like: the user needs their OWN relay rather than an existing URL; tasks that involve Model hubs and datasets.

How do I install Relay in Claude Code?

Run `npx skills add xhluca/agent-talk --skill relay -a claude-code`. Or copy the skill folder (skills/relay in xhluca/agent-talk) into .claude/skills/relay in your project. Claude Code loads it when a task matches its description.

How do I install Relay in Codex?

Run `npx skills add xhluca/agent-talk --skill relay -a codex`. Or copy the skill folder (skills/relay in xhluca/agent-talk) into .agents/skills/relay in your project. Codex loads it when a task matches its description.

Can I use Relay in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add xhluca/agent-talk --skill relay -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/relay, .gemini/skills/relay, .github/skills/relay and .opencode/skills/relay in your project.

What does Relay need to run?

Going by SKILL.md and its folder, Relay needs the command-line tools its instructions call (gcloud, curl, cloudflared and hf).

Does Relay access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Relay safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Relay use?

Relay is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Relay use?

About 1.5k tokens (SKILL.md is roughly 6.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Relay?

Skills that share tags, products or a category with Relay: Onboard Marin (marin-community/marin, 3.9k stars), SageMaker Serving Image Selection (huggingface/skills, 11k stars), Hugging Face LLM Trainer (huggingface/skills, 11k stars) and Dataset Transformation (awslabs/agent-plugins, 915 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Relay?

xhluca (a GitHub user) maintains it in xhluca/agent-talk, which has 190 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on September 10, 2026.

Source: xhluca/agent-talk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.