Autonomous A2A micro-service backend utilities.
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Documented (README)
- !No standard license detected
- !Install pipes a remote script into a shell (curl | sh)
git clone https://github.com/Its-fortunatefolly/HubVibeResumen de Tools
# HubVibe
**Machine-payable site compliance audits.** WCAG 2.1 A/AA, SEO, security
headers, and performance — deterministic rules against the real rendered page,
priced per call, payable by software with no account and no human in the loop.
Live: **https://hubvibe-io.com**
Every check is a deterministic rule run against the live page. Nothing here is
a language model judging whether a site looks compliant, and a check that could
not run is returned as an error, never as a passing result.
There are two ways in. Both take under a minute.
---
## 1 — Gate your CI on it: one step, nothing to install
```yaml
- uses: Its-fortunatefolly/HubVibe@v1
with:
url: https://staging.example.com
wallet-key: ${{ secrets.HUBVIBE_WALLET_KEY }}
```
That is the entire integration. Every pull request now runs the full
compliance bundle against your deployed preview and **fails the build on the
regression that caused it** — not in an audit six months later.
- Findings render in the job summary: rule, impact, nodes hit, link to the fix.
- A check that failed to *execute* is an error, never a silent pass — a green
build means the checks actually ran.
- `fail-on-error: false` keeps our outage from ever blocking your deploy;
your real regressions still gate it.
- **$0.10 per PR** for all four checks as one bundle, $0.03 for a single
check. A repo merging 100 PRs a month spends $10. No subscription, no seat
licence, no minimum.
Gate a promotion on it:
```yaml
- name: Audit staging
id: audit
uses: Its-fortunatefolly/HubVibe@v1
with:
url: https://staging.example.com
wallet-key: ${{ secrets.HUBVIBE_WALLET_KEY }}
- name: Promote to production
if: steps.audit.outputs.passed == 'true'
run: ./deploy-production.sh
```
`wallet-key` is an EVM private key funded with USDC on Base. The step reads the
402, signs, and pays for its own run — no account, no checkout, nothing to
provision first. `max-price-usd` (default `0.15`) is a hard ceiling the client
refuses to sign above, so fund the address like petty cash rather than a
treasury. It needs no ETH: x402 signs the transfer off-chain and the
facilitator pays the gas.
If you already hold a prepaid API key, pass `api-key:` instead of `wallet-key:`
and the step spends that.
## 2 — Point your agent at it: no key, no signup, pay per call
An unauthenticated call is not an error here. It is the price sheet:
```bash
curl -i -X POST https://hubvibe-io.com/audit/wcag \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
```
```
HTTP/1.1 402 Payment Required
WWW-Authenticate: Payment ...
{
"error": "payment_required",
"price_usd": 0.03,
"accepts": [ { "protocol": "x402", ... }, { "protocol": "mpp", ... } ],
"docs": "/.well-known/agent.json"
}
```
An agent reads the 402, signs an x402 payment (USDC on Base), retries with
`X-PAYMENT`, and gets the audit. Payment is **verified before the audit runs
and settled only after it produces a result** — a failed audit is never
charged: x402 is settled only once the audit has run (and a settlement the
facilitator refuses withholds the result and charges nothing), a prepaid key
is refunded, and an MPP credential a failed audit consumed is accepted again
on the retry.
For Python agents and swarms, the bundled tollbooth client does the whole
loop — challenge, budget check, signing, retry — with two hard spending
limits enforced *before* anything is signed:
```python
from integrations.hubvibe_tollbooth import HubVibeTollbooth
booth = HubVibeTollbooth.from_env() # HUBVIBE_WALLET_KEY or HUBVIBE_API_KEY
result = booth.audit("https://example.com") # full bundle, $0.10
result = booth.audit("https://example.com", endpoint="wcag") # $0.03
```
`accepts` lists only the payment rails that can genuinely settle on this
deployment. A rail that is not configured is omitted rather than advertised
with a null recipient, so a paying agent never builds a payment that cannot
land.
**How machines find this node without being told the URL:** every 402
carries x402 Bazaar discovery data, so the facilitator catalogs this node by
capability and price on the payment that settles through it — the spec has no
other ingestion path; the [`/mcp`](https://hubvibe-io.com/mcp) endpoint is
published in the official MCP registry as
`io.github.Its-fortunatefolly/hubvibe`;
and [`/.well-known/agent.json`](https://hubvibe-io.com/.well-known/agent.json)
is generated from the same catalog the routes charge from, so the advertised
price is the charged price by construction.
## Endpoints
| Route | Price | Checks |
|---|---|---|
| `POST /audit/wcag` | $0.03 | WCAG 2.1 A/AA via axe-core, against the rendered page |
| `POST /audit/seo` | $0.03 | Title, meta description, H1s, canonical, OpenGraph, structured data, lang |
| `POST /audit/security` | $0.03 | HTTPS, HSTS, CSP, X-Content-Type-Options, clickjacking, Referrer-Policy, CORS |
| `POST /audit/performance` | $0.03 | DOM nodes, transferred bytes, request count from one real page load |
| `POST /audit/bundle` | $0.10 | All four against one URL, billed once |
Body is `{"url": "..."}`; `wcag` and `seo` also accept raw `{"html": "..."}`.
## Paying
Three rails, all fail-closed — no valid credential means no audit runs:
- **`X-API-Key`** — prepaid key, bought with the MPP top-up rail where it is live
- **`X-PAYMENT`** — x402
- **`Authorization: Payment ...`** — MPP (Stripe Shared Payment Tokens for
fiat, or Tempo for crypto)
Which are live is deployment-specific. Read `accepts` in any 402, or
`payment.methods` in the agent manifest — both list only what actually works.
### What you are charged for
Only an audit that produced a result.
- An audit that could not run returns **502** with `billed: false` and is
never settled. x402 payments are *verified* to grant access but only
*settled* after the audit has delivered; a prepaid key debited for the
call is refunded, and a prepaid key bought by an MPP top-up is still
returned on the 502, holding everything it bought.
- A rate-limited request returns **429** with `Retry-After`, checked before any
payment is touched, so it costs nothing.
- A settled x402 payment gets a receipt: the facilitator's settle response
(transaction hash, network, payer) comes back on the 200 in the
`PAYMENT-RESPONSE` header (`X-PAYMENT-RESPONSE` for v1 clients), exactly
as the x402 spec describes. The x402 client libraries decode it; the
bundled `hubvibe_tollbooth.py` keeps it as `last_settlement`.
- One signed payment buys one audit. A replayed x402 authorization is
refused with a 402 before it reaches the facilitator.
### What this service will not fetch
Every audit loads the URL you send from inside the deployment, so the node
refuses, with a **400** and before any payment is read: addresses that are
not globally routable (loopback, private ranges, link-local, the cloud
metadata endpoint), internal hostnames, schemes other than `http`/`https`,
and names that do not resolve. Raw `html` is capped at 2 MiB. None of that
costs the caller anything.
## Discovery
Agents shouldn't have to read documentation to use this:
| | |
|---|---|
| [`/.well-known/agent.json`](https://hubvibe-io.com/.well-known/agent.json) | Full manifest — pricing, live rails, limits, per-endpoint examples |
| [`/openapi.json`](https://hubvibe-io.com/openapi.json) | OpenAPI 3.1 |
| [`/mcp.json`](https://hubvibe-io.com/mcp.json) | MCP tool definitions |
| [`/llms.txt`](https://hubvibe-io.com/llms.txt) | Plain-text summary |
| [`/docs`](https://hubvibe-io.com/docs) | Interactive reference |
## Integrations
In [`wcag-audit-engine/integrations/`](wcag-audit-engine/integrations/):
- **`mcp_server.py`** — MCP server exposing all five audits as tools, built on
the official SDK. Standalone, with its own `mcp_requirements.txt`: the `mcp`
package needs a newer Starlette than the deployed service pins for FastAPI,
so it is deliberately kept out of the service's dependency tree.
- **`langchain_tool.py`** — LangChain tool wrapper. Subscription key only; it
raises on a 402 rather than paying.
- **`hubvibe_tollbooth.py`** — the client for agents running unattended. Same
audits, but it settles the 402 itself from an EVM wallet via x402, so no
human has to go get a key. Enforces a per-call cap **and** a
process-lifetime budget, both before anything is signed — an autonomous
loop with an unbounded wallet is a drained wallet. Exposes LangChain/CrewAI
tools via `hubvibe_tools()`.
- **`github_action.yml`** — a complete, copyable workflow file. It *calls* the
published action rather than curl-ing the API: a hand-rolled HTTP step has
to re-implement the retry policy, the 4xx no-retry rule and the JSON
encoding of the target URL, and then be maintained against the API by
whoever pasted it. One file, one URL to edit, `on: push` and
`on: pull_request`.
At the repo root:
- **`action.yml`** — the composite GitHub Action, and the single copy of it.
It retries transient failures but never a 4xx (repeating a 402 on a metered
endpoint risks paying twice for one answer), renders findings into the job
summary via `scripts/render_audit_summary.py`, and can be adopted with
`fail-on-error: false` so an outage in this service cannot block someone
else's deploys.
- **`scripts/publish-action-repo.sh`** — generates the standalone repo the
Marketplace listing needs (see below).
- **`glama.json`** — listing metadata for the Glama MCP directory.
## For people, not pipelines
The machine API is the product, and per call is the only price: there are no
subscriptions or human plans (retired 2026-09-06). A person can pay the same
per-call rates through a $0.50 prepaid block where the MPP top-up rail is live.
There is deliberately **no free scan**: an audit costs a real browser page
load, so giving them away funds strangers' compute and invites abuse.
## Publishing the GitHub Action
Two separate things, with different rules:
**Direct use works today.Lo que la gente pregunta sobre HubVibe
¿Qué es Its-fortunatefolly/HubVibe?
+
Its-fortunatefolly/HubVibe es tools para el ecosistema de Claude AI. Autonomous A2A micro-service backend utilities. Tiene 2 estrellas en GitHub y su última actualización registrada es del 2026-09-12.
¿Cómo se instala HubVibe?
+
Puedes instalar HubVibe clonando el repositorio (https://github.com/Its-fortunatefolly/HubVibe) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar Its-fortunatefolly/HubVibe?
+
Nuestro agente de seguridad ha analizado Its-fortunatefolly/HubVibe y le ha asignado un Trust Score de 54/100 (tier: OK). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene Its-fortunatefolly/HubVibe?
+
Its-fortunatefolly/HubVibe es mantenido por Its-fortunatefolly. La última actividad registrada en GitHub es del 2026-09-12, con 0 issues abiertos.
¿Hay alternativas a HubVibe?
+
Sí. En ClaudeWave puedes explorar tools similares en /categories/tools, ordenados por popularidad o actividad reciente.
Despliega HubVibe en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/its-fortunatefolly-hubvibe)<a href="https://claudewave.com/repo/its-fortunatefolly-hubvibe"><img src="https://claudewave.com/api/badge/its-fortunatefolly-hubvibe" alt="Featured on ClaudeWave: Its-fortunatefolly/HubVibe" width="320" height="64" /></a>Más Tools
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
An AI skill that provides design intelligence for building professional UI/UX across multiple platforms.
🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman
CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies
The fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]
Use Claude Code, Codex, Pi, and OpenCode (and 6 other harnesses) for free (1.3B+ free tokens) from your terminal, app, IDE, or phone, and now from the browser with native browser sessions (multi-harness + multi-model) like OpenClaw (voice supported + ToS friendly)