Skip to main content

freeride

Manages free AI models from OpenRouter for OpenClaw. Automatically ranks models by quality, configures fallbacks for rate-limit handling, and updates openclaw.json. Optional Groq, Gemini and Cerebras free tiers are opt-in. Use when the user mentions free AI, OpenRouter, model switching, rate limits, or wants to reduce AI costs.

Informações da origem

Repositório
Shaivpidadi/FreeRide
Última atividade na origem
24 de outubro de 2026 às 23:26
Idioma detectado do SKILL.md
inglês
Estrelas
238
Forks
40

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
freeride
version
1.1.0
description
Manages free AI models from OpenRouter for OpenClaw. Automatically ranks models by quality, configures fallbacks for rate-limit handling, and updates openclaw.json. Optional Groq, Gemini and Cerebras free tiers are opt-in. Use when the user mentions free AI, OpenRouter, model switching, rate limits, or wants to reduce AI costs.
env
[{"name":"OPENROUTER_API_KEY","description":"OpenRouter API key — get a free one at openrouter.ai/keys","required":true,"secret":true},{"name":"GROQ_API_KEY","description":"Optional, only used with --providers groq","required":false,"secret":true},{"name":"GEMINI_API_KEY","description":"Optional (GOOGLE_API_KEY also accepted), only used with --providers gemini --allow-training-providers","required":false,"secret":true},{"name":"GOOGLE_API_KEY","description":"Optional alias for GEMINI_API_KEY","required":false,"secret":true},{"name":"CEREBRAS_API_KEY","description":"Optional, only used with --providers cerebras","required":false,"secret":true}]
network
["openrouter.ai","api.groq.com (only with --providers groq)","generativelanguage.googleapis.com (only with --providers gemini)","api.cerebras.ai (only with --providers cerebras)"]
reads
["~/.openclaw/openclaw.json","~/.openclaw/.env (API keys, read only)"]
writes
[{"~/.openclaw/openclaw.json (keys":"agents.defaults.model.primary, agents.defaults.model.fallbacks, agents.defaults.models.<model-ref>; and auth.profiles.openrouter:default only with --setup-auth after confirmation)"},"~/.openclaw/openclaw.json.freeride-tmp (temporary, replaced atomically)","~/.openclaw/openclaw.json.freeride-bak (copy taken before every write)","~/.openclaw/.freeride-state.json (+ .freeride-tmp sibling)","~/.openclaw/.freeride-cache.json","~/.openclaw/.freeride-watcher-state.json (+ .tmp sibling)","~/.openclaw/freeride-watcher.log (only via the suggested nohup redirect)","~/.openclaw/ (created if missing)"]
never-writes
["API keys, anywhere","~/.openclaw/.env","auth-profiles.json"]
runs
["openclaw plugins list --json (read only, only with --providers)","openclaw models list --all --provider <id> --json (read only, only with --providers)"]
install
npx clawhub@0.23.3 --workdir ~/.openclaw/workspace install @shaivpidadi/free-ride --version 1.1.0 && cd ~/.openclaw/workspace/skills/@shaivpidadi/free-ride && pip install -e .
metadata
{"openclaw":{"emoji":"🎢","homepage":"https://github.com/Shaivpidadi/FreeRide","requires":{"env":"[Truncated]","bins":"[Truncated]","anyBins":"[Truncated]"},"primaryEnv":"OPENROUTER_API_KEY","envVars":["[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]"]}}
# FreeRide - Free AI for OpenClaw ## What This Skill Does Configures OpenClaw to use **free** AI models from OpenRouter. Sets the best free model as primary, adds ranked fallbacks so rate limits don't interrupt the user, and preserves existing config. ## Rules for the agent - **Never print, echo, log, or ask the user to paste an API key into chat.** Don't echo key variables, run `env` or `printenv`, or `cat ~/.openclaw/.env`. The user sets keys themselves. - To check whether a key is set, run `freeride status`. It shows keys masked (for example `sk-or-v1-...abcd`) or `NOT SET`. - Before running a command with `--setup-auth`, tell the user what it adds (see below) and only pass `--yes` once they agree. - Don't pass `--providers` or `--allow-training-providers` unless the user asked for those providers. For Gemini, tell the user Google may use free-tier prompts for training before passing `--allow-training-providers`. ## Prerequisites Before running any FreeRide command, ensure: 1. **OPENROUTER_API_KEY is set.** Check with `freeride status`. If it says `NOT SET`, the user gets a free key at https://openrouter.ai/keys and adds it themselves, in their editor, as a line in `~/.openclaw/.env`: ``` OPENROUTER_API_KEY=<their key> ``` (or exports it in their own shell). Do not type the key on a command line for them. 2. **The `freeride` CLI is installed.** Check with `which freeride`. If not found: ```bash cd ~/.openclaw/workspace/skills/@shaivpidadi/free-ride # older installs: ~/.openclaw/workspace/skills/free-ride pip install -e . ``` ## Primary Workflow When the user wants free AI, run these steps in order: ```bash # Step 1: Configure best free model + fallbacks freeride auto # Step 2: Restart gateway so OpenClaw picks up the changes openclaw gateway restart ``` That's it. The user now has free AI with automatic fallback switching. Verify by telling the user to send `/status` to check the active model. If the user already has a primary model they want to keep (for example a paid one), use `freeride auto -f` instead. FreeRide then marks that primary as theirs and never changes it. ## Commands Reference | Command | When to use it | |---------|----------------| | `freeride auto` | User wants free AI set up (most common). Saves their old primary first. | | `freeride auto -f` | User wants fallbacks but wants to keep their current primary model | | `freeride auto -c 10` | User wants more fallbacks (default is 5) | | `freeride list` | User wants to see available free models | | `freeride list -n 30` | User wants to see all free models | | `freeride switch <model>` | User wants a specific model (e.g. `freeride switch qwen3-coder`) | | `freeride switch <model> -f` | Add specific model as fallback only | | `freeride status` | Check current FreeRide configuration (keys shown masked) | | `freeride fallbacks` | Update only the fallback models | | `freeride refresh` | Force refresh the cached model list | | `freeride rotate` | User is rate-limited / fallback chain is dead — live-test and rebuild (only if FreeRide set the primary) | | `freeride restore` | Put back the primary and fallbacks from before FreeRide changed them (`--dry-run` to preview) | **After any command that changes config, always run `openclaw gateway restart`.** ## What It Writes FreeRide updates only these keys in `~/.openclaw/openclaw.json`: - `agents.defaults.model.primary` — e.g. `openrouter/qwen/qwen3-coder:free` - `agents.defaults.model.fallbacks` — e.g. `["openrouter/openrouter/free", "openrouter/nvidia/nemotron:free", ...]`. Fallbacks the user added themselves are kept, ahead of FreeRide's. - `agents.defaults.models.<model-ref>` — allowlist entries so `/model` shows the free models. Existing entries are left as they are. - `auth.profiles["openrouter:default"]` = `{"provider": "openrouter", "mode": "api_key"}` — **only** with `--setup-auth`, after FreeRide shows this entry and the user confirms (or `--yes`). It tells OpenClaw to use `OPENROUTER_API_KEY`; it contains no key. Everything else (gateway, channels, plugins, env, customInstructions, named agents) is preserved. Before every write FreeRide copies the file to `~/.openclaw/openclaw.json.freeride-bak` and writes the new file atomically. If `openclaw.json` has JSON5 comments or trailing commas, or uses `$include`, FreeRide refuses to write it and says why. Other files FreeRide writes, all under `~/.openclaw/`: - `.freeride-state.json` — which primary/fallbacks FreeRide set, and the user's previous ones (for `freeride restore`) - `.freeride-cache.json` — 6-hour cache of the OpenRouter model list - `.freeride-watcher-state.json` — watcher rotation count and last reason - temporary `*.freeride-tmp` / `*.tmp` siblings during atomic writes FreeRide **never** writes API keys, never writes `~/.openclaw/.env`, and never touches `auth-profiles.json`. The first fallback is always `openrouter/free` — OpenRouter's smart router that auto-picks the best available model based on the request. ## Who owns the primary - A primary set by `freeride auto`, `freeride switch`, `freeride rotate` or the watcher is FreeRide's. FreeRide may rotate it when it fails. - Any other primary (one the user set, a paid model, or one kept with `-f`) is the user's. FreeRide never tests it, never replaces it, and `freeride rotate` refuses to touch it. - `freeride restore` puts back what was there before and hands the primary back to the user. ## Optional providers (opt-in) OpenRouter free models stay the default. Only when the user asks, add more free tiers to the fallback chain: ```bash freeride auto --providers groq,cerebras freeride auto --providers groq,gemini --allow-training-providers # Gemini needs explicit consent freeride auto --providers openrouter # turn them off again ``` - **Groq** (`GROQ_API_KEY`): tool-capable models only, placed right after `openrouter/free`. - **Gemini** (`GEMINI_API_KEY` or `GOOGLE_API_KEY`): Flash / Flash-Lite / Gemma only. Google may use prompts on the free tier for training, so it also needs `--allow-training-providers`. - **Cerebras** (`CEREBRAS_API_KEY`): last in the chain, and only after a live tool-call check passes. For each one FreeRide checks that the OpenClaw plugin is loaded (`openclaw plugins list`) and that OpenClaw already lists the model ref (`openclaw models list --provider ...`). If not, it skips the provider and prints the `openclaw plugins install ...` command for the user to run. FreeRide does not install plugins and never selects a paid OpenRouter model. The choice is remembered for later runs and the watcher. `FREERIDE_PROVIDERS` / `FREERIDE_ALLOW_TRAINING` env vars work the same as the flags. ## Watcher (Background Daemon) For autonomous recovery from a "whole chain is rate-limited" deadlock — which the agent can't fix by itself, since calling `freeride rotate` requires inference and inference is exactly what's failing — the user can run a slim background daemon: ```bash # Foreground freeride-watcher # Persistent background (writes the log file ~/.openclaw/freeride-watcher.log) nohup freeride-watcher > ~/.openclaw/freeride-watcher.log 2>&1 & # One-shot check (no loop) freeride-watcher --once # State / history freeride-watcher --status ``` The daemon probes the current primary every 60s, but only if FreeRide set it; if it fails, it rebuilds the chain with live-verified models. A primary the user configured is left alone. Recommend this whenever the user is leaving an unattended OpenClaw setup running. ## Troubleshooting | Problem | Fix | |---------|-----| | `freeride: command not found` | `cd ~/.openclaw/workspace/skills/@shaivpidadi/free-ride && pip install -e .` | | `OPENROUTER_API_KEY not set` | User adds `OPENROUTER_API_KEY=...` to `~/.openclaw/.env` (key from https://openrouter.ai/keys) | | `... is not plain JSON` | The config has comments or trailing commas. The user removes them, then re-runs. Nothing was written. | | `rotate` says the primary is not FreeRide's | Expected for a user's own primary. `freeride auto` hands it to FreeRide (old one saved). | | Want the old model back | `freeride restore --dry-run`, then `freeride restore` | | Changes not taking effect | `openclaw gateway restart` then `/new` for fresh session | | Agent shows 0 tokens | Check `freeride status` — primary should be `openrouter/<provider>/<model>:free` |
Ver no GitHub