{
  "data": {
    "a": {
      "slug": "privategpt",
      "name": "PrivateGPT",
      "vendor": "Zylon (PriBAI Technology Spain S.L.)",
      "vendorUrl": "https://docs.privategpt.dev",
      "kind": "http-api",
      "category": "local-ai",
      "summary": "PrivateGPT is Zylon's open-source server that puts an Anthropic-style messages API, document ingestion, retrieval with citations, built-in tools and MCP connectors in front of any OpenAI-compatible local model server. The owner runs it.",
      "url": "https://www.anchorterminal.com/tools/privategpt",
      "markdownUrl": "https://www.anchorterminal.com/tools/privategpt.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/privategpt.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/privategpt.json",
      "dns": "privategpt.grade.anchorterminal.com",
      "repo": "https://github.com/zylon-ai/private-gpt",
      "license": "Apache-2.0",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "oci",
          "name": "zylonai/private-gpt"
        }
      ],
      "auth": "none",
      "authNotes": "Authentication is off by default. When `server.auth.enabled` is set, every request must carry one static secret in the `Authorization` header, compared with the whole header value. There are no per-user keys, scopes or rotation, and the docs show it as a Bearer token, a Basic value and an Anthropic API key in different places (checked 2026-11-06).",
      "pricing": "free",
      "pricingNotes": "Free under Apache-2.0 with no account or card. The cost is the owner's hardware and model server. Zylon sells a separate enterprise platform built on PrivateGPT through demos, with no public price (checked 2026-11-06).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the source, the OpenAPI file or the docs (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 57600,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.privategpt.dev/introduction",
      "llmsTxt": "https://docs.privategpt.dev/llms.txt",
      "openapi": "https://raw.githubusercontent.com/zylon-ai/private-gpt/main/fern/openapi/openapi.json",
      "capabilities": [
        "inference.local",
        "memory.search",
        "agent.mcp-client"
      ],
      "tags": [
        "open-source",
        "local",
        "self-hosted",
        "docker",
        "openapi",
        "llms-txt",
        "rag",
        "mcp-client",
        "anthropic-compatible",
        "python",
        "free"
      ],
      "lastRelease": "2026-06-18",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 53.2,
        "grade": "D",
        "agentReady": false,
        "rank": 969,
        "ranked": true,
        "rankOf": 1520,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 64,
          "maintenance": 41,
          "payments": 60,
          "reliability": 70,
          "schema": 83,
          "security": 32,
          "transparency": 64
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": -7,
        "negativeNotes": [
          "Issue #2269, opened 11 June 2026, reports that the async ingestion API reads any local path given as a URI artifact. The stale bot closed it as not planned on 5 July with no maintainer reply, and `load_file_from_uri` in the source of 29 October 2026 still falls back to reading a local file for any value that isn't a URL, s3 or base64. With authentication off and a 0.0.0.0 bind by default, that is an open file-read path on a default install. Read from the source, not run (-7). https://github.com/zylon-ai/private-gpt/issues/2269"
        ],
        "verdict": "PrivateGPT 1.0 is an Apache-2.0 server that gives local models an Anthropic-style messages API with retrieval, citations, tools and MCP, documented by an OpenAPI file and llms.txt. A default start has authentication off, listens on every interface and reads local paths given as URIs, and a public report of that was closed without a reply.",
        "bestFor": "A local backend for apps and agents that want an Anthropic-style API with document retrieval, citations and tools over local models.",
        "strengths": [
          "Messages API modelled on Anthropic's, so Claude Code and Anthropic SDKs work by changing the base URL",
          "OpenAPI file of 38 paths, llms.txt and Markdown copies of every docs page",
          "Retrieval with citations, async ingestion, web, database and tabular tools, and remote MCP servers in one API",
          "Apache-2.0, with no telemetry to Zylon found in the source and OpenTelemetry tracing off by default",
          "Works with Ollama, llama.cpp, vLLM, LM Studio or any OpenAI-compatible server"
        ],
        "weaknesses": [
          "Authentication is off by default, the server binds 0.0.0.0 and CORS allows every origin",
          "When on, authentication is one shared static secret, with no per-user keys or scopes",
          "A June 2026 report of local file reads through URI artifacts was closed by a stale bot, and the source still reads local paths",
          "No release since 1.0.1 in June 2026 while main has moved on, including a breaking change",
          "Code execution runs as a host subprocess with resource limits, not in a container"
        ],
        "agentNotes": [
          "Turn on `server.auth` and bind to 127.0.0.1 before exposing an instance, since a default start answers any caller",
          "Point Anthropic SDKs or Claude Code at the server with `ANTHROPIC_BASE_URL=http://localhost:8080`",
          "Start an OpenAI-compatible model server and an embedding server first, and set `OPENAI_API_BASE` and `OPENAI_EMBEDDING_API_BASE`",
          "Pass ingested documents through `tool_context` to get answers with citations",
          "Treat web fetch, search and MCP results as untrusted, since PrivateGPT documents no prompt-injection handling"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 53.2
          }
        ],
        "editorialScores": {
          "ergonomics": 64,
          "maintenance": 41,
          "payments": 60,
          "reliability": 70,
          "schema": 83,
          "security": 32,
          "transparency": 67
        },
        "provenanceScore": 61,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "brew tap zylon-ai/tap\nbrew install private-gpt",
        "http": "curl http://localhost:8080/v1/messages \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"qwen3.5:35b\", \"messages\": [{\"role\": \"user\", \"content\": \"Explain retrieval-augmented generation.\"}]}'"
      },
      "letme": {
        "capability": "https://letme.dev/inference.local",
        "tool": "https://letme.dev/privategpt"
      },
      "area": "models",
      "provenance": {
        "legalEntity": "PriBAI Technology Spain S.L.",
        "domain": "privategpt.dev",
        "domainRegistered": "2023-10-16",
        "endpointOnVendorDomain": null,
        "terms": "https://github.com/zylon-ai/private-gpt/blob/main/LICENSE",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/zylon-ai/private-gpt/blob/main/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "Self-hosted software with no hosted endpoint, so the Apache-2.0 licence stands in for terms and no privacy policy is scored.",
          "The zylon.ai terms name PriBAI Technology Spain S.L. (VAT ESB56550130) under Spanish law and cover the website and Zylon services. They forbid access through bots, scripts or scrapers, outside standard search engine or browser use. We read the terms and two public pages.",
          "RDAP gives privategpt.dev a registration date of 16 October 2023.",
          "docs.privategpt.dev/.well-known/security.txt and www.zylon.ai/.well-known/security.txt answer 404. SECURITY.md in the repository is the reporting route.",
          "docs.privategpt.dev and www.zylon.ai robots.txt allow our reader. wheels.privategpt.dev has no robots.txt (404)."
        ],
        "score": 61
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/privategpt.json",
      "live": {
        "slug": "privategpt",
        "versions": [
          {
            "registry": "github",
            "name": "zylon-ai/private-gpt",
            "version": "v1.0.1",
            "released": "2026-06-18",
            "seenAt": "2026-11-11T06:29:24.307980694Z"
          }
        ],
        "githubStars": 57634,
        "securityTxt": {
          "url": "https://privategpt.dev/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-11T16:10:48.887818755Z"
        },
        "llmsTxt": {
          "url": "https://docs.privategpt.dev/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-11T15:48:10.315847772Z"
        },
        "domain": {
          "domain": "privategpt.dev",
          "registered": "2023-10-16",
          "source": "https://pubapi.registry.google/rdap/domain/privategpt.dev",
          "checkedAt": "2026-11-08T15:06:22.208354837Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/zylon-ai/private-gpt/main/CHANGELOG.md",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-11T17:15:34.442445439Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "767d5dd99544"
          },
          {
            "url": "https://raw.githubusercontent.com/zylon-ai/private-gpt/main/LICENSE",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-11T17:15:36.454890814Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "839fbbcddc72"
          }
        ],
        "github": {
          "repo": "zylon-ai/private-gpt",
          "checkedAt": "2026-11-09T09:56:43.917042416Z",
          "stars": 57633,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-03T10:20:55Z",
          "openIssues": 2,
          "openPRs": 25,
          "issuesOpened90d": 8,
          "issuesClosed90d": 8,
          "prsMerged90d": 51,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 44,
            "failure": 2,
            "other": 4,
            "latest": "success",
            "latestAt": "2026-10-29T13:47:09Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 1,
            "medianDays": 24.1
          }
        },
        "updatedAt": "2026-11-11T17:15:36.454890814Z"
      }
    },
    "answer": "PrivateGPT scores 53.2 (D) on agent readiness against Underdog's 14.4 (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": "Underdog is a personal AI app from Conway Research that runs Conway's own open-weight models 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",
      "dns": "underdog.grade.anchorterminal.com",
      "license": "Closed-source Mac app, whose terms on underdog.ai are unchecked. Conway's model weights on Hugging Face are CC BY-NC 4.0 since 5 November 2026 (Underdog 27B 1.0 and 1.1, Underdog Ternary 1.1, Saluki 27B 1.0, Poodle 4B, Woof 4B and 2B 1.1, woof-1.0-4B, Bark 0.8B 1.0, Bark 3.0 and husky-flash), Apache-2.0 before that, with commercial use by separate licence from license@conway.tech. Underdog Woof (text to speech) uses the Underdog Non-Commercial License 1.0. The app's llama-server build is llama.cpp under MIT",
      "transports": [],
      "packages": [],
      "auth": "none",
      "authNotes": "No API, MCP server, CLI or credential for agents from Conway found as of 11 November 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. The app downloads an unmodified llama.cpp `llama-server` build with its GGUF models, with no port or outside use documented. Conway's cards run the weights through other engines (Splash, llama.cpp, Ollama), whose OpenAI-compatible servers are those projects' interfaces. The weights download from Hugging Face without a gate, though the Underdog 27B 1.0 card still 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 by the founder of Anchor Terminal on 3 October 2026, because underdog.ai refuses our reader). The Underdog Woof card says using Woof through underdog.ai and Underdog's own apps is always free (11 November 2026). The weights download from Hugging Face with no login or card, free for non-commercial use under CC BY-NC 4.0 since 5 November 2026, with commercial use by licence on request (license@conway.tech). Whether the app needs an account is unchecked.",
      "priceSummary": "Free",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No payment protocol on conway.tech, sigilwen.ca/conway or Conway's Hugging Face model cards (11 November 2026); underdog.ai and husky.underdog.ai refuse our reader and are unchecked.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-11"
      },
      "capabilities": [
        "inference.local",
        "inference.open-weights",
        "speech.stt"
      ],
      "tags": [
        "local",
        "apple-silicon",
        "open-weights",
        "mlx"
      ],
      "lastRelease": "2026-10-15",
      "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": 14.4,
        "grade": "F",
        "agentReady": false,
        "rank": 1482,
        "ranked": true,
        "rankOf": 1520,
        "categoryRank": 23,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 0,
          "maintenance": 56,
          "payments": 60,
          "reliability": 0,
          "schema": 0,
          "security": 3,
          "transparency": 17
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-11"
        },
        "negative": 0,
        "verdict": "Underdog is a free Mac app from Conway Research that runs Conway's own language and speech models on the device, with component releases dated to 15 October 2026. Conway documents no interface for outside agents, and underdog.ai refuses our reader, so its terms and privacy policy are unread. Conway's weights moved from Apache-2.0 to non-commercial licences on 5 November 2026.",
        "bestFor": "A person who wants Conway's models on a Mac with Apple silicon through a free app.",
        "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": [
          "Conway's cards say the app runs Woof, Saluki and Bark on the Mac, with Bark's audio kept on the device.",
          "The app's llama-server build is unmodified llama.cpp, signed and notarised, pinned to commit bd4eeaa and checked by SHA-256 before it runs.",
          "Dated releases of app components on Hugging Face, among them Saluki and llama-server on 8 October and Bark 3.0 on 15 October 2026.",
          "Free per Underdog's pricing text supplied by the founder of Anchor Terminal on 3 October 2026, and the Woof card says Woof is always free inside Underdog's apps."
        ],
        "weaknesses": [
          "No API, MCP server, CLI or SDK from Conway, so an outside agent has nothing documented to call.",
          "underdog.ai and husky.underdog.ai disallow ClaudeBot, so the download page, terms, privacy policy and changelog are unread.",
          "The app's source isn't published, with no public CI, issue tracker or changelog found.",
          "Conway's weights moved from Apache-2.0 to CC BY-NC 4.0 on 5 November 2026, with no notice found beyond commit titles.",
          "Five of seven open discussions on Saluki's Hugging Face page carry only their first post."
        ],
        "agentNotes": [
          "Don't plan on calling Underdog itself. Conway documents no API, MCP server or port for the app.",
          "To use Conway's weights, run them in llama.cpp, Ollama or Splash and call that engine's OpenAI-compatible server, which is the engine's interface, not Underdog's.",
          "Check the licence before commercial use. Conway's weights are CC BY-NC 4.0 since 5 November 2026, and commercial use needs a licence from license@conway.tech.",
          "Don't rely on the `husky serve` command on the husky-flash card. Its Greyhound repository isn't public."
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "F",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 14.4
          }
        ],
        "editorialScores": {
          "ergonomics": 0,
          "maintenance": 56,
          "payments": 60,
          "reliability": 0,
          "schema": 0,
          "security": 3,
          "transparency": 5
        },
        "provenanceScore": 28,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-11",
            "maintenance": "2026-11-11",
            "payments": "2026-11-11",
            "reliability": "2026-11-11",
            "schema": "2026-11-11",
            "security": "2026-11-11",
            "transparency": "2026-11-11"
          },
          "last": "2026-11-11",
          "lastMoved": "2026-11-11",
          "oldest": "2026-11-11",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "letme": {
        "capability": "https://letme.dev/inference.local",
        "tool": "https://letme.dev/underdog"
      },
      "sameCompany": [
        "underdog-bark-3"
      ],
      "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-11-11",
        "notes": [
          "underdog.ai's robots.txt disallows ClaudeBot (re-read on 11 November 2026), so its terms, privacy policy, download page, 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.",
          "husky.underdog.ai, which loaded for our reader on 3 October 2026, now disallows ClaudeBot, anthropic-ai and Claude-Web in its robots.txt (11 November 2026), so its earlier readings are struck.",
          "conway.tech answers robots.txt with 404 (no rules), links no terms or privacy policy, and has no security.txt (404) and no llms.txt (404) on 11 November 2026.",
          "No registered company name found. a16z says Conway Research, conway.tech says Conway, and the Saluki NOTICE file reads 'Copyright 2026 Underdog (ConwayResearch)'.",
          "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": 28
      },
      "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-11-11T16:11:51.201285943Z"
        },
        "domain": {
          "domain": "underdog.ai",
          "registered": "2020-03-30",
          "source": "https://rdap.identitydigital.services/rdap/domain/underdog.ai",
          "checkedAt": "2026-11-08T14:50:09.498469408Z"
        },
        "pages": [
          {
            "url": "https://underdog.ai/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-11T17:13:52.720698248Z",
            "changedAt": "2026-10-31T06:23:02.636545756Z",
            "fingerprint": "d5bad117b26c"
          },
          {
            "url": "https://underdog.ai/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-11T17:13:54.904980574Z",
            "changedAt": "2026-10-31T06:23:04.816913489Z",
            "fingerprint": "45c4c8ca96f5"
          }
        ],
        "updatedAt": "2026-11-11T17:13:54.904980574Z"
      }
    },
    "edges": [
      {
        "by": 83,
        "category": "schema",
        "leads": "privategpt",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "An OpenAPI file of 38 paths in the repository (fern/openapi/openapi.json, version 1.0.1), also served by each instance at /openapi.json, with the messages API modelled on Anthropic's (25). docs.privategpt.dev serves llms.txt, a Markdown copy of every page and a docs MCP server (10). The docs explain each endpoint group, startup and model discovery, and a compatibility table says which parts of the Claude API are supported, partial or missing, such as prompt caching and OAuth (15 of 20). Pydantic models with literal type discriminators and required fields, while settings and tool context are wide objects (12 of 15). curl examples for each guide and a `/v1/messages/validate` route, with error shapes not documented as a list (9 of 15). `/v1` paths and a dated changelog, though releases trail main by more than four months (12 of 15). 25 + 10 + 15 + 12 + 9 + 12 = 83.",
          "b": "No interface an outside agent can call was found from Conway (no API, MCP server, CLI or SDK), so the interface lines score 0, as for fresha-ai-concierge and lola. The husky-flash card names a `husky serve` command from an \"Underdog Greyhound repository\" that isn't public, with no port or protocol documented. The Underdog app downloads an unmodified llama.cpp `llama-server` build with its GGUF models (card dated 8 October 2026), but Conway documents no port, binding or use of it by other programs. No llms.txt at conway.tech (404 on 11 November) and underdog.ai unread (0). Model cards with run commands describe the weights, not the app (0). 0 + 0 + 0 + 0 + 0 + 0 = 0."
        },
        "scores": {
          "a": 83,
          "b": 0
        }
      },
      {
        "by": 70,
        "category": "reliability",
        "leads": "privategpt",
        "name": "Reliability",
        "reasons": {
          "a": "Read with the local-software lines, since PrivateGPT runs on the owner's hardware with no hosted service behind it. Homebrew tap, `uv tool install` from Zylon's own wheel index (not PyPI) and Docker Hub images `zylonai/private-gpt` 1.0.1 of 18 June 2026. Python 3.11 only, stated in pyproject.toml, and it needs a separate OpenAI-compatible model server (17 of 20). tests.yml runs format, lint, typecheck and the tests affected by each push on main, with the full suite of 217 test files on release pull requests. We couldn't see run results because the GitHub API refused us, and issue #2441 of 1 November reports the Claude spec update workflow failing (15 of 25). GitHub shows 3 open issues of about 1,250, because a stale bot closes quiet issues, two security reports among them, with no maintainer reply (12 of 25). release-please keeps a changelog with breaking changes marked, but no release has been cut since 1.0.1 while main carries 51 commits since 8 August, among them a breaking observability change of 23 October (11 of 15). Version 1.0.1 (15). 17 + 15 + 12 + 11 + 15 = 70.",
          "b": "Read with the local-software lines, since Underdog is an app that runs on the owner's Mac with no hosted service. The app's download, system requirements and version are on underdog.ai, whose robots.txt disallows ClaudeBot (re-read on 11 November 2026), so they are unread. Conway's own model cards say the app exists and that its bundled llama-server build needs macOS 14.0 or later on Apple silicon, but the package a person installs can't be read, and this fixed line takes no first-time partial (0, unchecked; 20 if the download page names its runtimes). The app's source isn't public, so there's no public CI or test suite (0). No public issue tracker for the app was found (0). No app changelog or version history readable outside underdog.ai (0). No app version readable, so not shown to be 1.0 or declared stable. Conway's models carry 1.0, 1.1 and 3.0 version names, which aren't the app's (0). 0 + 0 + 0 + 0 + 0 = 0. Low because underdog.ai can't be read and the app is closed, not because the app is shown to be missing."
        },
        "scores": {
          "a": 70,
          "b": 0
        }
      },
      {
        "by": 64,
        "category": "ergonomics",
        "leads": "privategpt",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Read for an HTTP API an agent calls on a local instance. Token counting, `top_k` style retrieval settings, citation output and response byte caps let a caller size context (18 of 25). Artifact listing by namespace and retrieval filters, with no documented cursor pagination (12 of 20). FastAPI validation errors name the field and the validate route checks a request before running it, but there is no error catalogue (12 of 20). Async messages and ingestion return task ids with status, cancel and delete routes. No idempotency keys were found (10 of 20). Anthropic SDKs and Claude Code work by pointing `ANTHROPIC_BASE_URL` at the server, but a model server and an embedding server have to be configured first (12 of 15). 18 + 12 + 12 + 10 + 12 = 64.",
          "b": "No outside-agent interface from Conway, so every line scores 0 (fresha-ai-concierge, lola). Running Conway's weights through llama.cpp, Splash or Ollama is those engines' interface, not Underdog's. 0 + 0 + 0 + 0 + 0 = 0."
        },
        "scores": {
          "a": 64,
          "b": 0
        }
      },
      {
        "by": 47,
        "category": "transparency",
        "leads": "privategpt",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Apache-2.0 (30). The OpenAPI description says no data leaves the execution environment, but the docs list cloud gateways as model providers and web search goes to outside services when enabled, and no privacy statement covers the software. Zylon's privacy policy covers its website (15 of 30). The 1.0 rewrite was marked as a breaking change in the changelog, and there is no deprecation policy (6 of 20). No telemetry to Zylon found in the source. OpenTelemetry tracing is off by default and its exporters write local files or to the owner's collector, documented on the observability page (16 of 20). 30 + 15 + 6 + 16 = 67.",
          "b": "The app's source isn't published and its terms on underdog.ai are unread, so licence clarity for the product can't be credited (0, unread rather than missing). Conway's model weights on Hugging Face switched from Apache-2.0 to CC BY-NC 4.0 in commits titled \"Switch the license to CC BY-NC 4.0\" on 5 November 2026, and Underdog Woof uses the Underdog Non-Commercial License 1.0. Those are the weights' terms, not the app's. The privacy policy on underdog.ai is unread. The Bark 3.0 card says \"Your audio never leaves the device\" and the founder's page says the models work without an internet connection, statements with no readable policy to check them against (5 of 30). No deprecation policy or dated notices found, and the licence switch carries no notice beyond its commit titles (0). No telemetry statement readable (0). 0 + 5 + 0 + 0 = 5. Low largely because underdog.ai can't be read."
        },
        "scores": {
          "a": 64,
          "b": 17
        }
      },
      {
        "by": 29,
        "category": "security",
        "leads": "privategpt",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Read with the tool checklist. Authentication is off by default, and when on it is one static secret compared with the whole `Authorization` header, with a sample `secret:key` value in settings.yaml. There are no per-user keys or scopes, `private-gpt serve` binds 0.0.0.0 by default and CORS allows every origin, so a default start answers anyone on the network. The docs disagree on the header (Bearer, Basic or an Anthropic key) (6 of 30). Tools are chosen per request and code execution has internet off by default, but bash runs as a host subprocess with resource limits, not in a container, and nothing asks for approval (6 of 20). Web fetch, web search, documents and MCP servers bring untrusted text to the model. A public prompt-injection report (#2270) was closed by the stale bot, and no guidance was found beyond a 19 October change that bounds tool output (3 of 15). OpenTelemetry traces cover every request, model call, tool and sandbox step, off by default, with local JSON lines exporters (10 of 15). SECURITY.md since 23 July 2026 asks for private reports through GitHub or Discord. No bounty, no certification, and the June and July security reports in issues were closed by a bot with no reply (7 of 20). 6 + 6 + 3 + 10 + 7 = 32.",
          "b": "Read with the tool checklist for the app, for the surface an outside agent can call, of which Conway publishes none (fresha-ai-concierge, lola). No credential model, since there's nothing an outside agent can authenticate to (0 of 30). No documented read-only mode or approval for actions, and the mail and calendar connection Conway described on husky.underdog.ai is struck, since that host now refuses our reader (0 of 20). No prompt-injection guidance found (0 of 15). No audit or per-call log documented (0 of 15). No security.txt at conway.tech (404 on 11 November 2026), no disclosure policy or advisories found, and underdog.ai unread. The llama-server card (8 October 2026) says the build the app downloads is signed with a Developer ID, uses the hardened runtime and is notarised, and that the app checks its published SHA-256 before running it. The Bark 3.0 card says the app checks pinned sizes and SHA-256 for its model files. Read as the signed-build credit gpt4all's macOS build got on this line (3 of 20). 0 + 0 + 0 + 0 + 3 = 3."
        },
        "scores": {
          "a": 32,
          "b": 3
        }
      },
      {
        "by": 15,
        "category": "maintenance",
        "leads": "underdog",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "The last release is 1.0.1, dated 16 June 2026 in the changelog and tagged 18 June, 141 days before the check (10 of 30). No release or dated changelog entry in the 90 days since 8 August (0 of 20). Maintainers commit most days and outside pull requests merged in October, but 23 pull requests are open and the stale bot closes issues, including two security reports, with no maintainer reply (13 of 25). Homebrew tap, wheel index and Docker images ship with releases, and Anthropic SDKs work against it. No product MCP server of its own, though it connects to remote MCP servers (10 of 15). Dependabot, uv.lock, actions pinned by commit since 19 October and dependency CVE upgrades in June, July and August (8 of 10). 10 + 0 + 13 + 10 + 8 = 41.",
          "b": "Read as a closed product, from Conway's dated releases of the components its own cards say the app runs, since the app's changelog is on underdog.ai and unread. Underdog Bark 3.0, whose card says Underdog runs it on the device, and Bark 3.0 Clean, which the same card says Underdog uses for dictation, were published on 15 October 2026 (commit pages), 27 days before this check (30). Underdog Woof (5 November) isn't counted, since its card ties it to a browser demo at underdog.ai/woof and doesn't say the Mac app runs it. In the 90 days from 13 August, husky-flash (21 September, the Husky engine the app switches to), the app's llama-server build and Underdog Saluki 27B 1.0 (8 October, run by that build) and Bark 3.0 (15 October) (20). No public tracker or readable changelog for the app. Contact addresses root@conway.tech and license@conway.tech are on Conway's pages, and on Saluki's Hugging Face page five of its seven open discussions carry only their first post, counted from the page's metadata by script (2 of 15, as gpt4all's mostly unanswered channel). No SDK or MCP registry entry (0). The bundled llama-server is pinned to llama.cpp commit bd4eeaa of 7 October 2026 (read in a shallow fetch of llama.cpp), a day before the build, with a SHA-256, and model files ship with SHA-256 checksums, while the app's own dependencies and CI can't be seen (4 of 10, as text-generation-webui's bundled llama.cpp). 30 + 20 + 2 + 0 + 4 = 56. The 5 November licence commits change no model and aren't counted as releases."
        },
        "scores": {
          "a": 41,
          "b": 56
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "Zylon (PriBAI Technology Spain S.L.)",
        "b": "Conway Research",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "Closed-source Mac app, whose terms on underdog.ai are unchecked. Conway's model weights on Hugging Face are CC BY-NC 4.0 since 5 November 2026 (Underdog 27B 1.0 and 1.1, Underdog Ternary 1.1, Saluki 27B 1.0, Poodle 4B, Woof 4B and 2B 1.1, woof-1.0-4B, Bark 0.8B 1.0, Bark 3.0 and husky-flash), Apache-2.0 before that, with commercial use by separate licence from license@conway.tech. Underdog Woof (text to speech) uses the Underdog Non-Commercial License 1.0. The app's llama-server build is llama.cpp under MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-06-18",
        "b": "2026-10-15",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-09-01",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-09-30",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "58k stars",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "PrivateGPT scores 53.2 (D) on agent readiness against Underdog's 14.4 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community.",
        "question": "Which is better for AI agents, PrivateGPT or Underdog?"
      },
      {
        "answer": "No hosted endpoint is listed for PrivateGPT. No hosted endpoint is listed for Underdog.",
        "question": "Can an agent call PrivateGPT and Underdog without installing anything?"
      },
      {
        "answer": "PrivateGPT is open source (Apache-2.0). No open-source release is listed for Underdog.",
        "question": "Are PrivateGPT and Underdog open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 70 against 0",
          "Schema \u0026 documentation, 83 against 0",
          "Agent ergonomics, 64 against 0",
          "Security \u0026 auth, 32 against 3",
          "Transparency \u0026 trust, 64 against 17"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "A local backend for apps and agents that want an Anthropic-style API with document retrieval, citations and tools over local models.",
        "slug": "privategpt",
        "watchFor": "Authentication is off by default, the server binds 0.0.0.0 and CORS allows every origin"
      },
      {
        "aheadOn": [
          "Maintenance \u0026 community, 56 against 41"
        ],
        "also": [
          "No incidents deducted, where PrivateGPT loses 7 points for them"
        ],
        "goodFor": "A person who wants Conway's models on a Mac with Apple silicon through a free app.",
        "slug": "underdog",
        "watchFor": "No API, MCP server, CLI or SDK from Conway, so an outside agent has nothing documented to call."
      }
    ],
    "history": {
      "privategpt": null,
      "underdog": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-11-11",
          "delta": -15.7,
          "from": 30.1,
          "fromGrade": "F",
          "to": 14.4,
          "toGrade": "F"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.6,
          "from": 29.5,
          "fromGrade": "F",
          "to": 30.1,
          "toGrade": "F"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.4,
          "from": 29.9,
          "fromGrade": "F",
          "to": 29.5,
          "toGrade": "F"
        }
      ]
    },
    "job": {
      "capability": "inference.local",
      "name": "Local inference"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/anythingllm-vs-privategpt.json",
        "title": "AnythingLLM vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/anythingllm-vs-privategpt"
      },
      {
        "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/berth-vs-privategpt.json",
        "title": "Berth vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/berth-vs-privategpt"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-underdog.json",
        "title": "Berth vs Underdog",
        "url": "https://www.anchorterminal.com/compare/berth-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitrun-vs-privategpt.json",
        "title": "BitRun vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/bitrun-vs-privategpt"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitrun-vs-underdog.json",
        "title": "BitRun vs Underdog",
        "url": "https://www.anchorterminal.com/compare/bitrun-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-model-runner-vs-privategpt.json",
        "title": "Docker Model Runner vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/docker-model-runner-vs-privategpt"
      },
      {
        "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-privategpt.json",
        "title": "Foundry Local vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/foundry-local-vs-privategpt"
      },
      {
        "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-privategpt.json",
        "title": "Core vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/ghost-core-vs-privategpt"
      },
      {
        "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-privategpt.json",
        "title": "GPT4All vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/gpt4all-vs-privategpt"
      },
      {
        "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/hyperqwen-vs-privategpt.json",
        "title": "HyperQwen vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/hyperqwen-vs-privategpt"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hyperqwen-vs-underdog.json",
        "title": "HyperQwen vs Underdog",
        "url": "https://www.anchorterminal.com/compare/hyperqwen-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-privategpt.json",
        "title": "Jan vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/jan-vs-privategpt"
      },
      {
        "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/khoj-vs-underdog.json",
        "title": "Khoj vs Underdog",
        "url": "https://www.anchorterminal.com/compare/khoj-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/koboldcpp-vs-privategpt.json",
        "title": "KoboldCpp vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/koboldcpp-vs-privategpt"
      },
      {
        "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-privategpt.json",
        "title": "Lemonade vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/lemonade-vs-privategpt"
      },
      {
        "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-privategpt.json",
        "title": "llama.cpp vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/llama-cpp-vs-privategpt"
      },
      {
        "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-privategpt.json",
        "title": "LM Studio vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/lm-studio-vs-privategpt"
      },
      {
        "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-privategpt.json",
        "title": "LocalAI vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/localai-vs-privategpt"
      },
      {
        "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-privategpt.json",
        "title": "MLX LM vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/mlx-lm-vs-privategpt"
      },
      {
        "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-privategpt.json",
        "title": "Ollama vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/ollama-vs-privategpt"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ollama-vs-underdog.json",
        "title": "Ollama vs Underdog",
        "url": "https://www.anchorterminal.com/compare/ollama-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/open-webui-vs-privategpt.json",
        "title": "Open WebUI vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/open-webui-vs-privategpt"
      },
      {
        "json": "https://www.anchorterminal.com/compare/open-webui-vs-underdog.json",
        "title": "Open WebUI vs Underdog",
        "url": "https://www.anchorterminal.com/compare/open-webui-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/privategpt-vs-screenpipe.json",
        "title": "PrivateGPT vs screenpipe",
        "url": "https://www.anchorterminal.com/compare/privategpt-vs-screenpipe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/privategpt-vs-text-generation-webui.json",
        "title": "PrivateGPT vs TextGen",
        "url": "https://www.anchorterminal.com/compare/privategpt-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/privategpt-vs-vllm.json",
        "title": "PrivateGPT vs vLLM",
        "url": "https://www.anchorterminal.com/compare/privategpt-vs-vllm"
      },
      {
        "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/text-generation-webui-vs-underdog.json",
        "title": "TextGen vs Underdog",
        "url": "https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/underdog-vs-vllm.json",
        "title": "Underdog vs vLLM",
        "url": "https://www.anchorterminal.com/compare/underdog-vs-vllm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/khoj-vs-privategpt.json",
        "title": "Khoj vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/khoj-vs-privategpt"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localghost-vs-privategpt.json",
        "title": "LocalGhost vs PrivateGPT",
        "url": "https://www.anchorterminal.com/compare/localghost-vs-privategpt"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 70,
        "edge": "privategpt",
        "key": "reliability",
        "name": "Reliability",
        "privategpt": 70,
        "underdog": 0,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 83,
        "edge": "privategpt",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "privategpt": 83,
        "underdog": 0,
        "weight": 13
      },
      {
        "by": 64,
        "edge": "privategpt",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "privategpt": 64,
        "underdog": 0,
        "weight": 13
      },
      {
        "by": 29,
        "edge": "privategpt",
        "key": "security",
        "name": "Security \u0026 auth",
        "privategpt": 32,
        "underdog": 3,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "privategpt": 60,
        "underdog": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 15,
        "edge": "underdog",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "privategpt": 41,
        "underdog": 56,
        "weight": 7
      },
      {
        "by": 47,
        "edge": "privategpt",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "privategpt": 64,
        "underdog": 17,
        "weight": 7
      }
    ],
    "summary": "PrivateGPT scores 53.2 (D) on agent readiness against Underdog's 14.4 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community. Both do local inference.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "privategpt": "PrivateGPT 1.0 is an Apache-2.0 server that gives local models an Anthropic-style messages API with retrieval, citations, tools and MCP, documented by an OpenAPI file and llms.txt. A default start has authentication off, listens on every interface and reads local paths given as URIs, and a public report of that was closed without a reply.",
      "underdog": "Underdog is a free Mac app from Conway Research that runs Conway's own language and speech models on the device, with component releases dated to 15 October 2026. Conway documents no interface for outside agents, and underdog.ai refuses our reader, so its terms and privacy policy are unread. Conway's weights moved from Apache-2.0 to non-commercial licences on 5 November 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/privategpt-vs-underdog",
    "json": "https://www.anchorterminal.com/compare/privategpt-vs-underdog.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/privategpt-vs-underdog.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/privategpt-vs-underdog.min.md"
  },
  "markdown": "PrivateGPT scores 53.2 (D) on agent readiness against Underdog's 14.4 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community. Both do local inference.\n\n- PrivateGPT: grade D, 53.2/100, rank #969 of 1520. Markdown https://www.anchorterminal.com/tools/privategpt.md · JSON https://www.anchorterminal.com/api/v1/tools/privategpt.json\n- Underdog: grade F, 14.4/100, rank #1482 of 1520. Markdown https://www.anchorterminal.com/tools/underdog.md · JSON https://www.anchorterminal.com/api/v1/tools/underdog.json\n- Best local AI models and assistants: https://www.anchorterminal.com/best/local-ai/index.md\n- All 283 local ai comparisons: https://www.anchorterminal.com/compare/local-ai/index.md\n\n## Which one, for what\n\n### PrivateGPT (D)\n\nGood for: A local backend for apps and agents that want an Anthropic-style API with document retrieval, citations and tools over local models.\n\nAhead on:\n- Reliability, 70 against 0\n- Schema \u0026 documentation, 83 against 0\n- Agent ergonomics, 64 against 0\n- Security \u0026 auth, 32 against 3\n- Transparency \u0026 trust, 64 against 17\n\nAlso in its favour:\n- Open source\n\nWatch for: Authentication is off by default, the server binds 0.0.0.0 and CORS allows every origin\n\n### Underdog (F)\n\nGood for: A person who wants Conway's models on a Mac with Apple silicon through a free app.\n\nAhead on:\n- Maintenance \u0026 community, 56 against 41\n\nAlso in its favour:\n- No incidents deducted, where PrivateGPT loses 7 points for them\n\nWatch for: No API, MCP server, CLI or SDK from Conway, so an outside agent has nothing documented to call.\n\n\n## Why the edge\n\n### Schema \u0026 documentation: PrivateGPT +83\n\n- PrivateGPT (83): An OpenAPI file of 38 paths in the repository (fern/openapi/openapi.json, version 1.0.1), also served by each instance at /openapi.json, with the messages API modelled on Anthropic's (25). docs.privategpt.dev serves llms.txt, a Markdown copy of every page and a docs MCP server (10). The docs explain each endpoint group, startup and model discovery, and a compatibility table says which parts of the Claude API are supported, partial or missing, such as prompt caching and OAuth (15 of 20). Pydantic models with literal type discriminators and required fields, while settings and tool context are wide objects (12 of 15). curl examples for each guide and a `/v1/messages/validate` route, with error shapes not documented as a list (9 of 15). `/v1` paths and a dated changelog, though releases trail main by more than four months (12 of 15). 25 + 10 + 15 + 12 + 9 + 12 = 83.\n- Underdog (0): No interface an outside agent can call was found from Conway (no API, MCP server, CLI or SDK), so the interface lines score 0, as for fresha-ai-concierge and lola. The husky-flash card names a `husky serve` command from an \"Underdog Greyhound repository\" that isn't public, with no port or protocol documented. The Underdog app downloads an unmodified llama.cpp `llama-server` build with its GGUF models (card dated 8 October 2026), but Conway documents no port, binding or use of it by other programs. No llms.txt at conway.tech (404 on 11 November) and underdog.ai unread (0). Model cards with run commands describe the weights, not the app (0). 0 + 0 + 0 + 0 + 0 + 0 = 0.\n\n### Reliability: PrivateGPT +70\n\n- PrivateGPT (70): Read with the local-software lines, since PrivateGPT runs on the owner's hardware with no hosted service behind it. Homebrew tap, `uv tool install` from Zylon's own wheel index (not PyPI) and Docker Hub images `zylonai/private-gpt` 1.0.1 of 18 June 2026. Python 3.11 only, stated in pyproject.toml, and it needs a separate OpenAI-compatible model server (17 of 20). tests.yml runs format, lint, typecheck and the tests affected by each push on main, with the full suite of 217 test files on release pull requests. We couldn't see run results because the GitHub API refused us, and issue #2441 of 1 November reports the Claude spec update workflow failing (15 of 25). GitHub shows 3 open issues of about 1,250, because a stale bot closes quiet issues, two security reports among them, with no maintainer reply (12 of 25). release-please keeps a changelog with breaking changes marked, but no release has been cut since 1.0.1 while main carries 51 commits since 8 August, among them a breaking observability change of 23 October (11 of 15). Version 1.0.1 (15). 17 + 15 + 12 + 11 + 15 = 70.\n- Underdog (0): Read with the local-software lines, since Underdog is an app that runs on the owner's Mac with no hosted service. The app's download, system requirements and version are on underdog.ai, whose robots.txt disallows ClaudeBot (re-read on 11 November 2026), so they are unread. Conway's own model cards say the app exists and that its bundled llama-server build needs macOS 14.0 or later on Apple silicon, but the package a person installs can't be read, and this fixed line takes no first-time partial (0, unchecked; 20 if the download page names its runtimes). The app's source isn't public, so there's no public CI or test suite (0). No public issue tracker for the app was found (0). No app changelog or version history readable outside underdog.ai (0). No app version readable, so not shown to be 1.0 or declared stable. Conway's models carry 1.0, 1.1 and 3.0 version names, which aren't the app's (0). 0 + 0 + 0 + 0 + 0 = 0. Low because underdog.ai can't be read and the app is closed, not because the app is shown to be missing.\n\n### Agent ergonomics: PrivateGPT +64\n\n- PrivateGPT (64): Read for an HTTP API an agent calls on a local instance. Token counting, `top_k` style retrieval settings, citation output and response byte caps let a caller size context (18 of 25). Artifact listing by namespace and retrieval filters, with no documented cursor pagination (12 of 20). FastAPI validation errors name the field and the validate route checks a request before running it, but there is no error catalogue (12 of 20). Async messages and ingestion return task ids with status, cancel and delete routes. No idempotency keys were found (10 of 20). Anthropic SDKs and Claude Code work by pointing `ANTHROPIC_BASE_URL` at the server, but a model server and an embedding server have to be configured first (12 of 15). 18 + 12 + 12 + 10 + 12 = 64.\n- Underdog (0): No outside-agent interface from Conway, so every line scores 0 (fresha-ai-concierge, lola). Running Conway's weights through llama.cpp, Splash or Ollama is those engines' interface, not Underdog's. 0 + 0 + 0 + 0 + 0 = 0.\n\n### Transparency \u0026 trust: PrivateGPT +47\n\n- PrivateGPT (64): Apache-2.0 (30). The OpenAPI description says no data leaves the execution environment, but the docs list cloud gateways as model providers and web search goes to outside services when enabled, and no privacy statement covers the software. Zylon's privacy policy covers its website (15 of 30). The 1.0 rewrite was marked as a breaking change in the changelog, and there is no deprecation policy (6 of 20). No telemetry to Zylon found in the source. OpenTelemetry tracing is off by default and its exporters write local files or to the owner's collector, documented on the observability page (16 of 20). 30 + 15 + 6 + 16 = 67.\n- Underdog (17): The app's source isn't published and its terms on underdog.ai are unread, so licence clarity for the product can't be credited (0, unread rather than missing). Conway's model weights on Hugging Face switched from Apache-2.0 to CC BY-NC 4.0 in commits titled \"Switch the license to CC BY-NC 4.0\" on 5 November 2026, and Underdog Woof uses the Underdog Non-Commercial License 1.0. Those are the weights' terms, not the app's. The privacy policy on underdog.ai is unread. The Bark 3.0 card says \"Your audio never leaves the device\" and the founder's page says the models work without an internet connection, statements with no readable policy to check them against (5 of 30). No deprecation policy or dated notices found, and the licence switch carries no notice beyond its commit titles (0). No telemetry statement readable (0). 0 + 5 + 0 + 0 = 5. Low largely because underdog.ai can't be read.\n\n### Security \u0026 auth: PrivateGPT +29\n\n- PrivateGPT (32): Read with the tool checklist. Authentication is off by default, and when on it is one static secret compared with the whole `Authorization` header, with a sample `secret:key` value in settings.yaml. There are no per-user keys or scopes, `private-gpt serve` binds 0.0.0.0 by default and CORS allows every origin, so a default start answers anyone on the network. The docs disagree on the header (Bearer, Basic or an Anthropic key) (6 of 30). Tools are chosen per request and code execution has internet off by default, but bash runs as a host subprocess with resource limits, not in a container, and nothing asks for approval (6 of 20). Web fetch, web search, documents and MCP servers bring untrusted text to the model. A public prompt-injection report (#2270) was closed by the stale bot, and no guidance was found beyond a 19 October change that bounds tool output (3 of 15). OpenTelemetry traces cover every request, model call, tool and sandbox step, off by default, with local JSON lines exporters (10 of 15). SECURITY.md since 23 July 2026 asks for private reports through GitHub or Discord. No bounty, no certification, and the June and July security reports in issues were closed by a bot with no reply (7 of 20). 6 + 6 + 3 + 10 + 7 = 32.\n- Underdog (3): Read with the tool checklist for the app, for the surface an outside agent can call, of which Conway publishes none (fresha-ai-concierge, lola). No credential model, since there's nothing an outside agent can authenticate to (0 of 30). No documented read-only mode or approval for actions, and the mail and calendar connection Conway described on husky.underdog.ai is struck, since that host now refuses our reader (0 of 20). No prompt-injection guidance found (0 of 15). No audit or per-call log documented (0 of 15). No security.txt at conway.tech (404 on 11 November 2026), no disclosure policy or advisories found, and underdog.ai unread. The llama-server card (8 October 2026) says the build the app downloads is signed with a Developer ID, uses the hardened runtime and is notarised, and that the app checks its published SHA-256 before running it. The Bark 3.0 card says the app checks pinned sizes and SHA-256 for its model files. Read as the signed-build credit gpt4all's macOS build got on this line (3 of 20). 0 + 0 + 0 + 0 + 3 = 3.\n\n### Maintenance \u0026 community: Underdog +15\n\n- PrivateGPT (41): The last release is 1.0.1, dated 16 June 2026 in the changelog and tagged 18 June, 141 days before the check (10 of 30). No release or dated changelog entry in the 90 days since 8 August (0 of 20). Maintainers commit most days and outside pull requests merged in October, but 23 pull requests are open and the stale bot closes issues, including two security reports, with no maintainer reply (13 of 25). Homebrew tap, wheel index and Docker images ship with releases, and Anthropic SDKs work against it. No product MCP server of its own, though it connects to remote MCP servers (10 of 15). Dependabot, uv.lock, actions pinned by commit since 19 October and dependency CVE upgrades in June, July and August (8 of 10). 10 + 0 + 13 + 10 + 8 = 41.\n- Underdog (56): Read as a closed product, from Conway's dated releases of the components its own cards say the app runs, since the app's changelog is on underdog.ai and unread. Underdog Bark 3.0, whose card says Underdog runs it on the device, and Bark 3.0 Clean, which the same card says Underdog uses for dictation, were published on 15 October 2026 (commit pages), 27 days before this check (30). Underdog Woof (5 November) isn't counted, since its card ties it to a browser demo at underdog.ai/woof and doesn't say the Mac app runs it. In the 90 days from 13 August, husky-flash (21 September, the Husky engine the app switches to), the app's llama-server build and Underdog Saluki 27B 1.0 (8 October, run by that build) and Bark 3.0 (15 October) (20). No public tracker or readable changelog for the app. Contact addresses root@conway.tech and license@conway.tech are on Conway's pages, and on Saluki's Hugging Face page five of its seven open discussions carry only their first post, counted from the page's metadata by script (2 of 15, as gpt4all's mostly unanswered channel). No SDK or MCP registry entry (0). The bundled llama-server is pinned to llama.cpp commit bd4eeaa of 7 October 2026 (read in a shallow fetch of llama.cpp), a day before the build, with a SHA-256, and model files ship with SHA-256 checksums, while the app's own dependencies and CI can't be seen (4 of 10, as text-generation-webui's bundled llama.cpp). 30 + 20 + 2 + 0 + 4 = 56. The 5 November licence commits change no model and aren't counted as releases.\n\n## Score by category\n\n| Category | Weight | PrivateGPT | Underdog | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 70 | 0 | PrivateGPT +70 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 0 | PrivateGPT +83 |\n| Agent ergonomics | 13% (16.2 this run) | 64 | 0 | PrivateGPT +64 |\n| Security \u0026 auth | 14% (17.5 this run) | 32 | 3 | PrivateGPT +29 |\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) | 41 | 56 | Underdog +15 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 64 | 17 | PrivateGPT +47 |\n| Negative events | ≤15 | -7 | 0 | |\n| **Total** | | **53.2 · D** | **14.4 · F** | |\n\n## Facts side by side\n\n| Fact | PrivateGPT | Underdog |\n| --- | --- | --- |\n| Kind | HTTP API | Platform |\n| Vendor | Zylon (PriBAI Technology Spain S.L.) | Conway Research |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports | HTTP |  |\n| Auth | None | None |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Apache-2.0 | Closed-source Mac app, whose terms on underdog.ai are unchecked. Conway's model weights on Hugging Face are CC BY-NC 4.0 since 5 November 2026 (Underdog 27B 1.0 and 1.1, Underdog Ternary 1.1, Saluki 27B 1.0, Poodle 4B, Woof 4B and 2B 1.1, woof-1.0-4B, Bark 0.8B 1.0, Bark 3.0 and husky-flash), Apache-2.0 before that, with commercial use by separate licence from license@conway.tech. Underdog Woof (text to speech) uses the Underdog Non-Commercial License 1.0. The app's llama-server build is llama.cpp under MIT |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| Last release | 2026-06-18 | 2026-10-15 |\n| Terms last updated | no date given | 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 | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 58k stars | none |\n| Agent reviews | none | 2/5 (2) |\n\n## How the scores have moved\n\n### PrivateGPT\n\nNo score change since it was listed.\n\n### Underdog\n\n- -15.7 on 11 November 2026: correction\n- +0.6 on 27 October 2026: checklist\n- -0.4 on 8 October 2026: checklist\n\n## Verdicts\n\n**PrivateGPT.** PrivateGPT 1.0 is an Apache-2.0 server that gives local models an Anthropic-style messages API with retrieval, citations, tools and MCP, documented by an OpenAPI file and llms.txt. A default start has authentication off, listens on every interface and reads local paths given as URIs, and a public report of that was closed without a reply.\n\n**Underdog.** Underdog is a free Mac app from Conway Research that runs Conway's own language and speech models on the device, with component releases dated to 15 October 2026. Conway documents no interface for outside agents, and underdog.ai refuses our reader, so its terms and privacy policy are unread. Conway's weights moved from Apache-2.0 to non-commercial licences on 5 November 2026.\n\n## Before you call either\n\n### PrivateGPT\n\n1. Turn on `server.auth` and bind to 127.0.0.1 before exposing an instance, since a default start answers any caller\n2. Point Anthropic SDKs or Claude Code at the server with `ANTHROPIC_BASE_URL=http://localhost:8080`\n3. Start an OpenAI-compatible model server and an embedding server first, and set `OPENAI_API_BASE` and `OPENAI_EMBEDDING_API_BASE`\n4. Pass ingested documents through `tool_context` to get answers with citations\n5. Treat web fetch, search and MCP results as untrusted, since PrivateGPT documents no prompt-injection handling\n\n### Underdog\n\n1. Don't plan on calling Underdog itself. Conway documents no API, MCP server or port for the app.\n2. To use Conway's weights, run them in llama.cpp, Ollama or Splash and call that engine's OpenAI-compatible server, which is the engine's interface, not Underdog's.\n3. Check the licence before commercial use. Conway's weights are CC BY-NC 4.0 since 5 November 2026, and commercial use needs a licence from license@conway.tech.\n4. Don't rely on the `husky serve` command on the husky-flash card. Its Greyhound repository isn't public.\n\n## Questions\n\n### Which is better for AI agents, PrivateGPT or Underdog?\n\nPrivateGPT scores 53.2 (D) on agent readiness against Underdog's 14.4 (F), and leads in 5 of 7 scored categories. Underdog leads on maintenance \u0026 community.\n\n### Can an agent call PrivateGPT and Underdog without installing anything?\n\nNo hosted endpoint is listed for PrivateGPT. No hosted endpoint is listed for Underdog.\n\n### Are PrivateGPT and Underdog open source?\n\nPrivateGPT is open source (Apache-2.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/privategpt-vs-underdog.json, and with the fewest tokens: https://www.anchorterminal.com/compare/privategpt-vs-underdog.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"privategpt\", \"b\": \"underdog\"}`. From a terminal: `anchor compare privategpt underdog`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/privategpt.json and https://www.anchorterminal.com/api/v1/tools/underdog.json\n\n## Other comparisons with PrivateGPT or Underdog\n\n- [AnythingLLM vs PrivateGPT](https://www.anchorterminal.com/compare/anythingllm-vs-privategpt.md)\n- [AnythingLLM vs Underdog](https://www.anchorterminal.com/compare/anythingllm-vs-underdog.md)\n- [Berth vs PrivateGPT](https://www.anchorterminal.com/compare/berth-vs-privategpt.md)\n- [Berth vs Underdog](https://www.anchorterminal.com/compare/berth-vs-underdog.md)\n- [BitRun vs PrivateGPT](https://www.anchorterminal.com/compare/bitrun-vs-privategpt.md)\n- [BitRun vs Underdog](https://www.anchorterminal.com/compare/bitrun-vs-underdog.md)\n- [Docker Model Runner vs PrivateGPT](https://www.anchorterminal.com/compare/docker-model-runner-vs-privategpt.md)\n- [Docker Model Runner vs Underdog](https://www.anchorterminal.com/compare/docker-model-runner-vs-underdog.md)\n- [Foundry Local vs PrivateGPT](https://www.anchorterminal.com/compare/foundry-local-vs-privategpt.md)\n- [Foundry Local vs Underdog](https://www.anchorterminal.com/compare/foundry-local-vs-underdog.md)\n- [Core vs PrivateGPT](https://www.anchorterminal.com/compare/ghost-core-vs-privategpt.md)\n- [Core vs Underdog](https://www.anchorterminal.com/compare/ghost-core-vs-underdog.md)\n- [GPT4All vs PrivateGPT](https://www.anchorterminal.com/compare/gpt4all-vs-privategpt.md)\n- [GPT4All vs Underdog](https://www.anchorterminal.com/compare/gpt4all-vs-underdog.md)\n- [HyperQwen vs PrivateGPT](https://www.anchorterminal.com/compare/hyperqwen-vs-privategpt.md)\n- [HyperQwen vs Underdog](https://www.anchorterminal.com/compare/hyperqwen-vs-underdog.md)\n- [Jan vs PrivateGPT](https://www.anchorterminal.com/compare/jan-vs-privategpt.md)\n- [Jan vs Underdog](https://www.anchorterminal.com/compare/jan-vs-underdog.md)\n- [Khoj vs Underdog](https://www.anchorterminal.com/compare/khoj-vs-underdog.md)\n- [KoboldCpp vs PrivateGPT](https://www.anchorterminal.com/compare/koboldcpp-vs-privategpt.md)\n- [KoboldCpp vs Underdog](https://www.anchorterminal.com/compare/koboldcpp-vs-underdog.md)\n- [Lemonade vs PrivateGPT](https://www.anchorterminal.com/compare/lemonade-vs-privategpt.md)\n- [Lemonade vs Underdog](https://www.anchorterminal.com/compare/lemonade-vs-underdog.md)\n- [llama.cpp vs PrivateGPT](https://www.anchorterminal.com/compare/llama-cpp-vs-privategpt.md)\n- [llama.cpp vs Underdog](https://www.anchorterminal.com/compare/llama-cpp-vs-underdog.md)\n- [LM Studio vs PrivateGPT](https://www.anchorterminal.com/compare/lm-studio-vs-privategpt.md)\n- [LM Studio vs Underdog](https://www.anchorterminal.com/compare/lm-studio-vs-underdog.md)\n- [LocalAI vs PrivateGPT](https://www.anchorterminal.com/compare/localai-vs-privategpt.md)\n- [LocalAI vs Underdog](https://www.anchorterminal.com/compare/localai-vs-underdog.md)\n- [MLX LM vs PrivateGPT](https://www.anchorterminal.com/compare/mlx-lm-vs-privategpt.md)\n- [MLX LM vs Underdog](https://www.anchorterminal.com/compare/mlx-lm-vs-underdog.md)\n- [Ollama vs PrivateGPT](https://www.anchorterminal.com/compare/ollama-vs-privategpt.md)\n- [Ollama vs Underdog](https://www.anchorterminal.com/compare/ollama-vs-underdog.md)\n- [Open WebUI vs PrivateGPT](https://www.anchorterminal.com/compare/open-webui-vs-privategpt.md)\n- [Open WebUI vs Underdog](https://www.anchorterminal.com/compare/open-webui-vs-underdog.md)\n- [PrivateGPT vs screenpipe](https://www.anchorterminal.com/compare/privategpt-vs-screenpipe.md)\n- [PrivateGPT vs TextGen](https://www.anchorterminal.com/compare/privategpt-vs-text-generation-webui.md)\n- [PrivateGPT vs vLLM](https://www.anchorterminal.com/compare/privategpt-vs-vllm.md)\n- [screenpipe vs Underdog](https://www.anchorterminal.com/compare/screenpipe-vs-underdog.md)\n- [TextGen vs Underdog](https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog.md)\n- [Underdog vs vLLM](https://www.anchorterminal.com/compare/underdog-vs-vllm.md)\n- [Khoj vs PrivateGPT](https://www.anchorterminal.com/compare/khoj-vs-privategpt.md)\n- [LocalGhost vs PrivateGPT](https://www.anchorterminal.com/compare/localghost-vs-privategpt.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)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-11",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "PrivateGPT vs Underdog",
        "url": ""
      }
    ],
    "description": "PrivateGPT scores 53.2 (D) to Underdog's 14.4 (F) for local inference. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "PrivateGPT D 53.2",
      "Underdog F 14.4",
      "scores"
    ],
    "h1": "PrivateGPT vs Underdog",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/privategpt-vs-underdog",
    "published": "2026-10-01",
    "section": "tools",
    "title": "PrivateGPT vs Underdog for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-11",
    "url": "https://www.anchorterminal.com/compare/privategpt-vs-underdog"
  },
  "tokens": {
    "markdown": 5900,
    "slim": 1130
  },
  "version": 1
}
