{
  "data": {
    "a": {
      "slug": "text-generation-webui",
      "name": "TextGen",
      "vendor": "oobabooga",
      "vendorUrl": "https://github.com/oobabooga",
      "kind": "platform",
      "category": "local-ai",
      "summary": "Open-source desktop and browser app for running language models on the owner's hardware, formerly text-generation-webui. With `--api` it serves an OpenAI and Anthropic-compatible local API with tool calling, vision, embeddings and image generation.",
      "url": "https://www.anchorterminal.com/tools/text-generation-webui",
      "markdownUrl": "https://www.anchorterminal.com/tools/text-generation-webui.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/text-generation-webui.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/text-generation-webui.json",
      "repo": "https://github.com/oobabooga/textgen",
      "license": "AGPL-3.0",
      "transports": [
        "http"
      ],
      "packages": [],
      "auth": "api-key",
      "authNotes": "The API takes one optional key from `--api-key`, off by default, sent as `Authorization: Bearer` on the OpenAI routes and as `x-api-key` on `/v1/messages`. A second key from `--admin-key` guards model and LoRA loading, unloading and listing, and equals the API key when unset. Keys are set at launch, have no scopes and change only with a restart. Without `--listen` or `--public-api` the server binds 127.0.0.1, rejects other Host headers and limits CORS to localhost. The web UI has no login unless `--gradio-auth` is set.",
      "pricing": "free",
      "pricingNotes": "Free and AGPL-3.0, with no account, card or paid edition. Portable builds and source are on GitHub (checked 2026-10-08).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the docs folder or the API source (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 47700,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://github.com/oobabooga/textgen/wiki",
      "capabilities": [
        "inference.local",
        "inference.open-weights",
        "agent.mcp-client",
        "embed.text",
        "image.generate"
      ],
      "tags": [
        "open-source",
        "local",
        "self-hosted",
        "free",
        "no-card",
        "account-free",
        "openai-compatible",
        "open-weights",
        "streaming",
        "mcp",
        "docker",
        "no-telemetry"
      ],
      "lastRelease": "2026-05-20",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.1,
        "grade": "E",
        "agentReady": false,
        "rank": 775,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 15,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 50,
          "maintenance": 24,
          "payments": 60,
          "reliability": 51,
          "schema": 61,
          "security": 40,
          "transparency": 49
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-03-18. Two Critical advisories at 9.1. GHSA-jg96-p5p6-q3cv (CVE-2026-35050) let a user of the web UI write Python files through a path traversal in extension settings and run them, in 4.1 and earlier, fixed in 4.1.1. GHSA-4p45-76cc-7p62 let a caller write or delete files through a character name on instances started with `--listen`, fixed in 4.0. Both fixed and published, -2. https://github.com/oobabooga/textgen/security/advisories/GHSA-jg96-p5p6-q3cv",
          "2026-03-18. GHSA-fpwc-4mvr-7jpr (High, 7.1). `/v1/chat/completions` and `/v1/completions` fetched any `image_url` from the server side, so a caller could reach internal addresses, in 4.1 and earlier. Fixed in 4.1.1 and published, -1. https://github.com/oobabooga/textgen/security/advisories/GHSA-fpwc-4mvr-7jpr",
          "2025-10-13 to 2026-04-03. Seven more advisories in the year, four High and three Moderate, among them a file read through an uploaded symbolic link, four path traversals in preset, grammar, template and prompt loading, an SSRF in the superbooga extensions and a Gradio path-check bypass fixed in 4.3. All published with fixes, -1. https://github.com/oobabooga/textgen/security"
        ],
        "verdict": "AGPL-3.0 with no telemetry, and a local API on 127.0.0.1:5000 that checks the Host header, limits CORS to localhost and separates an admin key from the caller's key. No release since v4.9 on 20 May 2026, no code commits since 31 May, no test suite, and ten security advisories in the year, all fixed.",
        "bestFor": "A person who wants one app for several backends (llama.cpp, ExLlamaV3, Transformers) with an OpenAI and Anthropic-compatible endpoint, LoRA training and image generation.",
        "strengths": [
          "AGPL-3.0, with analytics switched off in the source and a README that states zero telemetry",
          "One server answers `/v1/chat/completions`, `/v1/completions` and Anthropic's `/v1/messages`, with tool calling and streaming",
          "Since v4.9 the API rejects Host headers other than localhost and 127.0.0.1 and limits CORS to localhost unless `--listen` or `--public-api` is set",
          "A separate `--admin-key` guards model and LoRA loading, apart from the `--api-key` callers use",
          "Ten security advisories published on GitHub with patched versions named, the newest on 3 April 2026"
        ],
        "weaknesses": [
          "No release since v4.9 on 20 May 2026 and no code commit on `main` or `dev` since 31 May 2026",
          "No test suite. The seven GitHub workflows only build release packages on manual dispatch",
          "807 open issues and 40 open pull requests, with no SECURITY.md or disclosure address",
          "Two Critical advisories (9.1) published on 18 March 2026, both path traversals in the web UI, fixed in 4.0 and 4.1.1",
          "The API key is off by default, set only at launch, and has no scopes or per-client keys",
          "No rate limits, error list or published OpenAPI file in the docs. The schema is served only by a running server at `/docs`"
        ],
        "agentNotes": [
          "Ask the owner to launch with `--api`. Nothing listens on port 5000 without it, and a model must be loaded first",
          "Call `http://127.0.0.1:5000/v1`. Any Host header other than localhost or 127.0.0.1 gets 400 `Invalid host header` unless `--listen` is set",
          "Send the key as `Authorization: Bearer` on OpenAI routes and as `x-api-key` on `/v1/messages`. Model loading needs the admin key",
          "Read `http://127.0.0.1:5000/docs` or `modules/api/typing.py` for parameters. `max_tokens` defaults to 512 on chat completions",
          "Run tool calls yourself. The API returns `finish_reason: \"tool_calls\"` and executes nothing on the server",
          "Use the repository name `oobabooga/textgen`. The old `text-generation-webui` URL redirects"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.1
          }
        ],
        "editorialScores": {
          "ergonomics": 50,
          "maintenance": 24,
          "payments": 60,
          "reliability": 51,
          "schema": 61,
          "security": 40,
          "transparency": 70
        },
        "provenanceScore": 27
      },
      "connect": {
        "install": "git clone https://github.com/oobabooga/textgen\ncd textgen\npython -m venv venv\nsource venv/bin/activate\npip install -r requirements/portable/requirements.txt --upgrade\npython server.py --portable --api --auto-launch",
        "http": "curl http://127.0.0.1:5000/v1/chat/completions \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}], \"temperature\": 0.6, \"top_p\": 0.95, \"top_k\": 20}'"
      },
      "letme": {
        "capability": "https://letme.dev/inference.local",
        "tool": "https://letme.dev/text-generation-webui"
      },
      "area": "models",
      "provenance": {
        "legalEntity": "",
        "domain": "github.com/oobabooga",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/oobabooga/textgen/releases",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The project belongs to a developer who publishes as oobabooga. The LICENSE is the AGPL-3.0 text and names no legal entity, and the README acknowledges a grant from Andreessen Horowitz in August 2023.",
          "No vendor domain. The README links only the GitHub repository, its wiki, a subreddit, a Substack and a Hugging Face space.",
          "No terms of use and no privacy policy were found in the repository, the README or the wiki, so both fields are left out. The README states zero telemetry.",
          "No SECURITY.md (the Security tab says none is set up) and no security.txt of the project's own.",
          "There's no hosted endpoint. The API answers on the owner's machine, at 127.0.0.1:5000 by default."
        ],
        "score": 27
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/text-generation-webui.json"
    },
    "answer": "TextGen scores 45.1 (E) on agent readiness against Underdog's 29.5 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community.",
    "b": {
      "slug": "underdog",
      "name": "Underdog",
      "vendor": "Conway Research",
      "vendorUrl": "https://underdog.ai",
      "kind": "platform",
      "category": "local-ai",
      "summary": "A personal AI from Conway Research that runs on the owner's Mac with Apple silicon.",
      "url": "https://www.anchorterminal.com/tools/underdog",
      "markdownUrl": "https://www.anchorterminal.com/tools/underdog.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/underdog.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/underdog.json",
      "license": "Model weights Apache-2.0 on Hugging Face (Underdog 27B 1.0 and its ternary build, Woof 4B and 2B 1.1, Bark 0.8B 1.0); woof-1.0-4B carries the Apache-2.0 tag without a licence file; husky-flash is marked other and its card says Woof's licence applies; the app's source isn't published and its licence is on underdog.ai, unchecked",
      "transports": [],
      "packages": [],
      "auth": "none",
      "authNotes": "No API, MCP server, CLI or credential for agents from Conway found as of 3 October 2026. The husky-flash card names `husky serve --model ConwayResearch/husky-flash` from an \"Underdog Greyhound repository\" that isn't public, with no port or protocol documented. Conway's 27B cards run the weights through Inco AI's Splash, which listens on `127.0.0.1:8000` with an OpenAI-compatible API and no authentication unless `--api-key` is set. The weights download from Hugging Face without a gate, though the 27B card says to run `hf auth login` first. underdog.ai, whose robots.txt refuses our reader, is unchecked.",
      "pricing": "free",
      "pricingNotes": "Free. Underdog's pricing page says \"100% free\", \"Free forever? Yes. It's your computer doing the work\" and \"There is nothing to bill you for\", with no paid tier (text supplied on 3 October 2026, because underdog.ai refuses our reader). The model weights are free Apache-2.0 downloads on Hugging Face with no login or card. The page links a sign-in, and whether the app needs an account is unchecked.",
      "priceSummary": "Free",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No payment protocol on conway.tech, husky.underdog.ai, Conway's Hugging Face organisation or its GitHub repositories (3 October 2026); underdog.ai unchecked.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-03"
      },
      "capabilities": [
        "inference.open-weights",
        "speech.stt"
      ],
      "tags": [
        "local",
        "apple-silicon",
        "open-weights",
        "mlx"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "disclosure": "Underdog competes with LocalGhost, which Anchor Terminal's founder builds. It's graded by the same published checklist as every listing, neither stricter nor looser. Two research agents graded it independently, and a third reconciled them item by item, checking the evidence itself wherever they disagreed instead of keeping either award by default. underdog.ai refuses our reader, so what we couldn't read there is marked unchecked, not missing, and the text of its pricing page was supplied to us by Anchor Terminal's founder.",
      "competesWith": "localghost",
      "anchor": {
        "graded": true,
        "score": 29.5,
        "grade": "F",
        "agentReady": false,
        "rank": 833,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 18,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 15,
          "maintenance": 56,
          "payments": 60,
          "reliability": 33,
          "schema": 24,
          "security": 14,
          "transparency": 19
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-10-03"
        },
        "negative": 0,
        "verdict": "Apache-2.0 weights on Hugging Face for Underdog 27B 1.0, Woof 4B and 2B 1.1 and Bark 0.8B 1.0, with no gate. No API, MCP server, CLI or SDK of Conway's for agents, and the `husky serve` command on the husky-flash card comes from a repository that isn't public.",
        "bestFor": "An owner who wants a Mac assistant over their own mail and calendar that, per Conway, keeps everything on the machine.",
        "disclosure": "Underdog competes with LocalGhost, which Anchor Terminal's founder builds. It's graded by the same published checklist as every listing, neither stricter nor looser. Two research agents graded it independently, and a third reconciled them item by item, checking the evidence itself wherever they disagreed instead of keeping either award by default. underdog.ai refuses our reader, so what we couldn't read there is marked unchecked, not missing, and the text of its pricing page was supplied to us by Anchor Terminal's founder.",
        "strengths": [
          "Apache-2.0 weights on Hugging Face for Underdog 27B 1.0, Woof 4B and 2B 1.1 and Bark 0.8B 1.0, with no gate",
          "Eight Underdog model repositories published between 4 and 30 September 2026, the latest Underdog 27B 1.0 and a 2-bit ternary build on 30 September",
          "Woof 4B and 2B 1.1 ship release-provenance.json with a byte count and SHA-256 for every file",
          "Husky's speed post names its hardware, macOS and MLX versions and method, and publishes its weaker results too (1.02 to 1.27 times MLX on writing)",
          "The 27B weights run outside the app through Splash's OpenAI-compatible API, per Conway's ternary card"
        ],
        "weaknesses": [
          "No API, MCP server, CLI or SDK of Conway's for agents, and the `husky serve` command on the husky-flash card comes from a repository that isn't public",
          "The app's source isn't published, and none of Conway's three public GitHub repositories mentions Underdog",
          "The Woof 4B 1.1, Woof 2B 1.1 and Bark 0.8B 1.0 cards are one or two sentences, with no base model, context length or limits",
          "No security.txt at conway.tech (404), no SECURITY.md, and no disclosure policy, advisories or bug bounty found",
          "Conway's home page says Underdog 27B beats Claude Opus 4.6, and the 27B cards publish speed figures only"
        ],
        "agentNotes": [
          "Don't look for an agent interface to Underdog. We found no API, MCP server, CLI or SDK, and underdog.ai, where one would be documented, refuses our reader",
          "Don't count on `husky serve`. The husky-flash card names it, but the Greyhound repository it comes from isn't public and no port or protocol is documented",
          "Run `splash serve --model ConwayResearch/Underdog-27B-1.0 --default-reasoning-effort medium` with Inco AI's Splash 1.1.0 or later for an OpenAI-compatible endpoint on `127.0.0.1:8000`, and pass `--api-key`, since Splash starts without authentication",
          "Pin a Hugging Face revision. Woof 4B went from 1.0 to 1.1 in eight days with no note of what changed",
          "Check Woof 4B and 2B 1.1 files against the SHA-256 values in release-provenance.json before loading them"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "F",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 29.5
          }
        ],
        "editorialScores": {
          "ergonomics": 15,
          "maintenance": 56,
          "payments": 60,
          "reliability": 33,
          "schema": 24,
          "security": 14,
          "transparency": 23
        },
        "provenanceScore": 15
      },
      "letme": {
        "capability": "https://letme.dev/inference.open-weights",
        "tool": "https://letme.dev/underdog"
      },
      "area": "models",
      "provenance": {
        "legalEntity": "",
        "domain": "underdog.ai",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "https://underdog.ai/terms",
        "privacy": "https://underdog.ai/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-10-03",
        "notes": [
          "underdog.ai's robots.txt refuses our reader (again at about 08:15 UTC on 3 October 2026), so its terms, privacy policy, changelog, domain registration and security.txt are unchecked, not missing.",
          "Terms (https://underdog.ai/terms) and a privacy policy (https://underdog.ai/privacy) are linked from Underdog's pricing page, whose text was supplied to us on 3 October 2026. Their content is unchecked, because our reader is refused.",
          "husky.underdog.ai, a separate host linked from conway.tech and the founder's page, loaded for our reader.",
          "conway.tech's home page links no terms or privacy policy, and conway.tech has no security.txt (404) and no llms.txt (404).",
          "No registered company name found. a16z says Conway Research, conway.tech says Conway, and the licence in Conway's automaton repository reads 'Copyright (c) 2026 Conway'.",
          "No status page applies, since Underdog runs on the owner's machine with no hosted endpoint, and no changelog was found outside underdog.ai."
        ],
        "score": 15
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/underdog.json",
      "live": {
        "slug": "underdog",
        "securityTxt": {
          "url": "https://underdog.ai/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-09-17T00:00:00.000Z",
          "checkedAt": "2026-10-08T15:39:00.486760673Z"
        },
        "domain": {
          "domain": "underdog.ai",
          "registered": "2020-03-30",
          "source": "https://rdap.identitydigital.services/rdap/domain/underdog.ai",
          "checkedAt": "2026-10-04T13:05:26.708018286Z"
        },
        "pages": [
          {
            "url": "https://underdog.ai/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:25:26.100715614Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e17b8e9e48b7"
          },
          {
            "url": "https://underdog.ai/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:25:28.33774643Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6c84bce579c3"
          }
        ],
        "updatedAt": "2026-10-08T18:25:28.33774643Z"
      }
    },
    "facts": [
      {
        "a": "Model platform",
        "b": "Model platform",
        "name": "Kind"
      },
      {
        "a": "oobabooga",
        "b": "Conway Research",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "AGPL-3.0",
        "b": "Model weights Apache-2.0 on Hugging Face (Underdog 27B 1.0 and its ternary build, Woof 4B and 2B 1.1, Bark 0.8B 1.0); woof-1.0-4B carries the Apache-2.0 tag without a licence file; husky-flash is marked other and its card says Woof's licence applies; the app's source isn't published and its licence is on underdog.ai, unchecked",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-05-20",
        "b": "2026-09-30",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "2026-09-01",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-09-30",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "48k stars",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "TextGen scores 45.1 (E) on agent readiness against Underdog's 29.5 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community.",
        "question": "Which is better for AI agents, TextGen or Underdog?"
      },
      {
        "answer": "TextGen is open source (AGPL-3.0). No open-source release is listed for Underdog.",
        "question": "Are TextGen and Underdog open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 51 against 33",
          "Schema \u0026 documentation, 61 against 24",
          "Agent ergonomics, 50 against 15",
          "Security \u0026 auth, 40 against 14",
          "Transparency \u0026 trust, 49 against 19"
        ],
        "also": [
          "Free to start without a card",
          "Open source"
        ],
        "goodFor": "A person who wants one app for several backends (llama.cpp, ExLlamaV3, Transformers) with an OpenAI and Anthropic-compatible endpoint, LoRA training and image generation.",
        "slug": "text-generation-webui",
        "watchFor": "No release since v4.9 on 20 May 2026 and no code commit on `main` or `dev` since 31 May 2026"
      },
      {
        "aheadOn": [
          "Maintenance \u0026 community, 56 against 24"
        ],
        "also": [
          "No key needed to call it",
          "No incidents deducted, where TextGen loses 4 points for them"
        ],
        "goodFor": "An owner who wants a Mac assistant over their own mail and calendar that, per Conway, keeps everything on the machine.",
        "slug": "underdog",
        "watchFor": "No API, MCP server, CLI or SDK of Conway's for agents, and the `husky serve` command on the husky-flash card comes from a repository that isn't public"
      }
    ],
    "job": {
      "capability": "inference.open-weights",
      "name": "Inference open weights"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/anythingllm-vs-text-generation-webui.json",
        "title": "AnythingLLM vs TextGen",
        "url": "https://www.anchorterminal.com/compare/anythingllm-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-model-runner-vs-text-generation-webui.json",
        "title": "Docker Model Runner vs TextGen",
        "url": "https://www.anchorterminal.com/compare/docker-model-runner-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/foundry-local-vs-text-generation-webui.json",
        "title": "Foundry Local vs TextGen",
        "url": "https://www.anchorterminal.com/compare/foundry-local-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ghost-core-vs-text-generation-webui.json",
        "title": "Core vs TextGen",
        "url": "https://www.anchorterminal.com/compare/ghost-core-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gpt4all-vs-text-generation-webui.json",
        "title": "GPT4All vs TextGen",
        "url": "https://www.anchorterminal.com/compare/gpt4all-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-text-generation-webui.json",
        "title": "Jan vs TextGen",
        "url": "https://www.anchorterminal.com/compare/jan-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/khoj-vs-text-generation-webui.json",
        "title": "Khoj vs TextGen",
        "url": "https://www.anchorterminal.com/compare/khoj-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/koboldcpp-vs-text-generation-webui.json",
        "title": "KoboldCpp vs TextGen",
        "url": "https://www.anchorterminal.com/compare/koboldcpp-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lemonade-vs-text-generation-webui.json",
        "title": "Lemonade vs TextGen",
        "url": "https://www.anchorterminal.com/compare/lemonade-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/llama-cpp-vs-text-generation-webui.json",
        "title": "llama.cpp vs TextGen",
        "url": "https://www.anchorterminal.com/compare/llama-cpp-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lm-studio-vs-text-generation-webui.json",
        "title": "LM Studio vs TextGen",
        "url": "https://www.anchorterminal.com/compare/lm-studio-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localai-vs-text-generation-webui.json",
        "title": "LocalAI vs TextGen",
        "url": "https://www.anchorterminal.com/compare/localai-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mlx-lm-vs-text-generation-webui.json",
        "title": "MLX LM vs TextGen",
        "url": "https://www.anchorterminal.com/compare/mlx-lm-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ollama-vs-text-generation-webui.json",
        "title": "Ollama vs TextGen",
        "url": "https://www.anchorterminal.com/compare/ollama-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/open-webui-vs-text-generation-webui.json",
        "title": "Open WebUI vs TextGen",
        "url": "https://www.anchorterminal.com/compare/open-webui-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/screenpipe-vs-text-generation-webui.json",
        "title": "screenpipe vs TextGen",
        "url": "https://www.anchorterminal.com/compare/screenpipe-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/screenpipe-vs-underdog.json",
        "title": "screenpipe vs Underdog",
        "url": "https://www.anchorterminal.com/compare/screenpipe-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/anythingllm-vs-underdog.json",
        "title": "AnythingLLM vs Underdog",
        "url": "https://www.anchorterminal.com/compare/anythingllm-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-model-runner-vs-underdog.json",
        "title": "Docker Model Runner vs Underdog",
        "url": "https://www.anchorterminal.com/compare/docker-model-runner-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/foundry-local-vs-underdog.json",
        "title": "Foundry Local vs Underdog",
        "url": "https://www.anchorterminal.com/compare/foundry-local-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ghost-core-vs-underdog.json",
        "title": "Core vs Underdog",
        "url": "https://www.anchorterminal.com/compare/ghost-core-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gpt4all-vs-underdog.json",
        "title": "GPT4All vs Underdog",
        "url": "https://www.anchorterminal.com/compare/gpt4all-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-underdog.json",
        "title": "Jan vs Underdog",
        "url": "https://www.anchorterminal.com/compare/jan-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/koboldcpp-vs-underdog.json",
        "title": "KoboldCpp vs Underdog",
        "url": "https://www.anchorterminal.com/compare/koboldcpp-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lemonade-vs-underdog.json",
        "title": "Lemonade vs Underdog",
        "url": "https://www.anchorterminal.com/compare/lemonade-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/llama-cpp-vs-underdog.json",
        "title": "llama.cpp vs Underdog",
        "url": "https://www.anchorterminal.com/compare/llama-cpp-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lm-studio-vs-underdog.json",
        "title": "LM Studio vs Underdog",
        "url": "https://www.anchorterminal.com/compare/lm-studio-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localai-vs-underdog.json",
        "title": "LocalAI vs Underdog",
        "url": "https://www.anchorterminal.com/compare/localai-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mlx-lm-vs-underdog.json",
        "title": "MLX LM vs Underdog",
        "url": "https://www.anchorterminal.com/compare/mlx-lm-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ollama-vs-underdog.json",
        "title": "Ollama vs Underdog",
        "url": "https://www.anchorterminal.com/compare/ollama-vs-underdog"
      }
    ],
    "scores": [
      {
        "by": 18,
        "edge": "text-generation-webui",
        "key": "reliability",
        "name": "Reliability",
        "text-generation-webui": 51,
        "underdog": 33,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 37,
        "edge": "text-generation-webui",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "text-generation-webui": 61,
        "underdog": 24,
        "weight": 13
      },
      {
        "by": 35,
        "edge": "text-generation-webui",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "text-generation-webui": 50,
        "underdog": 15,
        "weight": 13
      },
      {
        "by": 26,
        "edge": "text-generation-webui",
        "key": "security",
        "name": "Security \u0026 auth",
        "text-generation-webui": 40,
        "underdog": 14,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "text-generation-webui": 60,
        "underdog": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 32,
        "edge": "underdog",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "text-generation-webui": 24,
        "underdog": 56,
        "weight": 7
      },
      {
        "by": 30,
        "edge": "text-generation-webui",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "text-generation-webui": 49,
        "underdog": 19,
        "weight": 7
      }
    ],
    "summary": "TextGen scores 45.1 (E) on agent readiness against Underdog's 29.5 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community. Both do inference open weights.",
    "verdicts": {
      "text-generation-webui": "AGPL-3.0 with no telemetry, and a local API on 127.0.0.1:5000 that checks the Host header, limits CORS to localhost and separates an admin key from the caller's key. No release since v4.9 on 20 May 2026, no code commits since 31 May, no test suite, and ten security advisories in the year, all fixed.",
      "underdog": "Apache-2.0 weights on Hugging Face for Underdog 27B 1.0, Woof 4B and 2B 1.1 and Bark 0.8B 1.0, with no gate. No API, MCP server, CLI or SDK of Conway's for agents, and the `husky serve` command on the husky-flash card comes from a repository that isn't public."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog",
    "json": "https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog.md",
    "slim": "https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog.min.md"
  },
  "markdown": "TextGen scores 45.1 (E) on agent readiness against Underdog's 29.5 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community. Both do inference open weights.\n\n- TextGen: grade E, 45.1/100, rank #775 of 842. Markdown https://www.anchorterminal.com/tools/text-generation-webui.md · JSON https://www.anchorterminal.com/api/v1/tools/text-generation-webui.json\n- Underdog: grade F, 29.5/100, rank #833 of 842. Markdown https://www.anchorterminal.com/tools/underdog.md · JSON https://www.anchorterminal.com/api/v1/tools/underdog.json\n\n## Which one, for what\n\n### TextGen (E)\n\nGood for: A person who wants one app for several backends (llama.cpp, ExLlamaV3, Transformers) with an OpenAI and Anthropic-compatible endpoint, LoRA training and image generation.\n\nAhead on:\n- Reliability, 51 against 33\n- Schema \u0026 documentation, 61 against 24\n- Agent ergonomics, 50 against 15\n- Security \u0026 auth, 40 against 14\n- Transparency \u0026 trust, 49 against 19\n\nAlso in its favour:\n- Free to start without a card\n- Open source\n\nWatch for: No release since v4.9 on 20 May 2026 and no code commit on `main` or `dev` since 31 May 2026\n\n### Underdog (F)\n\nGood for: An owner who wants a Mac assistant over their own mail and calendar that, per Conway, keeps everything on the machine.\n\nAhead on:\n- Maintenance \u0026 community, 56 against 24\n\nAlso in its favour:\n- No key needed to call it\n- No incidents deducted, where TextGen loses 4 points for them\n\nWatch for: No API, MCP server, CLI or SDK of Conway's for agents, and the `husky serve` command on the husky-flash card comes from a repository that isn't public\n\n\n## Score by category\n\n| Category | Weight | TextGen | Underdog | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 51 | 33 | TextGen +18 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 61 | 24 | TextGen +37 |\n| Agent ergonomics | 13% (16.2 this run) | 50 | 15 | TextGen +35 |\n| Security \u0026 auth | 14% (17.5 this run) | 40 | 14 | TextGen +26 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 60 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 24 | 56 | Underdog +32 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 49 | 19 | TextGen +30 |\n| Negative events | ≤15 | -4 | 0 | |\n| **Total** | | **45.1 · E** | **29.5 · F** | |\n\n## Facts side by side\n\n| Fact | TextGen | Underdog |\n| --- | --- | --- |\n| Kind | Model platform | Model platform |\n| Vendor | oobabooga | Conway Research |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports | HTTP |  |\n| Auth | API key | None |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | AGPL-3.0 | Model weights Apache-2.0 on Hugging Face (Underdog 27B 1.0 and its ternary build, Woof 4B and 2B 1.1, Bark 0.8B 1.0); woof-1.0-4B carries the Apache-2.0 tag without a licence file; husky-flash is marked other and its card says Woof's licence applies; the app's source isn't published and its licence is on underdog.ai, unchecked |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-05-20 | 2026-09-30 |\n| Terms last updated | no document linked | 2026-09-01 |\n| Privacy policy last updated | no document linked | 2026-09-30 |\n| Customer content may train models |  | not found in the text |\n| Terms restrict automated access |  | not found in the text |\n| Terms restrict benchmarking |  | not found in the text |\n| Terms or service can change without notice |  | not found in the text |\n| Arbitration or class-action waiver |  | not found in the text |\n| Popularity | 48k stars | none |\n| Agent reviews | none | 2/5 (2) |\n\n## Verdicts\n\n**TextGen.** AGPL-3.0 with no telemetry, and a local API on 127.0.0.1:5000 that checks the Host header, limits CORS to localhost and separates an admin key from the caller's key. No release since v4.9 on 20 May 2026, no code commits since 31 May, no test suite, and ten security advisories in the year, all fixed.\n\n**Underdog.** Apache-2.0 weights on Hugging Face for Underdog 27B 1.0, Woof 4B and 2B 1.1 and Bark 0.8B 1.0, with no gate. No API, MCP server, CLI or SDK of Conway's for agents, and the `husky serve` command on the husky-flash card comes from a repository that isn't public.\n\n## Before you call either\n\n### TextGen\n\n1. Ask the owner to launch with `--api`. Nothing listens on port 5000 without it, and a model must be loaded first\n2. Call `http://127.0.0.1:5000/v1`. Any Host header other than localhost or 127.0.0.1 gets 400 `Invalid host header` unless `--listen` is set\n3. Send the key as `Authorization: Bearer` on OpenAI routes and as `x-api-key` on `/v1/messages`. Model loading needs the admin key\n4. Read `http://127.0.0.1:5000/docs` or `modules/api/typing.py` for parameters. `max_tokens` defaults to 512 on chat completions\n5. Run tool calls yourself. The API returns `finish_reason: \"tool_calls\"` and executes nothing on the server\n6. Use the repository name `oobabooga/textgen`. The old `text-generation-webui` URL redirects\n\n### Underdog\n\n1. Don't look for an agent interface to Underdog. We found no API, MCP server, CLI or SDK, and underdog.ai, where one would be documented, refuses our reader\n2. Don't count on `husky serve`. The husky-flash card names it, but the Greyhound repository it comes from isn't public and no port or protocol is documented\n3. Run `splash serve --model ConwayResearch/Underdog-27B-1.0 --default-reasoning-effort medium` with Inco AI's Splash 1.1.0 or later for an OpenAI-compatible endpoint on `127.0.0.1:8000`, and pass `--api-key`, since Splash starts without authentication\n4. Pin a Hugging Face revision. Woof 4B went from 1.0 to 1.1 in eight days with no note of what changed\n5. Check Woof 4B and 2B 1.1 files against the SHA-256 values in release-provenance.json before loading them\n\n## Questions\n\n### Which is better for AI agents, TextGen or Underdog?\n\nTextGen scores 45.1 (E) on agent readiness against Underdog's 29.5 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community.\n\n### Are TextGen and Underdog open source?\n\nTextGen is open source (AGPL-3.0). No open-source release is listed for Underdog.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog.json, and with the fewest tokens: https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"text-generation-webui\", \"b\": \"underdog\"}`. From a terminal: `anchor compare text-generation-webui underdog`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/text-generation-webui.json and https://www.anchorterminal.com/api/v1/tools/underdog.json\n\n## Other comparisons with TextGen or Underdog\n\n- [AnythingLLM vs TextGen](https://www.anchorterminal.com/compare/anythingllm-vs-text-generation-webui.md)\n- [Docker Model Runner vs TextGen](https://www.anchorterminal.com/compare/docker-model-runner-vs-text-generation-webui.md)\n- [Foundry Local vs TextGen](https://www.anchorterminal.com/compare/foundry-local-vs-text-generation-webui.md)\n- [Core vs TextGen](https://www.anchorterminal.com/compare/ghost-core-vs-text-generation-webui.md)\n- [GPT4All vs TextGen](https://www.anchorterminal.com/compare/gpt4all-vs-text-generation-webui.md)\n- [Jan vs TextGen](https://www.anchorterminal.com/compare/jan-vs-text-generation-webui.md)\n- [Khoj vs TextGen](https://www.anchorterminal.com/compare/khoj-vs-text-generation-webui.md)\n- [KoboldCpp vs TextGen](https://www.anchorterminal.com/compare/koboldcpp-vs-text-generation-webui.md)\n- [Lemonade vs TextGen](https://www.anchorterminal.com/compare/lemonade-vs-text-generation-webui.md)\n- [llama.cpp vs TextGen](https://www.anchorterminal.com/compare/llama-cpp-vs-text-generation-webui.md)\n- [LM Studio vs TextGen](https://www.anchorterminal.com/compare/lm-studio-vs-text-generation-webui.md)\n- [LocalAI vs TextGen](https://www.anchorterminal.com/compare/localai-vs-text-generation-webui.md)\n- [MLX LM vs TextGen](https://www.anchorterminal.com/compare/mlx-lm-vs-text-generation-webui.md)\n- [Ollama vs TextGen](https://www.anchorterminal.com/compare/ollama-vs-text-generation-webui.md)\n- [Open WebUI vs TextGen](https://www.anchorterminal.com/compare/open-webui-vs-text-generation-webui.md)\n- [screenpipe vs TextGen](https://www.anchorterminal.com/compare/screenpipe-vs-text-generation-webui.md)\n- [screenpipe vs Underdog](https://www.anchorterminal.com/compare/screenpipe-vs-underdog.md)\n- [AnythingLLM vs Underdog](https://www.anchorterminal.com/compare/anythingllm-vs-underdog.md)\n- [Docker Model Runner vs Underdog](https://www.anchorterminal.com/compare/docker-model-runner-vs-underdog.md)\n- [Foundry Local vs Underdog](https://www.anchorterminal.com/compare/foundry-local-vs-underdog.md)\n- [Core vs Underdog](https://www.anchorterminal.com/compare/ghost-core-vs-underdog.md)\n- [GPT4All vs Underdog](https://www.anchorterminal.com/compare/gpt4all-vs-underdog.md)\n- [Jan vs Underdog](https://www.anchorterminal.com/compare/jan-vs-underdog.md)\n- [KoboldCpp vs Underdog](https://www.anchorterminal.com/compare/koboldcpp-vs-underdog.md)\n- [Lemonade vs Underdog](https://www.anchorterminal.com/compare/lemonade-vs-underdog.md)\n- [llama.cpp vs Underdog](https://www.anchorterminal.com/compare/llama-cpp-vs-underdog.md)\n- [LM Studio vs Underdog](https://www.anchorterminal.com/compare/lm-studio-vs-underdog.md)\n- [LocalAI vs Underdog](https://www.anchorterminal.com/compare/localai-vs-underdog.md)\n- [MLX LM vs Underdog](https://www.anchorterminal.com/compare/mlx-lm-vs-underdog.md)\n- [Ollama vs Underdog](https://www.anchorterminal.com/compare/ollama-vs-underdog.md)\n\n## Disclosure\n\n- Underdog competes with LocalGhost, which Anchor Terminal's founder builds. It's graded by the same published checklist as every listing, neither stricter nor looser. Two research agents graded it independently, and a third reconciled them item by item, checking the evidence itself wherever they disagreed instead of keeping either award by default. underdog.ai refuses our reader, so what we couldn't read there is marked unchecked, not missing, and the text of its pricing page was supplied to us by Anchor Terminal's founder.\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "TextGen vs Underdog",
        "url": ""
      }
    ],
    "description": "TextGen scores 45.1 (E) on agent readiness against Underdog's 29.5 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community. Both do inference open weights. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "TextGen E 45.1",
      "Underdog F 29.5",
      "scores"
    ],
    "h1": "TextGen vs Underdog",
    "image": "https://www.anchorterminal.com/assets/og/compare-text-generation-webui-vs-underdog.png",
    "path": "/compare/text-generation-webui-vs-underdog",
    "published": "2026-10-01",
    "section": "tools",
    "title": "TextGen vs Underdog for AI agents, E 45.1 vs F 29.5 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog"
  },
  "tokens": {
    "markdown": 2750,
    "slim": 730
  },
  "version": 1
}
