From d286f35a4cae9858e4982e09fd9be95496d40d0b Mon Sep 17 00:00:00 2001 From: 0xzr <111210386+0xzr@users.noreply.github.com> Date: Tue, 16 Jun 2026 23:40:48 -0400 Subject: [PATCH 1/7] add metaswarm review adapter integration --- CHANGELOG.md | 6 + README.md | 4 +- docs/AGENTS.md | 14 + docs/INTEGRATIONS.md | 20 + docs/index.html | 1 + docs/llms.txt | 2 +- integrations/metaswarm/README.md | 112 ++++ .../metaswarm/freellmpool-review-adapter.sh | 613 ++++++++++++++++++ tests/test_metaswarm_integration.py | 102 +++ 9 files changed, 872 insertions(+), 2 deletions(-) create mode 100644 integrations/metaswarm/README.md create mode 100755 integrations/metaswarm/freellmpool-review-adapter.sh create mode 100644 tests/test_metaswarm_integration.py diff --git a/CHANGELOG.md b/CHANGELOG.md index af296e1..bba341a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/), and the project aims to follow [Semantic Versioning](https://semver.org/). +## [Unreleased] + +### Added +- Experimental metaswarm review adapter integration, with setup docs and no-key + smoke coverage for fail-closed `auth_missing` behavior. + ## [0.11.4] — 2026-06-17 MCP Registry verification metadata release. diff --git a/README.md b/README.md index 420e7b2..968c2bf 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,9 @@ Endpoints: `/v1/chat/completions` (token streaming, tool calling), `/v1/embeddin `/v1/audio/transcriptions` (Whisper, multipart upload), `/v1/responses`, `/v1/messages`, `/v1/models`, and a `/dashboard` page showing usage. Setup snippets for specific tools are in [docs/INTEGRATIONS.md](docs/INTEGRATIONS.md) -and [docs/AGENTS.md](docs/AGENTS.md). +and [docs/AGENTS.md](docs/AGENTS.md). The repo also includes an experimental +[metaswarm review adapter](integrations/metaswarm) for using `freellmpool` as an +external-tools reviewer/second opinion. ## As a library diff --git a/docs/AGENTS.md b/docs/AGENTS.md index 85f2f66..92b923d 100644 --- a/docs/AGENTS.md +++ b/docs/AGENTS.md @@ -62,6 +62,20 @@ codex --config model_provider=openai # or set base URL in ~/.codex/config.toml > running Codex/agents on free inference for everyday coding; tool-calling and > richer Responses features are a work in progress. +## Metaswarm external-tools review + +Metaswarm can use `freellmpool` as a review-only external tool. The integration +is in [`integrations/metaswarm`](../integrations/metaswarm): copy +`freellmpool-review-adapter.sh` into `.metaswarm/adapters/freellmpool.sh`, then +add it to `.metaswarm/external-tools.yaml` with roles `review` and +`second_opinion`. + +The adapter is deliberately not an implementer. It reviews a worktree diff +against a spec/rubric, runs a configurable strong-model panel through +`freellmpool`, and emits a metaswarm-style JSON envelope. If no strong provider +key is configured (`MISTRAL_API_KEY`, `NVIDIA_API_KEY`, or `OPENROUTER_API_KEY` +by default), it returns `error_type: "auth_missing"` before any provider call. + ## aider (AI pair programming in your terminal) ```bash diff --git a/docs/INTEGRATIONS.md b/docs/INTEGRATIONS.md index 3cd53b1..b282ef9 100644 --- a/docs/INTEGRATIONS.md +++ b/docs/INTEGRATIONS.md @@ -45,6 +45,26 @@ spread quota). Full guide: What you can do with it
  • Use free LLMs from the command line: freellmpool ask "...", pipe stdin, pin a provider/model.
  • Drop-in OpenAI replacement: point OPENAI_BASE_URL at freellmpool proxy; existing code is unchanged.
  • Run coding agents for free: freellmpool code claude (also codex, aider, cline, continue, cursor) routes them to pooled free models — see the step-by-step guide.
  • +
  • Add model-pool review to metaswarm: use the experimental metaswarm adapter as a review-only external tool.
  • Async + library: from freellmpool import Pool, AsyncPool.
  • MCP server: freellmpool mcp lets Claude Desktop/Code/Cursor offload subtasks to free models.
  • Pick the fastest tier: freellmpool benchmark + latency-aware routing.
  • diff --git a/docs/llms.txt b/docs/llms.txt index e44db27..dbf1d3c 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -14,7 +14,7 @@ - [Landing page / FAQ](https://0xzr.github.io/freellmpool/): what it is, how it compares, frequently asked questions. - [Capacity & provider health](https://github.com/0xzr/freellmpool/blob/main/docs/CAPACITY.md): capacity status, health checks, key inventory, external catalog. Guide: https://0xzr.github.io/freellmpool/capacity-management.html - [CHANGELOG](https://github.com/0xzr/freellmpool/blob/main/CHANGELOG.md): release history. -- [Integrations](https://github.com/0xzr/freellmpool/blob/main/docs/INTEGRATIONS.md): opencode, aider, Continue, Cline, Cursor, Open WebUI, LangChain, LlamaIndex, and more. +- [Integrations](https://github.com/0xzr/freellmpool/blob/main/docs/INTEGRATIONS.md): opencode, metaswarm review adapter, aider, Continue, Cline, Cursor, Open WebUI, LangChain, LlamaIndex, and more. - [Run OpenCode on free models](https://0xzr.github.io/freellmpool/run-opencode-on-free-models.html): OpenCode setup with an embedded TUI dashboard, quality routing (auto/fast/quality/fair), and usage tools. - [MCP server](https://github.com/0xzr/freellmpool/blob/main/docs/MCP.md): use free models from Claude Desktop/Code/Cursor. diff --git a/integrations/metaswarm/README.md b/integrations/metaswarm/README.md new file mode 100644 index 0000000..b3bbba9 --- /dev/null +++ b/integrations/metaswarm/README.md @@ -0,0 +1,112 @@ +# freellmpool review adapter for metaswarm + +This integration lets metaswarm use `freellmpool` as an independent +review/second-opinion tool in an `external-tools` workflow. + +The adapter is **review-only**. `freellmpool` routes prompts to model providers; +it does not own a worktree-editing contract, so implementation should stay with +your coding agents while `freellmpool` supplies adversarial review. + +## Install + +Copy the adapter into your project and make it executable: + +```sh +mkdir -p .metaswarm/adapters +cp integrations/metaswarm/freellmpool-review-adapter.sh .metaswarm/adapters/freellmpool.sh +chmod +x .metaswarm/adapters/freellmpool.sh +``` + +Install `freellmpool` where metaswarm can run it: + +```sh +python -m pip install freellmpool +``` + +Configure at least one strong review provider. The default panel looks for +Mistral, NVIDIA, or OpenRouter credentials: + +```sh +export MISTRAL_API_KEY=... +export NVIDIA_API_KEY=... +export OPENROUTER_API_KEY=... +``` + +Alternatively use `freellmpool keys add ` and keep the generated key +inventory on the same machine that runs metaswarm. + +## Metaswarm config + +Add a review adapter entry to `.metaswarm/external-tools.yaml`: + +```yaml +adapters: + freellmpool: + enabled: true + roles: ["review", "second_opinion"] + adapter_path: ".metaswarm/adapters/freellmpool.sh" + model: "strong-long-context" + routing: "quality" + review_mode: "strong" + strong_providers: ["mistral", "nvidia", "openrouter"] + strong_models: + - "nvidia/moonshotai/kimi-k2.6" + - "nvidia/z-ai/glm-5.1" + - "nvidia/mistralai/mistral-large-3-675b-instruct-2512" + - "mistral/mistral-large-latest" + - "nvidia/nvidia/nemotron-3-ultra-550b-a55b" + - "openrouter/nvidia/nemotron-3-ultra-550b-a55b:free" + - "openrouter/openai/gpt-oss-120b:free" + max_models: 7 + max_tokens: 65536 + provider_timeout_seconds: 600 + synthesis_timeout_seconds: 600 + timeout_seconds: 0 + sandbox: none + +routing: + review_order: ["freellmpool"] + second_opinion: "freellmpool" +``` + +The exact model list is intentionally configurable. Free-tier provider health +changes, so override `FREELLMPOOL_STRONG_MODELS` or the YAML value when a model is +slow, unavailable, or no longer useful for review. + +## Commands + +The adapter implements the metaswarm-style command surface: + +```sh +.metaswarm/adapters/freellmpool.sh health + +.metaswarm/adapters/freellmpool.sh review \ + --worktree /path/to/worktree \ + --rubric-file /path/to/rubric.md \ + --spec-file /path/to/spec.md \ + --timeout 600 +``` + +Every command returns a JSON envelope with the tool name, command, exit code, +raw log path, and `error_type` when a failure is classified. + +When no strong provider key is configured, `review` fails closed with +`error_type: "auth_missing"` before making provider calls. The raw log lists the +required environment variable names but not secret values. + +## Environment + +| Variable | Purpose | +| --- | --- | +| `FREELLMPOOL_CMD` | Path to the `freellmpool` executable. | +| `FREELLMPOOL_REVIEW_MODE` | `strong` (default), `tokenmax`, or `ask`. | +| `FREELLMPOOL_STRONG_MODELS` | Comma-separated exact provider/model ids for strong mode. | +| `FREELLMPOOL_STRONG_PROVIDERS` | Provider ids that must be configured for ready health. | +| `FREELLMPOOL_MAX_MODELS` | Model cap for strong/tokenmax review. | +| `FREELLMPOOL_MAX_TOKENS` | Max output tokens per model. | +| `FREELLMPOOL_PROVIDER_TIMEOUT_SECONDS` | Per-model upstream timeout. | +| `FREELLMPOOL_SYNTHESIS_TIMEOUT_SECONDS` | Synthesis call timeout. | +| `METASWARM_LOG_DIR` | Directory for raw review logs. | + +Use provider keys from your environment (`MISTRAL_API_KEY`, `NVIDIA_API_KEY`, +`OPENROUTER_API_KEY`) or from `freellmpool keys add`. diff --git a/integrations/metaswarm/freellmpool-review-adapter.sh b/integrations/metaswarm/freellmpool-review-adapter.sh new file mode 100755 index 0000000..e75e1b7 --- /dev/null +++ b/integrations/metaswarm/freellmpool-review-adapter.sh @@ -0,0 +1,613 @@ +#!/usr/bin/env bash +# freellmpool review adapter for metaswarm external-tools. +# +# Commands: +# health report local freellmpool availability and configured strong providers +# review review a worktree diff against a rubric/spec and emit a JSON envelope +# implement unsupported; freellmpool is a router, not a worktree-editing agent + +set -euo pipefail + +SCHEMA_VERSION="1" +TOOL_NAME="${FREELLMPOOL_ADAPTER_NAME:-freellmpool}" +TOOL_CMD="${FREELLMPOOL_CMD:-freellmpool}" +DEFAULT_MODEL="${FREELLMPOOL_MODEL:-strong-long-context}" +DEFAULT_ROUTING="${FREELLMPOOL_ROUTING:-quality}" +REVIEW_MODE="${FREELLMPOOL_REVIEW_MODE:-strong}" +MAX_MODELS="${FREELLMPOOL_MAX_MODELS:-7}" +MAX_TOKENS="${FREELLMPOOL_MAX_TOKENS:-65536}" +PROVIDER_TIMEOUT="${FREELLMPOOL_PROVIDER_TIMEOUT_SECONDS:-600}" +SYNTHESIS_TIMEOUT="${FREELLMPOOL_SYNTHESIS_TIMEOUT_SECONDS:-600}" +STRONG_PROVIDERS="${FREELLMPOOL_STRONG_PROVIDERS:-mistral,nvidia,openrouter}" +STRONG_MODELS="${FREELLMPOOL_STRONG_MODELS:-nvidia/moonshotai/kimi-k2.6,nvidia/z-ai/glm-5.1,nvidia/mistralai/mistral-large-3-675b-instruct-2512,mistral/mistral-large-latest,nvidia/nvidia/nemotron-3-ultra-550b-a55b,openrouter/nvidia/nemotron-3-ultra-550b-a55b:free,openrouter/openai/gpt-oss-120b:free}" +LOG_DIR="${METASWARM_LOG_DIR:-${TMPDIR:-/tmp}/metaswarm-freellmpool}" + +XT_WORKTREE="" +XT_RUBRIC_FILE="" +XT_SPEC_FILE="" +XT_ATTEMPT="1" +XT_TIMEOUT="0" + +parse_args() { + while [[ $# -gt 0 ]]; do + case "$1" in + --worktree) + XT_WORKTREE="${2:-}" + shift 2 + ;; + --rubric-file) + XT_RUBRIC_FILE="${2:-}" + shift 2 + ;; + --spec-file) + XT_SPEC_FILE="${2:-}" + shift 2 + ;; + --attempt) + XT_ATTEMPT="${2:-1}" + shift 2 + ;; + --timeout) + XT_TIMEOUT="${2:-0}" + shift 2 + ;; + *) + shift + ;; + esac + done +} + +create_secure_tmp() { + local tmp_dir + tmp_dir="$(mktemp -d -t "metaswarm-freellmpool-XXXXXX")" + chmod 700 "$tmp_dir" + printf '%s' "$tmp_dir" +} + +safe_invoke() { + local timeout_secs="${1:?timeout required}" + local stdout_file="${2:?stdout file required}" + local stderr_file="${3:?stderr file required}" + shift 3 + + local exit_code=0 + case "$timeout_secs" in + 0|false|False|FALSE|none|None|NONE|off|Off|OFF) + "$@" >"$stdout_file" 2>"$stderr_file" || exit_code=$? + return "$exit_code" + ;; + esac + + if command -v timeout >/dev/null 2>&1; then + timeout "$timeout_secs" "$@" >"$stdout_file" 2>"$stderr_file" || exit_code=$? + else + "$@" >"$stdout_file" 2>"$stderr_file" & + local pid=$! + local elapsed=0 + while kill -0 "$pid" 2>/dev/null; do + if [[ "$elapsed" -ge "$timeout_secs" ]]; then + kill -TERM "$pid" 2>/dev/null || true + sleep 1 + kill -KILL "$pid" 2>/dev/null || true + wait "$pid" 2>/dev/null || true + return 124 + fi + sleep 1 + elapsed=$((elapsed + 1)) + done + wait "$pid" 2>/dev/null || exit_code=$? + fi + + return "$exit_code" +} + +classify_error() { + local exit_code="${1:-1}" + local stderr_file="${2:-}" + + if [[ "$exit_code" -eq 124 ]]; then + printf 'timeout' + return 0 + fi + if [[ "$exit_code" -eq 127 ]]; then + printf 'tool_not_installed' + return 0 + fi + if [[ -n "$stderr_file" && -s "$stderr_file" ]]; then + if grep -qi 'rate.limit\|rate_limit\|too many requests\|429' "$stderr_file"; then + printf 'rate_limited' + return 0 + fi + if grep -qi 'auth\|unauthorized\|401\|403\|forbidden\|token.*expired\|invalid.*key\|api.*key' "$stderr_file"; then + printf 'auth_expired' + return 0 + fi + if grep -qi 'context.*too.*large\|token.*limit\|context.*length\|max.*tokens\|too.*long\|exceeds.*limit' "$stderr_file"; then + printf 'context_too_large' + return 0 + fi + fi + + printf 'tool_crash' +} + +strong_models_json() { + python3 - "$STRONG_MODELS" <<'PY' +import json +import sys + +models = [item.strip() for item in sys.argv[1].split(",") if item.strip()] +print(json.dumps(models)) +PY +} + +emit_json() { + local command="${1:-}" + local model="${2:-$DEFAULT_MODEL}" + local attempt="${3:-1}" + local exit_code="${4:-0}" + local branch="${5:-}" + local git_sha="${6:-}" + local duration_seconds="${7:-0}" + local raw_log_file="${8:-}" + local error_type="${9:-}" + + python3 - "$SCHEMA_VERSION" "$TOOL_NAME" "$command" "$model" "$attempt" "$exit_code" \ + "$branch" "$git_sha" "$duration_seconds" "$raw_log_file" "$error_type" <<'PY' +import json +import pathlib +import sys + +( + schema_version, + tool, + command, + model, + attempt, + exit_code, + branch, + git_sha, + duration_seconds, + raw_log_file, + error_type, +) = sys.argv[1:] + +raw_log = "" +raw_log_path = raw_log_file +if raw_log_file: + path = pathlib.Path(raw_log_file) + if path.exists(): + raw_log = path.read_text(errors="replace")[-200000:] + +print(json.dumps({ + "schema_version": schema_version, + "tool": tool, + "command": command, + "model": model, + "attempt": int(attempt or "1"), + "exit_code": int(exit_code or "0"), + "branch": branch, + "git_sha": git_sha, + "files_changed": [], + "diff_stats": {"additions": 0, "deletions": 0}, + "duration_seconds": int(duration_seconds or "0"), + "cost": {"input_tokens": 0, "output_tokens": 0}, + "raw_log": raw_log, + "raw_log_path": raw_log_path, + "error_type": error_type or None, +})) +PY +} + +log_session() { + local json_string="${1:?json string required}" + mkdir -p "$LOG_DIR" + printf '%s\n' "$json_string" >>"${LOG_DIR}/external-tools.jsonl" 2>/dev/null || true +} + +emit_error() { + local command="${1:-}" + local model="${2:-$DEFAULT_MODEL}" + local attempt="${3:-1}" + local exit_code="${4:-1}" + local stderr_file="${5:-}" + local duration_seconds="${6:-0}" + local raw_log_file="${7:-}" + local error_type="${8:-}" + + if [[ -z "$error_type" ]]; then + error_type="$(classify_error "$exit_code" "$stderr_file")" + fi + + emit_json "$command" "$model" "$attempt" "$exit_code" "" "" "$duration_seconds" "$raw_log_file" "$error_type" +} + +build_keyed_env() { + KEYED_ENV=("FREELLMPOOL_ROUTING=$DEFAULT_ROUTING") + [[ -n "${MISTRAL_API_KEY:-}" ]] && KEYED_ENV+=("MISTRAL_API_KEY=$MISTRAL_API_KEY") + [[ -n "${NVIDIA_API_KEY:-}" ]] && KEYED_ENV+=("NVIDIA_API_KEY=$NVIDIA_API_KEY") + [[ -n "${OPENROUTER_API_KEY:-}" ]] && KEYED_ENV+=("OPENROUTER_API_KEY=$OPENROUTER_API_KEY") + [[ -n "${FREELLMPOOL_CONFIG:-}" ]] && KEYED_ENV+=("FREELLMPOOL_CONFIG=$FREELLMPOOL_CONFIG") + [[ -n "${FREELLMPOOL_CONFIG_FILE:-}" ]] && KEYED_ENV+=("FREELLMPOOL_CONFIG_FILE=$FREELLMPOOL_CONFIG_FILE") + [[ -n "${FREELLMPOOL_KEYS_PATH:-}" ]] && KEYED_ENV+=("FREELLMPOOL_KEYS_PATH=$FREELLMPOOL_KEYS_PATH") +} + +count_configured_strong_providers() { + python3 - "$STRONG_PROVIDERS" <<'PY' +import sys + +try: + from freellmpool.config import configured_providers +except Exception: + print(0) + print("") + raise SystemExit + +wanted = {item.strip() for item in sys.argv[1].split(",") if item.strip()} +configured = sorted({provider.id for provider in configured_providers() if provider.id in wanted}) +print(len(configured)) +print(",".join(configured)) +PY +} + +cmd_health() { + local status="unavailable" + local auth_valid=false + local version="not_installed" + local strong_provider_count=0 + local configured_strong_providers="" + + if command -v "$TOOL_CMD" >/dev/null 2>&1; then + version="$("$TOOL_CMD" --version 2>/dev/null | head -n 1 | tr -d '\r\n' || printf 'unknown')" + local strong_provider_info + strong_provider_info="$(count_configured_strong_providers 2>/dev/null || printf '0\n')" + strong_provider_count="$(printf '%s\n' "$strong_provider_info" | sed -n '1p')" + strong_provider_count="${strong_provider_count:-0}" + configured_strong_providers="$(printf '%s\n' "$strong_provider_info" | sed -n '2p')" + if [[ "$strong_provider_count" -gt 0 ]]; then + status="ready" + auth_valid=true + fi + fi + + python3 - "$TOOL_NAME" "$status" "$version" "$auth_valid" "$DEFAULT_MODEL" "$DEFAULT_ROUTING" \ + "$REVIEW_MODE" "$MAX_MODELS" "$STRONG_PROVIDERS" "$configured_strong_providers" \ + "$strong_provider_count" "$(strong_models_json)" <<'PY' +import json +import sys + +( + tool, + status, + version, + auth_valid, + model, + routing, + review_mode, + max_models, + strong_providers, + configured_strong_providers, + strong_provider_count, + strong_models_json, +) = sys.argv[1:] + +print(json.dumps({ + "tool": tool, + "status": status, + "version": version, + "auth_valid": auth_valid == "true", + "model": model, + "routing": routing, + "review_mode": review_mode, + "max_models": int(max_models), + "strong_providers": strong_providers, + "configured_strong_providers": configured_strong_providers, + "strong_provider_count": int(strong_provider_count or "0"), + "strong_models": json.loads(strong_models_json), +})) +PY +} + +cmd_implement() { + parse_args "$@" + + local tmp_dir raw_log_file result + tmp_dir="$(create_secure_tmp)" + raw_log_file="${tmp_dir}/unsupported.txt" + printf 'freellmpool is review-only for metaswarm; use a coding agent for implementation.\n' >"$raw_log_file" + result="$(emit_error "implement" "$DEFAULT_MODEL" "$XT_ATTEMPT" 2 "" 0 "$raw_log_file" "unsupported_role")" + log_session "$result" + printf '%s\n' "$result" + rm -rf "$tmp_dir" + return 1 +} + +cmd_review() { + parse_args "$@" + + if [[ -z "$XT_WORKTREE" || ! -d "$XT_WORKTREE" ]]; then + printf 'Error: --worktree is required for review and must exist\n' >&2 + return 1 + fi + if [[ -z "$XT_RUBRIC_FILE" || ! -f "$XT_RUBRIC_FILE" ]]; then + printf 'Error: --rubric-file is required for review and must exist\n' >&2 + return 1 + fi + if [[ -z "$XT_SPEC_FILE" || ! -f "$XT_SPEC_FILE" ]]; then + printf 'Error: --spec-file is required for review and must exist\n' >&2 + return 1 + fi + + local tmp_dir stdout_file stderr_file raw_log_file + tmp_dir="$(create_secure_tmp)" + stdout_file="${tmp_dir}/stdout.txt" + stderr_file="${tmp_dir}/stderr.log" + + if ! command -v "$TOOL_CMD" >/dev/null 2>&1; then + raw_log_file="${tmp_dir}/missing-tool.txt" + printf 'freellmpool CLI not found on PATH. Install with: pip install freellmpool\n' >"$raw_log_file" + local missing_json + missing_json="$(emit_error "review" "$DEFAULT_MODEL" "$XT_ATTEMPT" 127 "" 0 "$raw_log_file" "tool_not_installed")" + log_session "$missing_json" + printf '%s\n' "$missing_json" + rm -rf "$tmp_dir" + return 1 + fi + + local strong_provider_info strong_provider_count + strong_provider_info="$(count_configured_strong_providers 2>/dev/null || printf '0\n')" + strong_provider_count="$(printf '%s\n' "$strong_provider_info" | sed -n '1p')" + strong_provider_count="${strong_provider_count:-0}" + if [[ "$strong_provider_count" -eq 0 ]]; then + raw_log_file="${tmp_dir}/missing-strong-provider-keys.txt" + printf 'No configured strong freellmpool providers. Configure at least one of: %s. For the default metaswarm review panel, set one or more of MISTRAL_API_KEY, NVIDIA_API_KEY, OPENROUTER_API_KEY, or use freellmpool keys add.\n' "$STRONG_PROVIDERS" >"$raw_log_file" + local auth_json + auth_json="$(emit_error "review" "$DEFAULT_MODEL" "$XT_ATTEMPT" 2 "" 0 "$raw_log_file" "auth_missing")" + log_session "$auth_json" + printf '%s\n' "$auth_json" + rm -rf "$tmp_dir" + return 1 + fi + + local diff_content rubric_content spec_content system_prompt review_prompt review_prompt_file + diff_content="$(git -C "$XT_WORKTREE" diff HEAD 2>/dev/null || true)" + if [[ -z "$diff_content" ]]; then + diff_content="$(git -C "$XT_WORKTREE" diff HEAD~1 HEAD 2>/dev/null || true)" + fi + if [[ -z "$diff_content" ]]; then + diff_content="No git diff was captured. Review the specification and rubric for process gaps only." + fi + rubric_content="$(cat "$XT_RUBRIC_FILE")" + spec_content="$(cat "$XT_SPEC_FILE")" + system_prompt="You are an adversarial code reviewer. Return one JSON object with keys verdict, findings, summary. Use PASS only when there are no blocking issues. Use FAIL when any blocking issue exists. Findings must include classification, citation, and explanation." + review_prompt="$(cat <"$review_prompt_file" + + local start_time end_time duration exit_code + start_time="$(date +%s)" + exit_code=0 + + build_keyed_env + if [[ "$REVIEW_MODE" == "strong" || "$REVIEW_MODE" == "strong-long-context" ]]; then + : >"$stdout_file" + local answered=0 + local attempted=0 + local first_success_model="" + local pids=() + local pid_models=() + local pid_stdout=() + local pid_stderr=() + local strong_models=() + + IFS=',' read -r -a strong_models <<<"$STRONG_MODELS" + for model in "${strong_models[@]}"; do + model="${model#"${model%%[![:space:]]*}"}" + model="${model%"${model##*[![:space:]]}"}" + [[ -z "$model" ]] && continue + attempted=$((attempted + 1)) + if [[ "$attempted" -gt "$MAX_MODELS" ]]; then + break + fi + + local model_stdout="${tmp_dir}/model-${attempted}.out" + local model_stderr="${tmp_dir}/model-${attempted}.err" + safe_invoke "$PROVIDER_TIMEOUT" "$model_stdout" "$model_stderr" \ + env -i HOME="$HOME" PATH="$PATH" "${KEYED_ENV[@]}" \ + "$TOOL_CMD" ask \ + --model "$model" \ + --max-tokens "$MAX_TOKENS" \ + --temperature 0 \ + --timeout "$PROVIDER_TIMEOUT" \ + --json \ + --system "$system_prompt" \ + <"$review_prompt_file" & + pids+=("$!") + pid_models+=("$model") + pid_stdout+=("$model_stdout") + pid_stderr+=("$model_stderr") + done + + local i + for i in "${!pids[@]}"; do + local model="${pid_models[$i]}" + local model_stdout="${pid_stdout[$i]}" + local model_stderr="${pid_stderr[$i]}" + local model_exit=0 + if wait "${pids[$i]}"; then + model_exit=0 + else + model_exit=$? + fi + + if [[ "$model_exit" -eq 0 && -s "$model_stdout" ]]; then + answered=$((answered + 1)) + if [[ -z "$first_success_model" ]]; then + first_success_model="$model" + fi + { + printf '### %s\n' "$model" + cat "$model_stdout" + printf '\n\n' + } >>"$stdout_file" + else + { + printf '### %s unavailable\n' "$model" + printf 'exit_code=%s error_type=%s\n' "$model_exit" "$(classify_error "$model_exit" "$model_stderr")" + if [[ -s "$model_stderr" ]]; then + sed -n '1,20p' "$model_stderr" + fi + printf '\n' + } >>"$stderr_file" + fi + done + + if [[ "$answered" -eq 0 ]]; then + exit_code=1 + else + local synthesis_prompt="${tmp_dir}/synthesis-prompt.txt" + { + printf 'Synthesize these independent freellmpool reviews into one JSON object with keys verdict, findings, summary.\n' + printf 'Return FAIL if any model found a credible BLOCKING issue. Preserve citations.\n\n' + cat "$stdout_file" + } >"$synthesis_prompt" + + local synthesis_stdout="${tmp_dir}/synthesis.out" + local synthesis_stderr="${tmp_dir}/synthesis.err" + local synthesis_exit=0 + safe_invoke "$SYNTHESIS_TIMEOUT" "$synthesis_stdout" "$synthesis_stderr" \ + env -i HOME="$HOME" PATH="$PATH" "${KEYED_ENV[@]}" \ + "$TOOL_CMD" ask \ + --model "$first_success_model" \ + --max-tokens "$MAX_TOKENS" \ + --temperature 0 \ + --timeout "$SYNTHESIS_TIMEOUT" \ + --json \ + --system "$system_prompt" \ + <"$synthesis_prompt" \ + || synthesis_exit=$? + + { + printf '### SYNTHESIS via %s\n' "$first_success_model" + if [[ "$synthesis_exit" -eq 0 && -s "$synthesis_stdout" ]]; then + cat "$synthesis_stdout" + else + printf 'synthesis unavailable; use individual reviews above. exit_code=%s error_type=%s\n' "$synthesis_exit" "$(classify_error "$synthesis_exit" "$synthesis_stderr")" + fi + printf '\n' + } >>"$stdout_file" + fi + elif [[ "$REVIEW_MODE" == "tokenmax" ]]; then + safe_invoke "${XT_TIMEOUT:-$PROVIDER_TIMEOUT}" "$stdout_file" "$stderr_file" \ + env -i HOME="$HOME" PATH="$PATH" "${KEYED_ENV[@]}" \ + "$TOOL_CMD" tokenmax \ + --max-models "$MAX_MODELS" \ + --max-tokens "$MAX_TOKENS" \ + --timeout "$PROVIDER_TIMEOUT" \ + --system "$system_prompt" \ + "$review_prompt" \ + || exit_code=$? + else + safe_invoke "${XT_TIMEOUT:-$PROVIDER_TIMEOUT}" "$stdout_file" "$stderr_file" \ + env -i HOME="$HOME" PATH="$PATH" "${KEYED_ENV[@]}" \ + "$TOOL_CMD" ask \ + --max-tokens "$MAX_TOKENS" \ + --temperature 0 \ + --timeout "$PROVIDER_TIMEOUT" \ + --json \ + --system "$system_prompt" \ + "$review_prompt" \ + || exit_code=$? + fi + + end_time="$(date +%s)" + duration=$((end_time - start_time)) + + mkdir -p "$LOG_DIR" + raw_log_file="${LOG_DIR}/${TOOL_NAME}-review-$(date +%Y%m%dT%H%M%S)-$$.txt" + { + if [[ -s "$stdout_file" ]]; then + cat "$stdout_file" + fi + if [[ -s "$stderr_file" ]]; then + printf '\n### STDERR / MODEL FAILURES\n' + cat "$stderr_file" + fi + } >"$raw_log_file" 2>/dev/null || true + + local branch git_sha result + branch="$(git -C "$XT_WORKTREE" rev-parse --abbrev-ref HEAD 2>/dev/null || true)" + git_sha="$(git -C "$XT_WORKTREE" rev-parse HEAD 2>/dev/null || true)" + + if [[ "$exit_code" -ne 0 ]]; then + result="$(emit_error "review" "$DEFAULT_MODEL" "$XT_ATTEMPT" "$exit_code" "$stderr_file" "$duration" "$raw_log_file")" + log_session "$result" + printf '%s\n' "$result" + rm -rf "$tmp_dir" + return 1 + fi + + result="$(emit_json "review" "$DEFAULT_MODEL" "$XT_ATTEMPT" 0 "$branch" "$git_sha" "$duration" "$raw_log_file" "")" + log_session "$result" + printf '%s\n' "$result" + rm -rf "$tmp_dir" +} + +command="${1:-}" +shift || true + +case "$command" in + health) + cmd_health "$@" + ;; + implement) + cmd_implement "$@" + ;; + review) + cmd_review "$@" + ;; + *) + cat >&2 < [options] + +Commands: + health Check freellmpool CLI and configured strong providers. + review Run freellmpool as a metaswarm adversarial reviewer. + implement Unsupported; this adapter is review-only. + +Review options: + --worktree Git worktree to review. + --rubric-file Review rubric file. + --spec-file Specification file. + --attempt Attempt number for logs. + --timeout Outer timeout for tokenmax/ask modes; 0 disables. + +Environment: + FREELLMPOOL_CMD freellmpool binary path. + FREELLMPOOL_REVIEW_MODE strong, tokenmax, or ask; default strong. + FREELLMPOOL_STRONG_MODELS comma-separated exact model ids for strong mode. + FREELLMPOOL_STRONG_PROVIDERS comma-separated provider ids required for ready health. + FREELLMPOOL_MAX_MODELS max strong/tokenmax models, default 7. + FREELLMPOOL_MAX_TOKENS max output tokens per model, default 65536. + FREELLMPOOL_PROVIDER_TIMEOUT_SECONDS per-model upstream timeout, default 600. + FREELLMPOOL_SYNTHESIS_TIMEOUT_SECONDS synthesis timeout, default 600. + METASWARM_LOG_DIR raw review log directory. +USAGE + exit 2 + ;; +esac diff --git a/tests/test_metaswarm_integration.py b/tests/test_metaswarm_integration.py new file mode 100644 index 0000000..81e338b --- /dev/null +++ b/tests/test_metaswarm_integration.py @@ -0,0 +1,102 @@ +from __future__ import annotations + +import json +import os +import subprocess +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +ADAPTER = ROOT / "integrations" / "metaswarm" / "freellmpool-review-adapter.sh" +README = ROOT / "integrations" / "metaswarm" / "README.md" + + +def _base_env(tmp_path: Path) -> dict[str, str]: + env = os.environ.copy() + env["PYTHONPATH"] = str(ROOT / "src") + env["HOME"] = str(tmp_path / "home") + env["XDG_CONFIG_HOME"] = str(tmp_path / "xdg-config") + env["XDG_DATA_HOME"] = str(tmp_path / "xdg-data") + env["XDG_CACHE_HOME"] = str(tmp_path / "xdg-cache") + env["FREELLMPOOL_CONFIG_FILE"] = str(tmp_path / "empty-config.toml") + env["FREELLMPOOL_KEYS_PATH"] = str(tmp_path / "empty-keys.json") + env["METASWARM_LOG_DIR"] = str(tmp_path / "logs") + for name in ("MISTRAL_API_KEY", "NVIDIA_API_KEY", "OPENROUTER_API_KEY"): + env.pop(name, None) + (tmp_path / "home").mkdir() + (tmp_path / "xdg-config").mkdir() + (tmp_path / "xdg-data").mkdir() + (tmp_path / "xdg-cache").mkdir() + (tmp_path / "empty-config.toml").write_text("# empty test config\n", encoding="utf-8") + (tmp_path / "empty-keys.json").write_text("{}\n", encoding="utf-8") + return env + + +def test_metaswarm_adapter_shell_syntax() -> None: + result = subprocess.run(["bash", "-n", str(ADAPTER)], text=True, capture_output=True) + assert result.returncode == 0, result.stderr + + +def test_metaswarm_adapter_no_key_review_fails_closed(tmp_path: Path) -> None: + env = _base_env(tmp_path) + + repo = tmp_path / "repo" + repo.mkdir() + subprocess.run(["git", "init", "-q"], cwd=repo, check=True) + subprocess.run(["git", "config", "user.email", "test@example.invalid"], cwd=repo, check=True) + subprocess.run(["git", "config", "user.name", "Test"], cwd=repo, check=True) + (repo / "example.txt").write_text("before\n", encoding="utf-8") + subprocess.run(["git", "add", "example.txt"], cwd=repo, check=True) + subprocess.run(["git", "commit", "-q", "-m", "initial"], cwd=repo, check=True) + (repo / "example.txt").write_text("after\n", encoding="utf-8") + + spec = tmp_path / "spec.md" + rubric = tmp_path / "rubric.md" + spec.write_text("Return PASS when the diff has no secret.\n", encoding="utf-8") + rubric.write_text("Check for secrets only. Blocking issues require FAIL.\n", encoding="utf-8") + + result = subprocess.run( + [ + str(ADAPTER), + "review", + "--worktree", + str(repo), + "--rubric-file", + str(rubric), + "--spec-file", + str(spec), + "--timeout", + "20", + ], + text=True, + capture_output=True, + env=env, + check=False, + ) + + assert result.returncode == 1 + payload = json.loads(result.stdout) + assert payload["tool"] == "freellmpool" + assert payload["command"] == "review" + assert payload["exit_code"] == 2 + assert payload["error_type"] == "auth_missing" + assert "MISTRAL_API_KEY" in payload["raw_log"] + assert "NVIDIA_API_KEY" in payload["raw_log"] + assert "OPENROUTER_API_KEY" in payload["raw_log"] + assert "secret" not in payload["raw_log"].lower() + + +def test_metaswarm_docs_are_linked() -> None: + integrations = (ROOT / "docs" / "INTEGRATIONS.md").read_text(encoding="utf-8") + agents = (ROOT / "docs" / "AGENTS.md").read_text(encoding="utf-8") + readme = (ROOT / "README.md").read_text(encoding="utf-8") + llms = (ROOT / "docs" / "llms.txt").read_text(encoding="utf-8") + adapter_text = ADAPTER.read_text(encoding="utf-8") + integration_readme = README.read_text(encoding="utf-8") + + assert "integrations/metaswarm" in integrations + assert "metaswarm" in agents.lower() + assert "metaswarm" in readme.lower() + assert "metaswarm" in llms.lower() + assert "auth_missing" in adapter_text + assert "review-only" in integration_readme + assert ".metaswarm/external-tools.yaml" in integration_readme From 8ed6a9188984edcb2d7d3ff0dc1ee25fa0b09988 Mon Sep 17 00:00:00 2001 From: 0xzr <111210386+0xzr@users.noreply.github.com> Date: Tue, 16 Jun 2026 23:53:02 -0400 Subject: [PATCH 2/7] harden metaswarm adapter review execution --- integrations/metaswarm/README.md | 2 ++ .../metaswarm/freellmpool-review-adapter.sh | 32 ++++++++++++++----- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/integrations/metaswarm/README.md b/integrations/metaswarm/README.md index b3bbba9..3e5cbe4 100644 --- a/integrations/metaswarm/README.md +++ b/integrations/metaswarm/README.md @@ -103,9 +103,11 @@ required environment variable names but not secret values. | `FREELLMPOOL_STRONG_MODELS` | Comma-separated exact provider/model ids for strong mode. | | `FREELLMPOOL_STRONG_PROVIDERS` | Provider ids that must be configured for ready health. | | `FREELLMPOOL_MAX_MODELS` | Model cap for strong/tokenmax review. | +| `FREELLMPOOL_MAX_MODELS_HARD_CAP` | Safety cap for concurrent model calls, default `16`. | | `FREELLMPOOL_MAX_TOKENS` | Max output tokens per model. | | `FREELLMPOOL_PROVIDER_TIMEOUT_SECONDS` | Per-model upstream timeout. | | `FREELLMPOOL_SYNTHESIS_TIMEOUT_SECONDS` | Synthesis call timeout. | +| `FREELLMPOOL_ADAPTER_PATH` | Sanitized `PATH` used for child `freellmpool` calls. | | `METASWARM_LOG_DIR` | Directory for raw review logs. | Use provider keys from your environment (`MISTRAL_API_KEY`, `NVIDIA_API_KEY`, diff --git a/integrations/metaswarm/freellmpool-review-adapter.sh b/integrations/metaswarm/freellmpool-review-adapter.sh index e75e1b7..1c2f279 100755 --- a/integrations/metaswarm/freellmpool-review-adapter.sh +++ b/integrations/metaswarm/freellmpool-review-adapter.sh @@ -21,6 +21,18 @@ SYNTHESIS_TIMEOUT="${FREELLMPOOL_SYNTHESIS_TIMEOUT_SECONDS:-600}" STRONG_PROVIDERS="${FREELLMPOOL_STRONG_PROVIDERS:-mistral,nvidia,openrouter}" STRONG_MODELS="${FREELLMPOOL_STRONG_MODELS:-nvidia/moonshotai/kimi-k2.6,nvidia/z-ai/glm-5.1,nvidia/mistralai/mistral-large-3-675b-instruct-2512,mistral/mistral-large-latest,nvidia/nvidia/nemotron-3-ultra-550b-a55b,openrouter/nvidia/nemotron-3-ultra-550b-a55b:free,openrouter/openai/gpt-oss-120b:free}" LOG_DIR="${METASWARM_LOG_DIR:-${TMPDIR:-/tmp}/metaswarm-freellmpool}" +SAFE_PATH="${FREELLMPOOL_ADAPTER_PATH:-/usr/local/bin:/usr/bin:/bin}" +HARD_MAX_MODELS="${FREELLMPOOL_MAX_MODELS_HARD_CAP:-16}" + +case "$MAX_MODELS" in + ''|*[!0-9]*) MAX_MODELS="7" ;; +esac +case "$HARD_MAX_MODELS" in + ''|*[!0-9]*) HARD_MAX_MODELS="16" ;; +esac +if (( MAX_MODELS > HARD_MAX_MODELS )); then + MAX_MODELS="$HARD_MAX_MODELS" +fi XT_WORKTREE="" XT_RUBRIC_FILE="" @@ -354,6 +366,8 @@ cmd_review() { rm -rf "$tmp_dir" return 1 fi + local tool_bin + tool_bin="$(command -v "$TOOL_CMD")" local strong_provider_info strong_provider_count strong_provider_info="$(count_configured_strong_providers 2>/dev/null || printf '0\n')" @@ -428,8 +442,8 @@ PROMPT_EOF local model_stdout="${tmp_dir}/model-${attempted}.out" local model_stderr="${tmp_dir}/model-${attempted}.err" safe_invoke "$PROVIDER_TIMEOUT" "$model_stdout" "$model_stderr" \ - env -i HOME="$HOME" PATH="$PATH" "${KEYED_ENV[@]}" \ - "$TOOL_CMD" ask \ + env -i HOME="$HOME" PATH="$SAFE_PATH" "${KEYED_ENV[@]}" \ + "$tool_bin" ask \ --model "$model" \ --max-tokens "$MAX_TOKENS" \ --temperature 0 \ @@ -491,8 +505,8 @@ PROMPT_EOF local synthesis_stderr="${tmp_dir}/synthesis.err" local synthesis_exit=0 safe_invoke "$SYNTHESIS_TIMEOUT" "$synthesis_stdout" "$synthesis_stderr" \ - env -i HOME="$HOME" PATH="$PATH" "${KEYED_ENV[@]}" \ - "$TOOL_CMD" ask \ + env -i HOME="$HOME" PATH="$SAFE_PATH" "${KEYED_ENV[@]}" \ + "$tool_bin" ask \ --model "$first_success_model" \ --max-tokens "$MAX_TOKENS" \ --temperature 0 \ @@ -514,8 +528,8 @@ PROMPT_EOF fi elif [[ "$REVIEW_MODE" == "tokenmax" ]]; then safe_invoke "${XT_TIMEOUT:-$PROVIDER_TIMEOUT}" "$stdout_file" "$stderr_file" \ - env -i HOME="$HOME" PATH="$PATH" "${KEYED_ENV[@]}" \ - "$TOOL_CMD" tokenmax \ + env -i HOME="$HOME" PATH="$SAFE_PATH" "${KEYED_ENV[@]}" \ + "$tool_bin" tokenmax \ --max-models "$MAX_MODELS" \ --max-tokens "$MAX_TOKENS" \ --timeout "$PROVIDER_TIMEOUT" \ @@ -524,8 +538,8 @@ PROMPT_EOF || exit_code=$? else safe_invoke "${XT_TIMEOUT:-$PROVIDER_TIMEOUT}" "$stdout_file" "$stderr_file" \ - env -i HOME="$HOME" PATH="$PATH" "${KEYED_ENV[@]}" \ - "$TOOL_CMD" ask \ + env -i HOME="$HOME" PATH="$SAFE_PATH" "${KEYED_ENV[@]}" \ + "$tool_bin" ask \ --max-tokens "$MAX_TOKENS" \ --temperature 0 \ --timeout "$PROVIDER_TIMEOUT" \ @@ -603,9 +617,11 @@ Environment: FREELLMPOOL_STRONG_MODELS comma-separated exact model ids for strong mode. FREELLMPOOL_STRONG_PROVIDERS comma-separated provider ids required for ready health. FREELLMPOOL_MAX_MODELS max strong/tokenmax models, default 7. + FREELLMPOOL_MAX_MODELS_HARD_CAP safety cap for concurrent model calls, default 16. FREELLMPOOL_MAX_TOKENS max output tokens per model, default 65536. FREELLMPOOL_PROVIDER_TIMEOUT_SECONDS per-model upstream timeout, default 600. FREELLMPOOL_SYNTHESIS_TIMEOUT_SECONDS synthesis timeout, default 600. + FREELLMPOOL_ADAPTER_PATH PATH used for child freellmpool calls. METASWARM_LOG_DIR raw review log directory. USAGE exit 2 From 24fa1bf99fab6f56e031096c439fabf1c9313c00 Mon Sep 17 00:00:00 2001 From: 0xzr <111210386+0xzr@users.noreply.github.com> Date: Tue, 16 Jun 2026 23:56:38 -0400 Subject: [PATCH 3/7] test: cover metaswarm adapter unsupported implement --- integrations/metaswarm/README.md | 2 +- .../metaswarm/freellmpool-review-adapter.sh | 2 +- tests/test_metaswarm_integration.py | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/integrations/metaswarm/README.md b/integrations/metaswarm/README.md index 3e5cbe4..0650744 100644 --- a/integrations/metaswarm/README.md +++ b/integrations/metaswarm/README.md @@ -99,7 +99,7 @@ required environment variable names but not secret values. | Variable | Purpose | | --- | --- | | `FREELLMPOOL_CMD` | Path to the `freellmpool` executable. | -| `FREELLMPOOL_REVIEW_MODE` | `strong` (default), `tokenmax`, or `ask`. | +| `FREELLMPOOL_REVIEW_MODE` | `strong` (default), `strong-long-context`, `tokenmax`, or `ask`. | | `FREELLMPOOL_STRONG_MODELS` | Comma-separated exact provider/model ids for strong mode. | | `FREELLMPOOL_STRONG_PROVIDERS` | Provider ids that must be configured for ready health. | | `FREELLMPOOL_MAX_MODELS` | Model cap for strong/tokenmax review. | diff --git a/integrations/metaswarm/freellmpool-review-adapter.sh b/integrations/metaswarm/freellmpool-review-adapter.sh index 1c2f279..07a1a0c 100755 --- a/integrations/metaswarm/freellmpool-review-adapter.sh +++ b/integrations/metaswarm/freellmpool-review-adapter.sh @@ -613,7 +613,7 @@ Review options: Environment: FREELLMPOOL_CMD freellmpool binary path. - FREELLMPOOL_REVIEW_MODE strong, tokenmax, or ask; default strong. + FREELLMPOOL_REVIEW_MODE strong, strong-long-context, tokenmax, or ask; default strong. FREELLMPOOL_STRONG_MODELS comma-separated exact model ids for strong mode. FREELLMPOOL_STRONG_PROVIDERS comma-separated provider ids required for ready health. FREELLMPOOL_MAX_MODELS max strong/tokenmax models, default 7. diff --git a/tests/test_metaswarm_integration.py b/tests/test_metaswarm_integration.py index 81e338b..dbecb30 100644 --- a/tests/test_metaswarm_integration.py +++ b/tests/test_metaswarm_integration.py @@ -85,6 +85,25 @@ def test_metaswarm_adapter_no_key_review_fails_closed(tmp_path: Path) -> None: assert "secret" not in payload["raw_log"].lower() +def test_metaswarm_adapter_implement_is_unsupported(tmp_path: Path) -> None: + result = subprocess.run( + [str(ADAPTER), "implement", "--attempt", "2"], + text=True, + capture_output=True, + env=_base_env(tmp_path), + check=False, + ) + + assert result.returncode == 1 + payload = json.loads(result.stdout) + assert payload["tool"] == "freellmpool" + assert payload["command"] == "implement" + assert payload["attempt"] == 2 + assert payload["exit_code"] == 2 + assert payload["error_type"] == "unsupported_role" + assert "review-only" in payload["raw_log"] + + def test_metaswarm_docs_are_linked() -> None: integrations = (ROOT / "docs" / "INTEGRATIONS.md").read_text(encoding="utf-8") agents = (ROOT / "docs" / "AGENTS.md").read_text(encoding="utf-8") From b254d21a0aca3fbb282a72e0d85c5709660223ab Mon Sep 17 00:00:00 2001 From: 0xzr <111210386+0xzr@users.noreply.github.com> Date: Wed, 17 Jun 2026 00:05:12 -0400 Subject: [PATCH 4/7] Audit and refresh free provider catalog --- .env.example | 3 ++ FAQ.md | 1 + README.md | 20 ++++---- assets/demo.svg | 2 +- assets/social-preview.png | Bin 83711 -> 82607 bytes assets/social-preview.svg | 4 +- assets/tokenmax-results.svg | 4 +- docs/ACCOUNTS.md | 16 +++++-- docs/GITHUB_DISCOVERY.md | 6 +-- docs/best-free-llm-api-gateway.html | 2 +- docs/capacity-management.html | 2 +- docs/free-alternative-to-openrouter.html | 4 +- docs/free-claude-api.html | 2 +- docs/free-llm-api-providers-list.html | 26 +++++----- docs/free-openai-api-alternatives.html | 2 +- docs/index.html | 28 ++++++----- docs/run-coding-agents-on-free-models.html | 10 ++-- docs/run-opencode-on-free-models.html | 10 ++-- docs/use-multiple-free-llm-apis.html | 6 +-- pyproject.toml | 2 +- server.json | 2 +- src/freellmpool/providers.toml | 53 ++++++++++++++------- tests/test_faq.py | 8 ++-- tests/test_github_discovery.py | 4 +- tests/test_mcp_listings.py | 2 +- tests/test_release_tools.py | 2 +- 26 files changed, 127 insertions(+), 94 deletions(-) diff --git a/.env.example b/.env.example index 1b7b853..331d8e1 100644 --- a/.env.example +++ b/.env.example @@ -52,7 +52,10 @@ LONGCAT_API_KEY= # --------------------------------------------------------------------------- # Zero-setup providers (no key needed — included automatically): +# • Pollinations (anonymous/keyless) # • OVHcloud AI Endpoints (anonymous/keyless) +# • Kilo Gateway (anonymous/keyless) +# • OpenCode Zen (anonymous/keyless) # • LLM7 (works without a key; set LLM7_API_KEY for more) # So freellmpool works out of the box even with this whole file empty. # --------------------------------------------------------------------------- diff --git a/FAQ.md b/FAQ.md index 7d92ac1..cdf2bea 100644 --- a/FAQ.md +++ b/FAQ.md @@ -18,6 +18,7 @@ not encode data residency, this table says so instead of guessing. | `llm7` | `https://api.llm7.io/v1` | Key optional | LLM7's privacy policy says it operates from the United Kingdom. | Optional-token gateway; prompts go to LLM7 and whatever upstream serving path it uses. | | `ovh` | `https://oai.endpoints.kepler.ai.cloud.ovh.net/v1` | Keyless | OVHcloud describes AI Endpoints as a privacy-focused OVHcloud service; the catalog does not pin a region. | Strongest keyless privacy posture in this catalog, but still a third-party hosted API. | | `kilo` | `https://api.kilo.ai/api/gateway` | Keyless | Kilo Code Inc.; endpoint region is not stated in the catalog. | Gateway docs warn not to submit personal or confidential data; treat free routes as logged. | +| `opencode` | `https://opencode.ai/zen/v1` | Keyless | OpenCode Zen endpoint region is not stated in the catalog. | Anonymous gateway; live free routes may change quickly, so do not send secrets unless OpenCode's current policy fits your use case. | | `huggingface` | `https://router.huggingface.co/v1` | `HF_TOKEN` | Hugging Face says the company and servers are in the United States and data may be processed elsewhere. | Router endpoint; your key and prompt go to Hugging Face's routed inference service. | | `groq` | `https://api.groq.com/openai/v1` | `GROQ_API_KEY` | Groq, Inc.; endpoint region is not stated in the catalog. | Direct provider API using your Groq key; check Groq's current service/privacy terms for retention. | | `cerebras` | `https://api.cerebras.ai/v1` | `CEREBRAS_API_KEY` | Cerebras Systems Inc.; endpoint region is not stated in the catalog. | Direct provider API using your Cerebras key; check Cerebras' current policy before sensitive prompts. | diff --git a/README.md b/README.md index 968c2bf..f83c865 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ ![freellmpool tokenmax terminal demo](assets/demo.svg) -![200+ models, 18 providers, $0 to start](assets/tokenmax-results.svg) +![200+ models, 19 providers, $0 to start](assets/tokenmax-results.svg) -Pool the free tiers of 18 LLM providers (200+ live-validated, 300+ cataloged +Pool the free tiers of 19 LLM providers (200+ live-validated, 300+ cataloged models) behind one OpenAI-compatible endpoint — as a CLI, a Python library, or a local proxy. Works with no API keys. @@ -39,8 +39,9 @@ rate limits, and daily cap. freellmpool puts them in one pool: it sends each request to a provider you have access to, fails over to the next when one is rate limited or down, and tracks per-day usage so you get the most out of every tier. -Several providers (Pollinations, OVHcloud, and Kilo Gateway) need no API key, so -the quickstart above answers immediately. +Several providers (Pollinations, OVHcloud, Kilo Gateway, and OpenCode Zen) need +no API key, and LLM7 works without one, so the quickstart above answers +immediately. Add keys for the other providers to unlock more models and higher limits. @@ -355,7 +356,7 @@ Architecture notes: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md). | Tool | Keyless start | # providers | Failover | MCP server | CLI | Transcription | Local/self-hosted | License | |---|---|---:|---|---|---|---|---|---| -| **freellmpool** | Yes: Pollinations, OVHcloud, Kilo Gateway; LLM7 is key-optional | 18 built-in chat providers | Yes: tries the next provider on rate limits, timeouts, 5xx, empty replies, and transport errors | Yes: `freellmpool mcp` | Yes: `freellmpool ask`, `tokenmax`, `providers`, `proxy`, and more | Yes: OpenAI-compatible `/v1/audio/transcriptions` with provider failover | Yes: local Python package and local proxy | MIT | +| **freellmpool** | Yes: Pollinations, OVHcloud, Kilo Gateway, OpenCode Zen; LLM7 is key-optional | 19 built-in chat providers | Yes: tries the next provider on rate limits, timeouts, 5xx, empty replies, and transport errors | Yes: `freellmpool mcp` | Yes: `freellmpool ask`, `tokenmax`, `providers`, `proxy`, and more | Yes: OpenAI-compatible `/v1/audio/transcriptions` with provider failover | Yes: local Python package and local proxy | MIT | | OpenRouter free models | No: OpenRouter account/API key required | One hosted OpenRouter account routing across many upstreams; the free-model router currently lists free variants | Yes: OpenRouter handles provider routing/fallbacks | Not a native MCP server; OpenRouter docs show MCP-client/tool patterns | No first-party local CLI in the docs checked | Yes: OpenRouter now documents audio transcription APIs | No: hosted service | Proprietary service | | LiteLLM | No: bring provider keys or hosted LiteLLM credentials | 100+ LLM providers | Yes: router/fallbacks, including transcription fallbacks | Yes: LiteLLM Proxy includes an MCP Gateway | Yes: SDK/proxy command surface, not a one-shot free-model CLI | Yes: `/audio/transcriptions` support | Yes: self-host the proxy or use hosted LiteLLM | MIT for core repo; commercial license for enterprise-only pieces | | FreeLLMAPI | No: add your own free-tier provider keys; keyless providers can be configured after setup | 16 free-tier providers plus custom OpenAI-compatible endpoints | Yes: fallback chain on 429, 5xx, and timeouts | No native MCP server in the README checked | Dashboard/server, desktop app, and Docker; no first-class one-shot CLI in the README checked | No: `/v1/audio/*` is listed as not yet supported | Yes: self-hosted Node/Docker proxy | MIT | @@ -375,7 +376,7 @@ audio transcription docs; FreeLLMAPI's README. **Is there a free, OpenAI-compatible LLM API gateway?** Yes — freellmpool is a free, MIT-licensed gateway that exposes one OpenAI-compatible endpoint backed by the free -tiers of 18 providers. `pip install freellmpool` and point any OpenAI client at the +tiers of 19 providers. `pip install freellmpool` and point any OpenAI client at the local proxy. **How do I use multiple free LLM APIs at once?** freellmpool pools them: each request @@ -389,9 +390,10 @@ Code, set `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1` so `/v1/models` is disc through the Anthropic bridge. See `freellmpool code `. (Claude Code path is experimental: text + tools, no vision.) -**Do I need an API key?** No — Pollinations, OVHcloud, and Kilo Gateway work with no key, so a fresh -install answers immediately. Add free keys for the other providers for more models and -higher limits. +**Do I need an API key?** No — Pollinations, OVHcloud, Kilo Gateway, and OpenCode +Zen work with no key, and LLM7 is key-optional, so a fresh install answers +immediately. Add free keys for the other providers for more models and higher +limits. **Is it free and open source?** Yes, MIT-licensed. More at the [project page](https://0xzr.github.io/freellmpool/). diff --git a/assets/demo.svg b/assets/demo.svg index 4265a40..bf13ccf 100644 --- a/assets/demo.svg +++ b/assets/demo.svg @@ -47,7 +47,7 @@ kilo/openrouter/free "ZeroKey" llm7/qwen3-235b "PoolPilot" SYNTHESIS freellmpool: one local API over the free tiers. - freellmpool catalog: 18 providers, 236 models - 18 free tiers - $0 to start + freellmpool catalog: 19 providers, 238 models - 19 free tiers - $0 to start diff --git a/assets/social-preview.png b/assets/social-preview.png index 3de9a5f8d228d41e1f90708c63e05dca8366ceb9..d7a6da64d045314df437eace4ffa5d3950931e3b 100644 GIT binary patch literal 82607 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 W>YN5%)4=B%kcR42l?s$~=>GuzN_9E_ literal 83711 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 freellmpool social preview - Free LLM API pool with zero keys to start, 18 providers, 200+ models, OpenAI and Anthropic proxy support, failover, MCP, rate limits, and transcription. + Free LLM API pool with zero keys to start, 19 providers, 200+ models, OpenAI and Anthropic proxy support, failover, MCP, rate limits, and transcription. @@ -37,7 +37,7 @@ to first reply - 18 providers + 19 providers 200+ models diff --git a/assets/tokenmax-results.svg b/assets/tokenmax-results.svg index 181b71c..45a2d0d 100644 --- a/assets/tokenmax-results.svg +++ b/assets/tokenmax-results.svg @@ -1,6 +1,6 @@ freellmpool tokenmax results screenshot - Static launch card showing 200 plus models, 18 providers, zero dollars, keyless start, and automatic failover. + Static launch card showing 200 plus models, 19 providers, zero dollars, keyless start, and automatic failover.

    Best free LLM API gateway (2026)

    Know which free LLM tiers are usable right now

    daily caps fill up. freellmpool ships capacity tools that tell you, locally, which of your free providers are usable right now, which are near their quota, and which keys to add next. freellmpool is a free, open-source tool that pools the free -tiers of 18 LLM providers behind one OpenAI-compatible endpoint; these commands keep that pool healthy.

    +tiers of 19 LLM providers behind one OpenAI-compatible endpoint; these commands keep that pool healthy.

    pip install freellmpool
     freellmpool capacity status --target 5
    diff --git a/docs/free-alternative-to-openrouter.html b/docs/free-alternative-to-openrouter.html index 83f1d89..ea87933 100644 --- a/docs/free-alternative-to-openrouter.html +++ b/docs/free-alternative-to-openrouter.html @@ -38,7 +38,7 @@

    How they differ

    OpenRouterfreellmpool CostPay per token (some free models)Free — pools providers' free tiers HostingHosted serviceLocal, open source (MIT) -Keyless startNo (account + key)Yes (3 keyless providers) +Keyless startNo (account + key)Yes (4 keyless providers, plus LLM7 key-optional) InterfaceAPICLI + Python library + proxy + MCP server FailoverYesYes @@ -62,7 +62,7 @@

    Is there a free version of OpenRouter?

    open-source path, freellmpool pools the LLM providers' own free tiers behind one OpenAI-compatible endpoint and is keyless to start.

    Can freellmpool use OpenRouter too?

    -

    Yes — OpenRouter is one of the 18 providers freellmpool can pool, so its free models become part of +

    Yes — OpenRouter is one of the 19 providers freellmpool can pool, so its free models become part of the failover pool alongside Groq, Cerebras, Gemini and the rest.

    Part of freellmpool (MIT, free, open source). Updated 2026-06-03.

    diff --git a/docs/free-claude-api.html b/docs/free-claude-api.html index cd25ebf..e8ddc2f 100644 --- a/docs/free-claude-api.html +++ b/docs/free-claude-api.html @@ -61,7 +61,7 @@

    Use the Anthropic API from your own code

    Why use freellmpool for this

    • It's the only part you install — one pip, no key to start.
    • -
    • Failover across 18 providers, so a single tier's rate limit doesn't stop you.
    • +
    • Failover across 19 providers, so a single tier's rate limit doesn't stop you.
    • The same proxy also serves the OpenAI API, so OpenAI-SDK tools work too.
    diff --git a/docs/free-llm-api-providers-list.html b/docs/free-llm-api-providers-list.html index 03a5853..5ba492e 100644 --- a/docs/free-llm-api-providers-list.html +++ b/docs/free-llm-api-providers-list.html @@ -7,7 +7,7 @@ - +

    For using free LLM tiers specifically, the best free, open-source gateway is -freellmpool: it pools the free tiers of 18 providers +freellmpool: it pools the free tiers of 19 providers behind one OpenAI-compatible endpoint, installs with pip, works with no API key to start, and ships as a CLI, a Python library, a local proxy, and an MCP server. LiteLLM is the best choice if you bring your own keys and want a mature multi-provider SDK; OpenRouter is best if you want one paid bill for diff --git a/docs/capacity-management.html b/docs/capacity-management.html index 502421f..c2d52e0 100644 --- a/docs/capacity-management.html +++ b/docs/capacity-management.html @@ -43,7 +43,7 @@