Skip to content
Back to skills

Token Broker Client

ASecurity

Brokered short-lived provider credentials client in matrx-frontend (`lib/api/broker/`). Use when browser code needs a provider realtime session, a direct provider call, an ephemeral token, or a provider API key in the browser or `NEXT_PUBLIC_*`. NOT for adding a new audience server-side (use aidream's token-broker).

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 3, 2026
ai-agentsgoapifrontend

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 3, 2026

npx -y skills add armanisadeghi/ai-matrx --skill token-broker-client --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Token Broker Client?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Token Broker Client
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/armanisadeghi-token-broker-client/badge)](https://www.skillsdirectory.com/skills/armanisadeghi-token-broker-client)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: token-broker-client
description: "Brokered short-lived provider credentials client in matrx-frontend (`lib/api/broker/`). Use when browser code needs a provider realtime session, a direct provider call, an ephemeral token, or a provider API key in the browser or `NEXT_PUBLIC_*`. NOT for adding a new audience server-side (use aidream's token-broker)."
---

# token-broker-client — consume brokered credentials

The primitive lives at **`lib/api/broker/`** (contract: its `FEATURE.md`; cross-repo system of record: `../common-docs/systems/architecture/token-broker/FEATURE.md`). It is complete — **consume it; never hand-roll a mint call, credential cache, or gateway fetch.**

## Decision gate — does the server support the audience?

Check `KNOWN_AUDIENCES` in `lib/api/broker/types.ts` and the live minter registry (aidream `services/token_broker/minters/`).

- **Supported** → consume through the primitive (below). Zero broker-infrastructure code.
- **NOT supported** (new provider/capability) → **STOP client-side.** The system grows **server-first**: follow the global `token-broker` skill (`~/.claude/skills/token-broker/SKILL.md`) — one minter + one registry line in aidream — then consume here through the unchanged primitive. Never work around a missing audience with client-side key handling.

## How to consume

```ts
import { brokeredFetch, resolveBrokeredTransport } from "@/lib/api/broker/transport";
import { useBrokeredCredential } from "@/lib/api/broker/hooks";

// Proxied audience (e.g. "anthropic") — provider-wire HTTP, streaming included:
const res = await brokeredFetch(
  { audience: "anthropic", tierPolicy: "none", model: "claude-sonnet-5" },
  "/v1/messages",
  { method: "POST", body: JSON.stringify(anthropicShapedBody) },
);

// Native audience (e.g. "openai_realtime") — connect directly per protocol:
const t = await resolveBrokeredTransport({ audience: "openai_realtime", tierPolicy: "none" });
if (t.mode === "native_ephemeral") connectRealtime(t.endpoint, t.token);

// Component that needs a continuously-fresh credential:
const { credential, status, error, refresh } = useBrokeredCredential(req);
```

Caching, in-flight dedup, refresh-ahead (<20% TTL), 401→one-re-mint, and sign-out clearing all happen inside the primitive — callers never manage credential lifetime.

## Non-negotiables

- **`tierPolicy` is explicit at every callsite** (`"none" | "guest" | "mid"`). Never add a default, wrapper-with-default, or omittable param.
- **Never persist or log a token.** Memory only. Never render `credential.token` — mask it (debug UIs use `useBrokerCacheSnapshot`, masked).
- **Never hardcode a gateway/provider URL** — `credential.endpoint` is the only source.
- **No provider key in client env** (`NEXT_PUBLIC_*` or otherwise). Finding one is a defect: replace it with a broker audience (server-first).
- **503 on mint = loud error** ("broker unconfigured"), never a silent fallback auth path, never a retry loop.

## Verify

Demo page `/demos/token-broker` (dev builds): mint per audience, cache inspector, live proxied Anthropic call, forced re-mint.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…