Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
ZeroGPU avatar

Zerogpu Router

  • 75 repo stars
  • Updated July 29, 2026
  • zerogpu/zerogpu-router

Route classification, summarization, entity/PII/JSON extraction, follow-ups, and short chat to ZeroGPU small/nano models via 14 auto-invoked skills.

About

zerogpu-router routes classification, summarization, entity/PII/JSON extraction, follow-ups, and short chat to ZeroGPU small and nano models. It ships 14 auto-invoked skills so the agent can offload lightweight LLM tasks to cheaper, faster models automatically.

  • Routes to ZeroGPU small/nano models
  • Classification and summarization
  • Entity/PII/JSON extraction
  • 14 auto-invoked skills

Zerogpu Router by the numbers

  • Data as of Jul 30, 2026 (Skillselion catalog sync)
/plugin marketplace add zerogpu/zerogpu-router
/plugin install zerogpu-router@zerogpu

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
repo stars75
Last updatedJuly 29, 2026
Repositoryzerogpu/zerogpu-router

What it does

Route classification, summarization, entity/PII/JSON extraction, follow-ups, and short chat to ZeroGPU small/nano models via 14 auto-invoked skills.

README.md

ZeroGPU Router — Claude Code plugin

Offload cheap, well-defined NLP tasks (classification, summarization, entity & PII extraction, short chat) from Claude to ZeroGPU's edge-optimized small language models — directly from your Claude Code session.

Every command in the zerogpu CLI is exposed as a Claude Code skill. Claude auto-invokes the right skill when your request matches (e.g. "redact the PII in this paragraph", "summarize this article", "classify this by sentiment and topic"), or you can call any of them by name with /zerogpu-router:<skill>.


Installation

Prerequisites

Requirement Why Install
Node.js ≥ 20 Runs the zerogpu CLI nodejs.org
Claude Code Hosts the plugin npm install -g @anthropic-ai/claude-code
zerogpu CLI Skills shell out to it npm install -g zerogpu-cli
ZeroGPU account API key + Project ID zerogpu.ai

Verify the CLI is on your PATH:

zerogpu --version

1. Authenticate the CLI

zerogpu login

You'll be prompted (masked) for your API key (zgpu-api-…) and Project ID (UUID). Credentials are persisted locally and ZEROGPU_API_KEY is added to your shell profile.

For CI / non-interactive setups:

zerogpu login \
  --api-key zgpu-api-XXXXXXXXXXXXXXXXXX \
  --project-id 4ed3e5bb-c2ed-4d4a-8a66-2b161a27fd1a

Check status anytime:

zerogpu status

2. Install the Claude Code plugin

Start a Claude Code session by running claude in your terminal, then add this repo as a marketplace and install:

/plugin marketplace add zerogpu/zerogpu-router
/plugin install zerogpu-router@zerogpu
/reload-plugins

Confirm it's loaded:

/plugin

Expected output includes:

zerogpu-router — enabled

You're ready to go.


Quick start

Once installed, try any of these directly in Claude Code:

Auto-invoked (just ask)

Claude picks the right skill based on what you say:

Redact PII from this support ticket before I paste it into our public bug tracker:

Hi team — this is Sarah Chen (sarah.chen@northwind-labs.com, +1 415-555-0182).
Our prod database started throwing connection timeouts around 2:14 AM PT last
night. The on-call engineer Marcus Rivera (slack: @mrivera) restarted the
pgbouncer pod but the issue came back within 20 minutes. Billing should go to
our CFO Priya Patel at priya.patel@northwind-labs.com, billing address 1455
Market St, Suite 600, San Francisco, CA 94103. Please call me back at the
number above.

→ Claude routes to redact-pii. Names, emails, phone numbers, social handles, and street addresses come back replaced by uppercase label placeholders like [PERSON], [EMAIL], [PHONE_NUMBER], [ADDRESS] — safe to paste into a public tracker, and the raw PII never enters Claude's context window. Project-specific identifiers (internal hostnames, IPs, contract numbers, card last-fours) aren't in the model's label set — strip those yourself or use /zerogpu-router:extract-entities with custom labels.

Pull all the email addresses and phone numbers out of this:
"Reach Maria at maria@acme.io or 415-555-0188"

→ Claude routes to extract-pii.

Classify this support ticket by sentiment and topic:
"Support replied quickly but the fix didn't work"

→ Claude routes to classify-structured with an appropriate schema.

Manual invocation

Call any skill explicitly with /zerogpu-router:<name> <args>:

/zerogpu-router:classify-zero-shot "I love how fast this laptop boots up." -l positive -l negative -l neutral
/zerogpu-router:redact-pii "Email John Smith at john@acme.com about invoice 12345."
/zerogpu-router:extract-json "Reach Maria Lopez at maria.lopez@acme.io or 415-555-0188." \
  -s '{"contact":["name::str::Full name","email::str::Email address","phone::str::Phone number"]}'

Skills in detail

Each skill below documents what it does, which ZeroGPU model it runs, how to invoke it, what arguments it accepts, and what the output looks like. All inference skills auto-invoke when Claude detects a matching request; signin, status, and cost-savings are manual-only.

/zerogpu-router:signin

Sign in to ZeroGPU and persist your credentials so every subsequent skill call works without re-prompting.

  • Manual only (not auto-invoked by Claude)
  • Wraps: zerogpu login

Synopsis

/zerogpu-router:signin [--api-key <key>] [--project-id <id>]

Arguments

Flag Required Description
--api-key <key> optional API key. Must start with zgpu-api-. If omitted, you'll be prompted (masked).
--project-id <id> optional Project ID (UUID v4). If omitted, you'll be prompted.

Example

/zerogpu-router:signin

On success the API key + Project ID are written to your config file, and ZEROGPU_API_KEY is added to your shell profile so other tools can pick it up.


/zerogpu-router:status

Show your current ZeroGPU sign-in status and the masked API key.

  • Manual only
  • Wraps: zerogpu status

Example

/zerogpu-router:status

Exit code is 0 when signed in, 1 when not. If you're not signed in, run /zerogpu-router:signin.


/zerogpu-router:cost-savings

Show how much you've saved by routing trivial tasks to ZeroGPU instead of Claude.

  • Manual only
  • Wraps: zerogpu cost_savings

Example

/zerogpu-router:cost-savings

Output (illustrative)

💰 ZeroGPU Cost Savings
───────────────────────
Saved so far:     ~$2.14
Tokens offloaded: ≈ 430,120 Claude tokens
Routed calls:     58
Avg per call:     ~$0.04
Since:            Apr 12, 2026

By model:
  llama-3.1-8b-instruct-fast  —  20 calls, ~$1.20, 210K tok
  gliner2-base-v1             —  18 calls, ~$0.61, 120K tok
  ...

Every routed call (chat, classify, extract, redact, summarize, …) records the Claude tokens it offloaded and the dollars saved, persisted in ~/.zerogpu/savings.json alongside your credentials. Token counts and ZeroGPU costs are actual (real per-model ZeroGPU rates × the API's usage report). The dollar savings is the Claude spend avoided: what those exact tokens would have cost on Claude minus the real ZeroGPU cost. The Claude baseline defaults to claude-opus-4-8 and is overridable via the ZEROGPU_SAVINGS_MODEL environment variable (e.g. claude-sonnet-4-6).

You don't have to ask: after some responses a short 💰 ZeroGPU savings so far: … note appears automatically on a balanced cadence (≈ once every 4–5 routed calls, never twice in a row) so the running total stays visible without nagging.

Pass --json for the raw data, or --reset to clear the history.


/zerogpu-router:chat

Short, single-turn chat reply for things that don't need Claude-level reasoning or conversation context.

  • Model: LFM2.5-1.2B-Instruct
  • Wraps: zerogpu chat
  • When Claude auto-invokes: quick factual answers, one-liners, basic rephrasings where you've signalled "use a small model."

Synopsis

/zerogpu-router:chat <text> [-i <instructions>]

Arguments

Name Required Description
text yes The user message / prompt (quoted).
-i, --instructions <instructions> optional System instructions to steer behavior.

Example

/zerogpu-router:chat "Explain WebSockets in two sentences." -i "You are a concise technical writer."

Output: raw assistant text (or pretty-printed JSON if the model returned one).


/zerogpu-router:chat-thinking

Same as chat, but the model returns its reasoning trace alongside the answer.

  • Model: LFM2.5-1.2B-Thinking
  • Wraps: zerogpu chat_thinking
  • When Claude auto-invokes: short logic / math / word-problem questions where step-by-step reasoning is useful.

Synopsis

/zerogpu-router:chat-thinking <text>

Example

/zerogpu-router:chat-thinking "If a train leaves at 3 PM going 60 mph, when does it cover 150 miles?"

/zerogpu-router:classify-iab

Classify text against the IAB content / audience taxonomy (standard ad-tech category labels).

  • Model: zlm-v1-iab-classify-edge
  • Wraps: zerogpu classify_iab
  • When Claude auto-invokes: "what IAB category is this?", "tag this article for ad targeting", "give me the topic taxonomy."

Synopsis

/zerogpu-router:classify-iab <text>

Example

/zerogpu-router:classify-iab "The Lakers signed a new point guard ahead of the playoffs."

Output (illustrative)

{
  "categories": [
    { "id": "IAB17-44", "name": "Basketball", "confidence": 0.97 }
  ]
}

/zerogpu-router:classify-iab-enriched

Enriched IAB classification — audience categories plus topics, keywords, and inferred user intent.

  • Model: zlm-v1-iab-classify-edge-enriched
  • Wraps: zerogpu classify_iab_enriched
  • When Claude auto-invokes: "give me topics, keywords, and intent", richer ad/audience signals than plain IAB labels.

Synopsis

/zerogpu-router:classify-iab-enriched <text>

Example

/zerogpu-router:classify-iab-enriched "Compare the Tesla Model Y and the Hyundai Ioniq 5 for a family of four."

Output (illustrative)

{
  "categories": [{ "id": "IAB2-1", "name": "Auto Buyers", "confidence": 0.92 }],
  "topics": ["electric vehicles", "family cars"],
  "keywords": ["Tesla Model Y", "Hyundai Ioniq 5"],
  "intent": "comparison-shopping"
}

/zerogpu-router:classify-zero-shot

Zero-shot classification against an arbitrary list of candidate labels you supply.

  • Model: deberta-v3-small
  • Wraps: zerogpu classify_zero_shot
  • When Claude auto-invokes: "is this positive, negative, or neutral?", "tag this as bug, feature, or question."

Synopsis

/zerogpu-router:classify-zero-shot <text> (-l <label>...) | (--labels a,b,c)

Arguments

Name Required Description
text yes Text to classify (quoted).
-l <label> one of -l / --labels A single label. Repeatable.
--labels <a,b,c> one of -l / --labels Comma-separated label list.

Example

/zerogpu-router:classify-zero-shot "I love how fast this laptop boots up." -l positive -l negative -l neutral

Output (illustrative)

{ "label": "positive", "scores": { "positive": 0.94, "neutral": 0.04, "negative": 0.02 } }

/zerogpu-router:classify-structured

Schema-driven, multi-axis classification — one chosen label per category.

  • Model: gliner2-base-v1
  • Wraps: zerogpu classify_structured
  • When Claude auto-invokes: "classify by sentiment and topic", any request that names multiple classification dimensions with explicit label sets.

Synopsis

/zerogpu-router:classify-structured <text> -s '<json schema>'

Arguments

Name Required Description
text yes Text to classify.
-s, --schema <json> yes JSON object mapping each category to its allowed labels.

Example

/zerogpu-router:classify-structured "Support replied quickly but the fix didn't work." \
  -s '{"sentiment":["positive","negative","neutral"],"topic":["support","billing","product"]}'

Output (illustrative)

{ "sentiment": "negative", "topic": "support" }

/zerogpu-router:extract-entities

Custom-label named-entity recognition. You define the entity labels; the model finds spans.

  • Model: gliner2-base-v1
  • Wraps: zerogpu extract_entities
  • When Claude auto-invokes: "extract all people, organizations, and locations from this", "find every product mention."

Synopsis

/zerogpu-router:extract-entities <text> (-l <label>... | --labels a,b,c) [-t <0..1>]

Arguments

Name Required Default Description
text yes Source text.
-l <label> / --labels <a,b,c> yes (one) Entity labels to extract.
-t, --threshold <number> optional 0.3 Minimum confidence in [0, 1].

Example

/zerogpu-router:extract-entities "Apple CEO Tim Cook met with Sundar Pichai in Cupertino on Monday." \
  --labels person,organization,location -t 0.4

Output (illustrative)

[
  { "label": "organization", "text": "Apple", "score": 0.98 },
  { "label": "person", "text": "Tim Cook", "score": 0.97 },
  { "label": "person", "text": "Sundar Pichai", "score": 0.96 },
  { "label": "location", "text": "Cupertino", "score": 0.91 }
]

/zerogpu-router:extract-pii

Extract personally identifiable information entities, grouped by category, without modifying the source text.

  • Model: gliner-multi-pii-v1
  • Wraps: zerogpu extract_pii
  • When Claude auto-invokes: "find all PII", "what personal info is in this?", "list emails/phones/names."

Synopsis

/zerogpu-router:extract-pii <text> [-t <threshold>] [(-c | --categories) <list>]

Arguments

Name Required Default Description
text yes Source text.
-t, --threshold <number> optional 0.5 Minimum confidence.
-c, --categories <list> optional identity,contact Comma-separated. Other values: financial, medical, credentials.

Example

/zerogpu-router:extract-pii "Contact Jane Doe at jane@example.com or +1 (415) 555-1212." -t 0.6 -c identity,contact,financial

Output (illustrative)

[
  { "category": "identity", "label": "person", "text": "Jane Doe", "score": 0.96 },
  { "category": "contact",  "label": "email",  "text": "jane@example.com", "score": 0.99 },
  { "category": "contact",  "label": "phone",  "text": "+1 (415) 555-1212", "score": 0.95 }
]

If you want to mask PII inline rather than extract it, use /zerogpu-router:redact-pii instead.


/zerogpu-router:redact-pii

Detect PII and replace each span in-line with a [LABEL] placeholder. Use this before sharing or logging sensitive text.

  • Model: gliner-multi-pii-v1 (with mask: "label")
  • Wraps: zerogpu redact_pii
  • When Claude auto-invokes: "redact", "scrub", "mask", "anonymize", or "sanitize this for sharing."

Synopsis

/zerogpu-router:redact-pii <text>

Example

/zerogpu-router:redact-pii "Email John Smith at john@acme.com about invoice 12345."

Output

Email [PERSON] at [EMAIL] about invoice 12345.

/zerogpu-router:extract-json

Pull specific named fields out of free text into a structured JSON object, defined by a per-field schema.

  • Model: gliner2-base-v1
  • Wraps: zerogpu extract_json
  • When Claude auto-invokes: "extract the contact info as JSON", "parse this invoice", "pull these fields out."

Synopsis

/zerogpu-router:extract-json <text> -s '<json schema>'

Schema syntax: each field is name::type::description.

Example

/zerogpu-router:extract-json "Reach Maria Lopez at maria.lopez@acme.io or 415-555-0188." \
  -s '{"contact":["name::str::Full name","email::str::Email address","phone::str::Phone number"]}'

Output (illustrative)

{
  "contact": {
    "name": "Maria Lopez",
    "email": "maria.lopez@acme.io",
    "phone": "415-555-0188"
  }
}

/zerogpu-router:summarize

Condense a passage into a short summary.

  • Model: llama-3.1-8b-instruct-fast
  • Wraps: zerogpu summarize
  • When Claude auto-invokes: "summarize", "TL;DR", "give me the gist", "condense this."

Synopsis

/zerogpu-router:summarize <text>

Example

/zerogpu-router:summarize "The board met Thursday to review Q3 results. Revenue rose 18% \
year-over-year to $42M, driven mainly by enterprise renewals and a strong launch in the EU \
market. Operating margin slipped to 11% from 14% as headcount grew 30% ahead of the new \
data-center buildout. The CFO flagged rising cloud costs as the top risk for Q4 and proposed \
a hiring freeze on non-engineering roles until margins recover. The board approved the freeze \
and asked for a revised 2025 budget by mid-December."

Output (illustrative)

Q3 revenue grew 18% YoY to $42M on enterprise renewals and EU growth, but operating margin
fell to 11% due to a 30% headcount increase for the data-center buildout. Citing cloud costs
as the main Q4 risk, the board approved a hiring freeze on non-engineering roles and requested
a revised 2025 budget by mid-December.

Skills reference

Quick lookup table — all 14 skills at a glance.

Skill Purpose Example
/zerogpu-router:signin Sign in and persist API key + Project ID (manual only) /zerogpu-router:signin
/zerogpu-router:status Show current sign-in status (manual only) /zerogpu-router:status
/zerogpu-router:cost-savings Show cumulative savings vs. Claude (manual only) /zerogpu-router:cost-savings
/zerogpu-router:chat <text> Short chat reply via LFM2.5-1.2B-Instruct /zerogpu-router:chat "Explain WebSockets in two sentences."
/zerogpu-router:chat-thinking <text> Chat with the Thinking variant (returns reasoning) /zerogpu-router:chat-thinking "If a train leaves at 3 PM going 60 mph, when does it cover 150 miles?"
/zerogpu-router:classify-iab <text> IAB taxonomy classification /zerogpu-router:classify-iab "The Lakers signed a new point guard."
/zerogpu-router:classify-iab-enriched <text> IAB + topics/keywords/intent /zerogpu-router:classify-iab-enriched "Compare the Tesla Model Y and Hyundai Ioniq 5."
/zerogpu-router:classify-zero-shot <text> -l … Zero-shot against custom labels /zerogpu-router:classify-zero-shot "fast laptop" -l positive -l negative
/zerogpu-router:classify-structured <text> -s '…' Schema-based multi-axis classification /zerogpu-router:classify-structured "ticket text" -s '{"sentiment":["positive","negative"]}'
/zerogpu-router:extract-entities <text> -l … Custom-label NER /zerogpu-router:extract-entities "Tim Cook met Sundar Pichai in Cupertino." -l person -l location
/zerogpu-router:extract-pii <text> Extract PII entities (returns JSON) /zerogpu-router:extract-pii "Contact Jane at jane@example.com"
/zerogpu-router:redact-pii <text> Mask PII in-line with [LABEL] placeholders /zerogpu-router:redact-pii "Email John at john@acme.com"
/zerogpu-router:extract-json <text> -s '…' Schema-driven JSON extraction /zerogpu-router:extract-json "..." -s '{"contact":["name::str::Full name"]}'
/zerogpu-router:summarize <text> Summarize with llama-3.1-8b-instruct-fast /zerogpu-router:summarize "The board met Thursday to review Q3 results..."

For full flag reference (thresholds, categories, schema syntax), run zerogpu <command> --help.


Troubleshooting

Symptom Likely cause Fix
zerogpu: command not found CLI not installed or not on PATH npm install -g zerogpu-cli, then restart your shell
Skill returns "You're not signed in yet." No credentials Run /zerogpu-router:signin
/zerogpu-router:* skills don't appear in /help Plugin not enabled Run /plugin and enable zerogpu-router
Request failed with status 401 Bad / revoked API key Re-run /zerogpu-router:signin
Request failed with status 429 Rate limited Back off and retry

Additional documentation

License

MIT — see LICENSE at the repo root.

Related skills

AI & Agent Buildingllmautomationagents

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.