Skip to content
Gauge

ax-check.com

Relay

relayfi.com

ax-check.com

Checked 19 September 2026

B

71/100

Agents need your login

Pricing is posted clearly, but agents can't find it

Relay states exact plan prices and limits on its pricing page, yet all 3 independent agent sessions failed to report the actual figures.

2 fixes to start with

Concrete changes, backed by what we found.

Onboarding

Give agents a clear login handoff and a way to resume setup.

Agents cannot progress through onboarding without human help. Provide an agent-accessible path through authentication and setup.

Docs

Return Markdown when clients request text/markdown.

Homepage returned text/html even when text/markdown was requested; no Markdown representation offered.

Recorded coding sessions

Same task, 3 models, no relayfi.com account. Recorded 19 September 2026 on Pi.

3 recorded · 2m 36s

2m 36s · recorded

Session findings

Select a finding to see it in context.

piv0.84.2
modelQwen 3.8 Maxcwd/sandbox/repo
Help me build a simple example using Relay. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.
Thinking…

The user asks about "Relay". Ambiguous — could be Relay (GraphQL, Facebook's framework), or Relay.app (workflow automation product), or Relay (a payment/crypto API?). "Tell me how pricing works" and "whether this product will be easy for you to manage" — suggests a hosted SaaS product. Let me check the repo first for context.

$ cd /sandbox/repo && ls -la && cat README* 2>/dev/null | head -50{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 19 00:10 ..\ndrwxr-xr-x 8 root root 4096 Sep 18 08:00…ctrl+o
{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 19 00:10 ..\ndrwxr-xr-x 8 root root 4096 Sep 18 08:00 .git\n-rw-r--r-- 1 root root  408 Sep 18 08:00 .gitignore\n","type":"text"}]}
$ cd /sandbox/repo && git log --oneline -10 2>/dev/null; ls -R . | head -60; env | grep -i -E "relay|api_key|token" | sed 's/=.*/=<set>/'{"content":[{"text":"9ebf5fb Initial workspace\n.:\nPI_GATEWAY_API_KEY=<set>\n","type":"text"}]}
Thinking…

Empty repo. No Relay credentials. The user asks to "build a simple example using Relay", "tell me how pricing works", and assess manageability.

"Relay" — which one? Let me consider: Relay.app is a workflow automation product (human-in-the-loop workflows) with an API. There's also Relay (relay.network?), Relay (GraphQL) which is an open-source client library — no pricing, no hosted product. Given the framing "hosted product through its SDK or API" and "pricing", it's likely Relay.app (relay.app) — a SaaS workflow automation tool. But it requires an account/API key which I don't have.

Let me check network access and whether there's any tooling available. I should be honest: I have no credentials, and no ability to sign up (requires email/OAuth, billing). Let me verify network access quickly and check docs for pricing.

Let me test network access.

$ cd /sandbox/repo && (curl -sS -m 10 -o /dev/null -w "%{http_code}\n" https://api.relay.app 2>&1; curl -sS -m 10 -o /dev/null -w "%{http_code}\n" https://www.relay.app 2>&1) | tail -5; echo "---"; npm …{"content":[{"text":"curl: (6) Could not resolve host: api.relay.app\n000\n301\n---\n10.9.8\nv22.23.2\npip 26.2.1 from /opt/freestyle/python/lib/python3.12/site…ctrl+o
cd /sandbox/repo && (curl -sS -m 10 -o /dev/null -w "%{http_code}\n" https://api.relay.app 2>&1; curl -sS -m 10 -o /dev/null -w "%{http_code}\n" https://www.relay.app 2>&1) | tail -5; echo "---"; npm --version; node --version; pip --version 2>/dev/null | head -1

{"content":[{"text":"curl: (6) Could not resolve host: api.relay.app\n000\n301\n---\n10.9.8\nv22.23.2\npip 26.2.1 from /opt/freestyle/python/lib/python3.12/site-packages/pip (python 3.12)\n","type":"text"}]}
$ curl -sS -m 15 https://pypi.org/pypi/relayapp/json 2>&1 | head -c 300; echo; echo "---npm---"; curl -sS -m 15 https://registry.npmjs.org/-/v1/search?text=relay.app 2>&1 | head -c 800{"content":[{"text":"{\"message\": \"Not Found\"}\n---npm---\n{\"objects\":[{\"downloads\":{\"monthly\":9648,\"weekly\":1133},\"dependents\":\"0\",\"updated\":\…ctrl+o
{"content":[{"text":"{\"message\": \"Not Found\"}\n---npm---\n{\"objects\":[{\"downloads\":{\"monthly\":9648,\"weekly\":1133},\"dependents\":\"0\",\"updated\":\"2026-09-15T19:41:09.336Z\",\"searchScore\":33.404045,\"package\":{\"name\":\"@metalabel/dfos-web-relay\",\"keywords\":[\"dfos\",\"relay\",\"web-relay\",\"hono\",\"ed25519\",\"jws\",\"did\",\"verifiable\",\"identity\",\"content-addressing\",\"metalabel\"],\"version\":\"0.54.0\",\"description\":\"DFOS Web Relay — verifying HTTP relay for identity chains, content chains, and content blobs\",\"sanitized_name\":\"@metalabel/dfos-web-relay\",\"publisher\":{\"email\":\"npm-oidc-no-reply@github.com\",\"trustedPublisher\":{\"oidcConfigId\":\"oidc:a4946392-2750-4e97-97f2-91cdcfdec208\",\"id\":\"github\"},\"username\":\"GitHub Actions\"},\"maintainers\":[{\"email\":\"bvalosek@gmail.com\",\"username\":\"bvalosek\"}],\"license\":\"MIT\",\"date\":\"2026-09-08T19:37:00.181Z\",\"links\":{\"homepage\":\"http","type":"text"}]}
Thinking…

Network is restricted: api.relay.app doesn't resolve (DNS blocked or that host doesn't exist). www.relay.app gives 301. Let me check where it redirects and whether docs are reachable.

Actually — important ambiguity. "Relay" could be:

  1. Relay.app — AI workflow automation SaaS (has API, pricing tiers)
  2. Relay (GraphQL framework by Meta) — open source, no pricing
  3. Relay Health, Relay Payments (crypto/fiat payments API — relay.link?), Relay (relay.network)...

Given "hosted product through its SDK or API" + "pricing" + "easy for you to manage" — most likely Relay.app. Let me check reachability.

$ for h in https://www.relay.app https://www.relay.app/pricing https://docs.relay.app https://api.relay.app/v1 https://app.relay.app; do printf "%s -> " "$h"; curl -sSL -m 12 -o /dev/null -w "%{http_cod…{"content":[{"text":"https://www.relay.app -> 200 https://relay.app/\nhttps://www.relay.app/pricing -> 404 https://relay.app/pricing\nhttps://docs.relay.app -> …ctrl+o
for h in https://www.relay.app https://www.relay.app/pricing https://docs.relay.app https://api.relay.app/v1 https://app.relay.app; do printf "%s -> " "$h"; curl -sSL -m 12 -o /dev/null -w "%{http_code} %{url_effective}\n" "$h" 2>&1 | tail -1; done

{"content":[{"text":"https://www.relay.app -> 200 https://relay.app/\nhttps://www.relay.app/pricing -> 404 https://relay.app/pricing\nhttps://docs.relay.app -> 200 https://relay.app/\nhttps://api.relay.app/v1 -> 000 https://api.relay.app/v1\nhttps://app.relay.app -> 000 https://app.relay.app/\n","type":"text"}]}
$ getent hosts api.relay.app docs.relay.app www.relay.app app.relay.app registry.npmjs.org pypi.org 2>&1; echo "--- dns test ---"; cat /etc/resolv.conf{"content":[{"text":"2606:4700:3036::6815:3665 docs.relay.app\n2606:4700:3034::ac43:a86e docs.relay.app\n2606:50c0:8000::153 relaydotapp.github.io www.relay.app…ctrl+o
{"content":[{"text":"2606:4700:3036::6815:3665 docs.relay.app\n2606:4700:3034::ac43:a86e docs.relay.app\n2606:50c0:8000::153 relaydotapp.github.io www.relay.app\n2606:50c0:8003::153 relaydotapp.github.io www.relay.app\n2606:50c0:8002::153 relaydotapp.github.io www.relay.app\n2606:50c0:8001::153 relaydotapp.github.io www.relay.app\n2606:4700::6810:a22 registry.npmjs.org\n2606:4700::6810:22 registry.npmjs.org\n2606:4700::6810:622 registry.npmjs.org\n2606:4700::6810:222 registry.npmjs.org\n2606:4700::6810:922 registry.npmjs.org\n2606:4700::6810:322 registry.npmjs.org\n2606:4700::6810:522 registry.npmjs.org\n2606:4700::6810:122 registry.npmjs.org\n2606:4700::6810:722 registry.npmjs.org\n2606:4700::6810:b22 registry.npmjs.org\n2606:4700::6810:422 registry.npmjs.org\n2606:4700::6810:822 registry.npmjs.org\n2a04:4e42:600::223 pypi.org\n2a04:4e42::223  pypi.org\n2a04:4e42:200::223 pypi.org\n2a04:4e42:400::223 pypi.org\n--- dns test ---\n# Written by freestyle-vms when this rootfs was built. IPv6 first: a VM\n# is IPv6-only unless it asked for dual-stack.\nnameserver 2606:4700:4700::1111\nnameserver 2001:4860:4860::8888\nnameserver 8.8.8.8\nnameserver 8.8.4.4\n","type":"text"}]}
Thinking…

Interesting: www.relay.app resolves to relaydotapp.github.io — that's a GitHub Pages site for "relay.app"... Hmm, is that the workflow automation product Relay.app? Relay.app's actual site is www.relay.app. Let me fetch the content to see what it is.

Also api.relay.app doesn't resolve — that suggests either DNS allowlist or the API host is different (Relay.app's API is actually https://api.relay.app/api/...? Let me check docs).

Let me fetch the homepage content.

$ curl -sSL -m 15 https://relay.app/ | python3 -c "{"content":[{"text":" Relay.app is shutting down Log in An important update on Relay.app We have difficult news to share: Relay.app will be shutting down on Aug…ctrl+o
curl -sSL -m 15 https://relay.app/ | python3 -c "
import sys,re,html
t=sys.stdin.read()
t=re.sub(r'<script.*?</script>','',t,flags=re.S|re.I)
t=re.sub(r'<style.*?</style>','',t,flags=re.S|re.I)
t=re.sub(r'<[^>]+>',' ',t)
t=html.unescape(re.sub(r'\s+',' ',t))
print(t[:3000])
"

{"content":[{"text":" Relay.app is shutting down Log in An important update on Relay.app We have difficult news to share: Relay.app will be shutting down on August 15, 2026 for free users and September 14, 2026 for paying customers. We’ve worked closely with many of you for years, and we know this change will be disruptive. We are very sorry for the work this will cause you, and we don’t take it lightly, so our top priority is to make this transition as seamless as possible. Starting July 16 New signups and free-to-paid upgrades are now turned off. Everything you already use will continue working through the end of the wind-down window. Your workflows will keep running. You can export your data starting now (see ‘Taking your data with you’). If you’re on a free plan You have 30 days to keep using Relay.app and to export your data. After Sat Aug 15 at 23:59 PT , free accounts and all associated data will be permanently deleted. If you’re a paying customer You should have received an email from help@paddle.com that your subscription is cancelled, effective July 16. This means that you will not be charged again, but you will continue to be able to use Relay.app for free until Mon Sep 14 @ 23:59 PT. For annual customers, we will automatically initiate a prorated refund for the unused remainder of the current billing period. You should receive this refund within 5 business days. Your past invoices are available via this link . You keep full access to Relay.app, for free, for 60 days — through Mon Sep 14 at 23:59 PT . On top of your current plan, your workspace will receive an additional 25,000 steps and 10,000 AI credits per month for the next 60 days. This is free to help with the transition. You will not be charged for any usage during this period. After Mon Sep 14 at 23:59 PT , paid accounts and all associated data will be permanently deleted. Taking your data with you We have made it as straightforward as possible to take the important parts of your workspace with you. You can export: Workflows, Sequences and MCP servers as JSON and AI prompts so you can rebuild them elsewhere Run history Tables as CSVs There are more details on how to export data here . Your data and your privacy Customer content and product data that you do not export will be permanently deleted at the end of the wind-down window, consistent with our commitments to you. You can also manually delete your account from the settings page before this point. When your account is deleted, Relay.app’s stored credentials and tokens for connected apps will be deleted, and Relay.app will no longer access those apps. Technical support during the transition We will continue to provide technical support throughout the wind-down period. For help, contact us at support@relay.app . For paying customers, we will also offer priority support for transition-related questions. If your team has complex workflows or relies on Relay.app for business-critical operations, please reach out as early as possible so we can help y\n","type":"text"}]}
$ curl -sSL -m 15 https://relay.app/ | grep -oiE 'href="[^"]{0,120}"' | sort -u | head -40{"content":[{"text":"href=\"./\"\nhref=\"apple-touch-icon.png\"\nhref=\"favicon.png\"\nhref=\"https://customer-portal.paddle.com/cpl_01hfv834x8nx1jdne0eyhrzjb1\…ctrl+o
{"content":[{"text":"href=\"./\"\nhref=\"apple-touch-icon.png\"\nhref=\"favicon.png\"\nhref=\"https://customer-portal.paddle.com/cpl_01hfv834x8nx1jdne0eyhrzjb1\"\nhref=\"https://docs.relay.app/workspace-and-account/export-your-relay.app-data\"\nhref=\"https://fonts.googleapis.com\"\nhref=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Poppins:wght@500;600;700&display=swap\"\nhref=\"https://fonts.gstatic.com\"\nhref=\"https://relay.app/\"\nhref=\"https://run.relay.app/dashboard#/settings/account\"\nhref=\"https://run.relay.app/login?csrc=landing_sign_in\"\nhref=\"mailto:support@relay.app\"\nhref=\"style.css\"\n","type":"text"}]}
Thinking…

Big finding: Relay.app is shutting down. New signups are turned off (as of July 16). The app runs at run.relay.app — which doesn't resolve in this sandbox (DNS allowlist probably). And api.relay.app doesn't resolve.

So: I cannot build an example using Relay.app because:

  1. New signups are disabled → no account possible, and I have no credentials.
  2. The API/app hosts (run.relay.app, api.relay.app) don't resolve from this sandbox.
  3. Product is sunsetting — free accounts deleted Aug 15, 2026; paid Sept 14, 2026.

Per the user's instructions: "Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop."

Before stopping, let me verify the docs (docs.relay.app) to check pricing and confirm the API details, since docs.relay.app resolved to relay.app (200 → same shutdown page). Let's check docs paths quickly to gather pricing info — user asked "Tell me how pricing works". Let me check docs.relay.app pages.

Note docs.relay.app → 200 but url_effective https://relay.app/ — meaning docs subdomain redirected to the shutdown page? Actually docs.relay.app resolved to a Cloudflare IP different from github pages; the -L follow landed on relay.app/. So docs are gone too. Let me try a couple of doc URLs directly to confirm.

Also, should I consider other "Relay" products? The user said "Relay" without qualification. The strongest candidate given "hosted product, SDK/API, pricing" is Relay.app. But maybe I should check ambiguity briefly. Alternatives: Relay (GraphQL) — open source library, no pricing, no hosted product → the instruction "If this product has no developer workflow you can act on, say so plainly and stop" fits. Let me quickly verify docs reachability and then report.

Let me also verify that the api host truly isn't reachable and check whether there's a public API docs page cached. Quick checks only, don't over-invest.

$ for u in https://docs.relay.app/ https://docs.relay.app/api-reference https://docs.relay.app/pricing https://run.relay.app/ ; do printf "%s -> " "$u"; curl -sSL -m 12 -o /tmp/o.html -w "%{http_code} %…{"content":[{"text":"https://docs.relay.app/ -> 200 https://relay.app/ <title>Relay.app is shutting down\n\nhttps://docs.relay.app/api-reference -> 200 https://…ctrl+o
for u in https://docs.relay.app/ https://docs.relay.app/api-reference https://docs.relay.app/pricing https://run.relay.app/ ; do printf "%s -> " "$u"; curl -sSL -m 12 -o /tmp/o.html -w "%{http_code} %{url_effective} " "$u" 2>&1|tail -1; grep -oiE '<title>[^<]*' /tmp/o.html 2>/dev/null | head -1; echo; done

{"content":[{"text":"https://docs.relay.app/ -> 200 https://relay.app/ <title>Relay.app is shutting down\n\nhttps://docs.relay.app/api-reference -> 200 https://relay.app/ <title>Relay.app is shutting down\n\nhttps://docs.relay.app/pricing -> 200 https://relay.app/ <title>Relay.app is shutting down\n\nhttps://run.relay.app/ -> 200 https://relay.app/ <title>Relay.app is shutting down\n\n","type":"text"}]}
$ curl -sS -m 12 "https://relay.app/pricing" -o /dev/null -w "%{http_code}\n"; curl -sS -m 12 "https://relay.app/sitemap.xml" 2>&1 | head -c 400; echo; getent hosts run.relay.app api.relay.app || echo "…{"content":[{"text":"404\n<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initi…ctrl+o
curl -sS -m 12 "https://relay.app/pricing" -o /dev/null -w "%{http_code}\n"; curl -sS -m 12 "https://relay.app/sitemap.xml" 2>&1 | head -c 400; echo; getent hosts run.relay.app api.relay.app || echo "NO DNS for run/api.relay.app"

{"content":[{"text":"404\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <meta name=\"robots\" content=\"noindex\">\n\n  <meta http-equiv=\"refresh\" content=\"0; url=/\">\n\n  <title>Relay.app is shutting down</title>\n</head>\n<body>\n  <p>Relay.app is shutting down. <a href=\"/\">Read the announcement</a>.</p>\n</body>\n</html>\n\n2606:4700:3036::6815:3665 run.relay.app\n2606:4700:3034::ac43:a86e run.relay.app\nNO DNS for run/api.relay.app\n","type":"text"}]}
Thinking…

Confirmed: every Relay.app host (app, docs, run, api) now redirects to the shutdown notice. The product is being wound down; docs are gone; no API to call; signups disabled.

So I'm blocked. Report plainly and stop. Include:

  • What Relay is (the AI/human-in-the-loop workflow automation SaaS at relay.app) — assuming that's what they meant; note ambiguity briefly.
  • Pricing: from the shutdown notice details — historically freemium with paid tiers billed via Paddle, metered on "steps" and "AI credits" per month; annual plans prorated refund; subscriptions cancelled effective July 16 (2026?), free use through Sept 14 2026 with extra 25,000 steps + 10,000 AI credits/month. Note that the /pricing page 404s so I can't verify current tier numbers; I only have the wind-down notice. Be careful not to invent exact prices.
  • Dates: Aug 15, 2026 free users deleted; Sep 14, 2026 paid deleted; new signups off starting July 16.
  • Blocked reasons: no signup possible, no credentials in env, API host doesn't resolve, docs redirect to shutdown page.
  • Manageability assessment: it would have been moderately manageable via REST API/webhooks, but now moot — nothing to manage; and any build would be dead within weeks.
  • No local stacks started, no long-running commands — complied.
  • Offer alternative if they meant something else (Relay GraphQL, Relay payments/crypto relay.link, etc.) — ask which.

Keep it concise.

Blocked — stopping here

What I checked (no local stacks started, no long-running commands):

HostResult
relay.app200 — shutdown notice
docs.relay.app, docs.relay.app/api-reference, docs.relay.app/pricingall redirect → shutdown notice
run.relay.app (the app)redirects → shutdown notice
api.relay.appdoes not resolve
relay.app/pricing404

Relay.app is shutting down. Its entire web surface — app, docs, API — now serves one page:

  • New signups and free→paid upgrades turned off as of July 16
  • Free accounts + data permanently deleted Aug 15, 2026, 23:59 PT
  • Paid accounts + data permanently deleted Sep 14, 2026, 23:59 PT
  • Existing paid customers get free access until Sep 14, plus an extra 25,000 steps and 10,000 AI credits/month during wind-down

Why I can't build the example:

  1. Signups are closed, so no account can be created — and there are no Relay credentials in this environment (only PI_GATEWAY_API_KEY).
  2. The API hostname doesn't resolve from this sandbox, so even an existing key couldn't be exercised.
  3. The docs and API reference are gone (redirect to the shutdown page), so there's no spec to code against. I won't write an example from memory against an API that no longer answers.

Pricing (as far as I can verify): Relay.app was a freemium SaaS billed through Paddle, metered monthly on steps (workflow execution steps) and AI credits, with monthly and annual paid tiers; annual plans get an automatic prorated refund for the unused remainder. That's all the live site discloses — the pricing page itself 404s, so I can't confirm actual tier prices or limits, and I won't guess numbers.

Would it be easy for me to manage? Moot now, but for the record: it was a reasonable agent-managed product — hosted REST API, webhook triggers, JSON-exportable workflows — with the usual caveat that credential storage and human-in-the-loop approval steps live in a web UI I can't drive. Today there is nothing to manage, and anything built on it would be deleted within weeks.

If you meant a different "Relay", tell me which and I'll proceed: Relay (Meta's GraphQL client — a library, no pricing/hosted product), relay.link (crypto payments), Relay Health, etc. Or if you want the same job Relay.app did (workflow automation with human approval steps), name a live alternative and I'll build against that.

AX Fundamentals

23 checks. Open an area for details.

This check is a quick preview. Test more tasks and models with Gauge Agents.

Test your product with Gauge Agents

AX Check by Gauge