Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/shaivpidadi/freeridev3/freeridenpx skills add Shaivpidadi/FreeRideV3 --skill freeridegit clone --depth 1 https://github.com/Shaivpidadi/FreeRideV3Wrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/shaivpidadi/freeridev3/freeride)<a href="https://agentmods.dev/skills/shaivpidadi/freeridev3/freeride"><img src="https://agentmods.dev/badge/skills/shaivpidadi/freeridev3/freeride.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00137 | $0.01985 |
| Opus 5 | $0.00068 | $0.00992 |
| Sonnet 5 | $0.00027 | $0.00397 |
| Haiku 4.5 | $0.00014 | $0.00198 |
Grade C, and why
freeride scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Downloads and executes remote codehighSupply chain
curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.
- Install: `curl -sSL https://api.free-ride.xyz/install.sh | sh` Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
description: Use this skill when the user has FreeRide installed (binary at ~/.local/bin/freeride, gateway on http://localhost:11343) or asks how to route their AI workloads across free-tier providers. FreeRide is "Ollam How it starts
The opening of the file, as written. The whole thing — 175 lines — stays where its author put it; the contents beside it link to each section on GitHub.
FreeRide
FreeRide is a local gateway running on http://localhost:11343. It accepts
the OpenAI Chat Completions API and forwards to whichever free-tier provider
the user has keys for, failing over across providers and keys when one rate
limits or errors.
This skill teaches you (the agent) how to detect FreeRide, wire any OpenAI-shaped client against it, diagnose failures, and use its CLI.
Detect that FreeRide is running
In order, cheapest first:
- Health check —
curl -s http://localhost:11343/health. Returns{"ok": true, "version": "0.x.y", "providers": [...]}when up. - Process check —
lsof -iTCP:11343 -sTCP:LISTEN -n -P 2>/dev/nullorss -tlnp | grep 11343on Linux. - Config presence —
~/.freeride/config.jsonexists (means FreeRide was installed even if not currently running).
The port 11343 is hard-coded — FreeRide refuses to auto-pick a different
port because agent configs (Aider's OPENAI_API_BASE, Continue's
apiBase, etc.) are written against this exact value.
Wire any OpenAI-shaped client against it
export OPENAI_API_BASE=http://localhost:11343/v1
export OPENAI_API_KEY=any
The API key value is irrelevant — FreeRide doesn't authenticate inbound
requests; it uses the user's real provider keys (which it reads from env
vars like OPENROUTER_API_KEY) for outbound calls. Setting any,
unused, or any literal string works.
Python (openai SDK)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:11343/v1", api_key="any")
resp = client.chat.completions.create(
model="openrouter/free", # or any model from /v1/models
messages=[{"role": "user", "content": "hello"}],
)
curl
curl http://localhost:11343/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model": "openrouter/free", "messages": [{"role": "user", "content": "hi"}]}'
Streaming
"stream": true works. Server emits text/event-stream with data: {...}
chunks and a final data: [DONE]. The first chunk is buffered until
upstream confirms the stream is real — if upstream fails before the first
chunk, FreeRide retries on the next provider/key transparently. After the
first chunk has shipped, mid-stream errors propagate as a truncated stream.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 175 lines · 137 tokens per session scan C 127fbe3a28d6
freeride is a skill published in the GitHub repository Shaivpidadi/FreeRideV3 (41 stars, last pushed yesterday), licensed MIT. It adds 137 tokens to every session and 1,985 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it C with 2 findings (downloads and executes remote code, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
gpt-image-2-prompting
Prompt OpenAI's GPT Image 2 — the five-slot Scene/Subject/Details/Use case/Constraints template it responds to, the change-versus-preserve shape for edits, labelled multi-image compositing, and how to get text on an image to render verbatim. Use whenever the model id contains gpt-image-2 (openai/gpt-image-2…
qwen-image-prompting
Prompt Alibaba's Qwen-Image line for the typography work it is built for — quoting exact copy so the model stops inventing it, switching prompt expansion off before it rewrites your strings, describing layout in relative position and weight rather than point sizes, writing non-Latin scripts as characters, and…
seedream-prompting
Prompt ByteDance's Seedream 4 and 5 image line — the six-layer brief it reads in order, the word budget past which it starts dropping clauses, quoting in-image copy and placing it, pinning what must not change before an edit, addressing up to ten references by content instead of by index, and the size to iterate at…
stable-audio-prompting
Prompt Stability's Stable Audio line — the genre/instruments/mood/BPM order its training metadata expects, the TrackType and VocalType tags that separate music, stems and sound effects on Stable Audio 3, matching duration to what you described, which checkpoints guidancescale and step count actually affect, and…
flux-2-klein-prompting
Prompt Black Forest Labs' FLUX.2 [klein] — the subject/environment/style/technical hierarchy it processes in order, guidance-scale and step choices, negative prompts aimed at real failure modes, and the seed-locked one-variable-at-a-time loop its sub-second latency makes practical. Use whenever the model id contains…
hailuo-prompting
Prompt MiniMax's Hailuo video line — the chronological beat order it animates from, the fifteen bracketed camera commands the Director endpoints accept and the three-per-bracket rule, when to switch promptoptimizer off, why there is no negative prompt to fall back on, and prompting the delta on image-to-video. Use…