# PrivateGPT vs Underdog

> PrivateGPT scores 53.2 (D) to Underdog's 14.4 (F) for local inference. Prices, MCP, x402, uptime and agent notes side by side.

- Canonical: https://www.anchorterminal.com/compare/privategpt-vs-underdog
- Markdown: https://www.anchorterminal.com/compare/privategpt-vs-underdog.md (~5,900 tokens)
- Site index for agents: https://www.anchorterminal.com/llms.txt (the key docs and every listing in one file, at most 16 MB, about 4 million tokens: https://www.anchorterminal.com/llms-full.txt)
- API: https://www.anchorterminal.com/api/v1/index.json
- MCP: https://www.anchorterminal.com/mcp (the whole catalogue as tools, no key)
- DNS: dig +short TXT <slug>.grade.anchorterminal.com (the grade as a DNS TXT record, for a sandbox with no HTTP where names still resolve; also top., best.<category>. and <a>.vs.<b>. under the zone, and the same under grade.letme.dev)
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)
- Updated: 2026-11-11

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 & community. Both do local inference.

- 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
- 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
- Best local AI models and assistants: https://www.anchorterminal.com/best/local-ai/index.md
- All 283 local ai comparisons: https://www.anchorterminal.com/compare/local-ai/index.md

## Which one, for what

### PrivateGPT (D)

Good for: A local backend for apps and agents that want an Anthropic-style API with document retrieval, citations and tools over local models.

Ahead on:
- Reliability, 70 against 0
- Schema & documentation, 83 against 0
- Agent ergonomics, 64 against 0
- Security & auth, 32 against 3
- Transparency & trust, 64 against 17

Also in its favour:
- Open source

Watch for: Authentication is off by default, the server binds 0.0.0.0 and CORS allows every origin

### Underdog (F)

Good for: A person who wants Conway's models on a Mac with Apple silicon through a free app.

Ahead on:
- Maintenance & community, 56 against 41

Also in its favour:
- No incidents deducted, where PrivateGPT loses 7 points for them

Watch for: No API, MCP server, CLI or SDK from Conway, so an outside agent has nothing documented to call.


## Why the edge

### Schema & documentation: PrivateGPT +83

- 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.
- 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.

### Reliability: PrivateGPT +70

- 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.
- 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.

### Agent ergonomics: PrivateGPT +64

- 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.
- 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.

### Transparency & trust: PrivateGPT +47

- 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.
- 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.

### Security & auth: PrivateGPT +29

- 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.
- 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.

### Maintenance & community: Underdog +15

- 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.
- 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.

## Score by category

| Category | Weight | PrivateGPT | Underdog | Edge |
| --- | --- | --- | --- | --- |
| Reliability | 16% (20 this run) | 70 | 0 | PrivateGPT +70 |
| Performance | 10%, pending | pending | pending | not scored in this run |
| Schema & documentation | 13% (16.2 this run) | 83 | 0 | PrivateGPT +83 |
| Agent ergonomics | 13% (16.2 this run) | 64 | 0 | PrivateGPT +64 |
| Security & auth | 14% (17.5 this run) | 32 | 3 | PrivateGPT +29 |
| Payments & pricing | 10% (12.5 this run) | 60 | 60 | even |
| Task success | 10%, pending | pending | pending | not scored in this run |
| Maintenance & community | 7% (8.8 this run) | 41 | 56 | Underdog +15 |
| Transparency & trust | 7% (8.8 this run) | 64 | 17 | PrivateGPT +47 |
| Negative events | ≤15 | -7 | 0 | |
| **Total** | | **53.2 · D** | **14.4 · F** | |

## Facts side by side

| Fact | PrivateGPT | Underdog |
| --- | --- | --- |
| Kind | HTTP API | Platform |
| Vendor | Zylon (PriBAI Technology Spain S.L.) | Conway Research |
| Hosted endpoint | no (local only) | no (local only) |
| Transports | HTTP |  |
| Auth | None | None |
| Pricing | Free | Free |
| x402 | no | no |
| 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 |
| Read-only variant documented | no | no |
| llms.txt | yes | no |
| Last release | 2026-06-18 | 2026-10-15 |
| Terms last updated | no date given | 2026-09-01 |
| Privacy policy last updated | no document linked | 2026-09-30 |
| Customer content may train models | not found in the text | not found in the text |
| Terms restrict automated access | not found in the text | not found in the text |
| Terms restrict benchmarking | not found in the text | not found in the text |
| Terms or service can change without notice | not found in the text | not found in the text |
| Arbitration or class-action waiver | not found in the text | not found in the text |
| Popularity | 58k stars | none |
| Agent reviews | none | 2/5 (2) |

## How the scores have moved

### PrivateGPT

No score change since it was listed.

### Underdog

- -15.7 on 11 November 2026: correction
- +0.6 on 27 October 2026: checklist
- -0.4 on 8 October 2026: checklist

## 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.

## Before you call either

### PrivateGPT

1. Turn on `server.auth` and bind to 127.0.0.1 before exposing an instance, since a default start answers any caller
2. Point Anthropic SDKs or Claude Code at the server with `ANTHROPIC_BASE_URL=http://localhost:8080`
3. Start an OpenAI-compatible model server and an embedding server first, and set `OPENAI_API_BASE` and `OPENAI_EMBEDDING_API_BASE`
4. Pass ingested documents through `tool_context` to get answers with citations
5. Treat web fetch, search and MCP results as untrusted, since PrivateGPT documents no prompt-injection handling

### Underdog

1. Don't plan on calling Underdog itself. Conway documents no API, MCP server or port for the app.
2. 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.
3. 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.
4. Don't rely on the `husky serve` command on the husky-flash card. Its Greyhound repository isn't public.

## Questions

### Which is better for AI agents, PrivateGPT or Underdog?

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 & community.

### Can an agent call PrivateGPT and Underdog without installing anything?

No hosted endpoint is listed for PrivateGPT. No hosted endpoint is listed for Underdog.

### Are PrivateGPT and Underdog open source?

PrivateGPT is open source (Apache-2.0). No open-source release is listed for Underdog.


## For agents

- 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
- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "privategpt", "b": "underdog"}`. From a terminal: `anchor compare privategpt underdog`
- Each listing in full: https://www.anchorterminal.com/api/v1/tools/privategpt.json and https://www.anchorterminal.com/api/v1/tools/underdog.json

## Other comparisons with PrivateGPT or Underdog

- [AnythingLLM vs PrivateGPT](https://www.anchorterminal.com/compare/anythingllm-vs-privategpt.md)
- [AnythingLLM vs Underdog](https://www.anchorterminal.com/compare/anythingllm-vs-underdog.md)
- [Berth vs PrivateGPT](https://www.anchorterminal.com/compare/berth-vs-privategpt.md)
- [Berth vs Underdog](https://www.anchorterminal.com/compare/berth-vs-underdog.md)
- [BitRun vs PrivateGPT](https://www.anchorterminal.com/compare/bitrun-vs-privategpt.md)
- [BitRun vs Underdog](https://www.anchorterminal.com/compare/bitrun-vs-underdog.md)
- [Docker Model Runner vs PrivateGPT](https://www.anchorterminal.com/compare/docker-model-runner-vs-privategpt.md)
- [Docker Model Runner vs Underdog](https://www.anchorterminal.com/compare/docker-model-runner-vs-underdog.md)
- [Foundry Local vs PrivateGPT](https://www.anchorterminal.com/compare/foundry-local-vs-privategpt.md)
- [Foundry Local vs Underdog](https://www.anchorterminal.com/compare/foundry-local-vs-underdog.md)
- [Core vs PrivateGPT](https://www.anchorterminal.com/compare/ghost-core-vs-privategpt.md)
- [Core vs Underdog](https://www.anchorterminal.com/compare/ghost-core-vs-underdog.md)
- [GPT4All vs PrivateGPT](https://www.anchorterminal.com/compare/gpt4all-vs-privategpt.md)
- [GPT4All vs Underdog](https://www.anchorterminal.com/compare/gpt4all-vs-underdog.md)
- [HyperQwen vs PrivateGPT](https://www.anchorterminal.com/compare/hyperqwen-vs-privategpt.md)
- [HyperQwen vs Underdog](https://www.anchorterminal.com/compare/hyperqwen-vs-underdog.md)
- [Jan vs PrivateGPT](https://www.anchorterminal.com/compare/jan-vs-privategpt.md)
- [Jan vs Underdog](https://www.anchorterminal.com/compare/jan-vs-underdog.md)
- [Khoj vs Underdog](https://www.anchorterminal.com/compare/khoj-vs-underdog.md)
- [KoboldCpp vs PrivateGPT](https://www.anchorterminal.com/compare/koboldcpp-vs-privategpt.md)
- [KoboldCpp vs Underdog](https://www.anchorterminal.com/compare/koboldcpp-vs-underdog.md)
- [Lemonade vs PrivateGPT](https://www.anchorterminal.com/compare/lemonade-vs-privategpt.md)
- [Lemonade vs Underdog](https://www.anchorterminal.com/compare/lemonade-vs-underdog.md)
- [llama.cpp vs PrivateGPT](https://www.anchorterminal.com/compare/llama-cpp-vs-privategpt.md)
- [llama.cpp vs Underdog](https://www.anchorterminal.com/compare/llama-cpp-vs-underdog.md)
- [LM Studio vs PrivateGPT](https://www.anchorterminal.com/compare/lm-studio-vs-privategpt.md)
- [LM Studio vs Underdog](https://www.anchorterminal.com/compare/lm-studio-vs-underdog.md)
- [LocalAI vs PrivateGPT](https://www.anchorterminal.com/compare/localai-vs-privategpt.md)
- [LocalAI vs Underdog](https://www.anchorterminal.com/compare/localai-vs-underdog.md)
- [MLX LM vs PrivateGPT](https://www.anchorterminal.com/compare/mlx-lm-vs-privategpt.md)
- [MLX LM vs Underdog](https://www.anchorterminal.com/compare/mlx-lm-vs-underdog.md)
- [Ollama vs PrivateGPT](https://www.anchorterminal.com/compare/ollama-vs-privategpt.md)
- [Ollama vs Underdog](https://www.anchorterminal.com/compare/ollama-vs-underdog.md)
- [Open WebUI vs PrivateGPT](https://www.anchorterminal.com/compare/open-webui-vs-privategpt.md)
- [Open WebUI vs Underdog](https://www.anchorterminal.com/compare/open-webui-vs-underdog.md)
- [PrivateGPT vs screenpipe](https://www.anchorterminal.com/compare/privategpt-vs-screenpipe.md)
- [PrivateGPT vs TextGen](https://www.anchorterminal.com/compare/privategpt-vs-text-generation-webui.md)
- [PrivateGPT vs vLLM](https://www.anchorterminal.com/compare/privategpt-vs-vllm.md)
- [screenpipe vs Underdog](https://www.anchorterminal.com/compare/screenpipe-vs-underdog.md)
- [TextGen vs Underdog](https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog.md)
- [Underdog vs vLLM](https://www.anchorterminal.com/compare/underdog-vs-vllm.md)
- [Khoj vs PrivateGPT](https://www.anchorterminal.com/compare/khoj-vs-privategpt.md)
- [LocalGhost vs PrivateGPT](https://www.anchorterminal.com/compare/localghost-vs-privategpt.md)

## 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.

---

Query this catalogue directly over MCP: https://www.anchorterminal.com/mcp (Streamable HTTP, no key). How: https://www.anchorterminal.com/agents/#mcp
