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.

소스 정보

저장소
Shaivpidadi/FreeRide
최근 소스 활동
2026년 10월 24일 23:26
감지된 SKILL.md 언어
영어
스타
238
포크
40

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
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` |
GitHub에서 보기