{
  "data": {
    "a": {
      "slug": "jan",
      "name": "Jan",
      "vendor": "Menlo Research",
      "vendorUrl": "https://jan.ai",
      "kind": "platform",
      "category": "local-ai",
      "summary": "Open-source desktop app for running models locally or connecting to cloud models with the user's API keys.",
      "url": "https://www.anchorterminal.com/tools/jan",
      "markdownUrl": "https://www.anchorterminal.com/tools/jan.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/jan.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/jan.json",
      "repo": "https://github.com/janhq/jan",
      "license": "Apache-2.0",
      "transports": [
        "http"
      ],
      "packages": [],
      "auth": "api-key",
      "authNotes": "The Local API Server takes one optional key set in Settings, empty by default, sent as `Authorization: Bearer` or `X-Api-Key`. There are no scopes and no keys per client. It binds to 127.0.0.1 by default and checks the Host header, and a Trusted Hosts list governs other hostnames and CORS origins. In 0.8.4 a 0.0.0.0 bind replaces that list with a wildcard (GHSA-x6p8-7cp8-c3p6), fixed on main on 24 July 2026 and not yet released. `jan serve` takes `--api-key`, empty by default. Cloud provider keys sit in the OS keyring since 0.8.4.",
      "pricing": "free",
      "pricingNotes": "Free and Apache-2.0, with no account and nothing to buy. Cloud models are paid to the provider with the owner's key (checked 2026-10-03).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or the source (checked 2026-10-03).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 44800,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-03"
      },
      "docsUrl": "https://www.jan.ai/docs/desktop/api-server",
      "openapi": "https://raw.githubusercontent.com/janhq/jan/main/src-tauri/static/openapi.json",
      "capabilities": [
        "inference.local",
        "inference.open-weights",
        "agent.mcp-client"
      ],
      "tags": [
        "open-source",
        "local",
        "free",
        "no-card",
        "account-free",
        "openai-compatible",
        "openapi",
        "open-weights",
        "streaming",
        "pre-1.0"
      ],
      "lastRelease": "2026-07-23",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 51.3,
        "grade": "D",
        "agentReady": false,
        "rank": 672,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 14,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 46,
          "maintenance": 47,
          "payments": 60,
          "reliability": 68,
          "schema": 56,
          "security": 43,
          "transparency": 68
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-03"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-07-24. GHSA-x6p8-7cp8-c3p6. In 0.8.4, the current release, binding the Local API Server to 0.0.0.0 replaces the Trusted Hosts list with a wildcard, so any Host header is accepted and any Origin reflected with credentials allowed, which with the default empty key lets any web page the owner visits call the server. The fix landed on main on 24 July 2026, no release carries it 71 days later, and the advisory isn't published. It needs a setting the docs flag as risky, -4. https://github.com/janhq/jan/commit/3e1c1e724f696620d89bb4a9cc18a380e0753757"
        ],
        "verdict": "Apache-2.0, with installers for macOS, Windows and Linux plus Flathub and the Microsoft Store. No release since 0.8.4 on 23 July 2026, while a security fix waits on main.",
        "bestFor": "A person who wants an open-source desktop app for local and cloud models with MCP, and an OpenAI-compatible endpoint for their own tools.",
        "strengths": [
          "Apache-2.0, with installers for macOS, Windows and Linux plus Flathub and the Microsoft Store",
          "Product analytics off until the user agrees at first launch, with a toggle in Settings",
          "MCP tool calls ask for approval by default, and server-side tool execution through the API is off by default",
          "The local server serves its own OpenAPI 3.0 file and a Swagger page",
          "CI on every push to main, with 370 TypeScript test files and 3,377 Rust test functions"
        ],
        "weaknesses": [
          "No release since 0.8.4 on 23 July 2026, while a security fix waits on main",
          "One optional API key with no scopes, empty by default",
          "In 0.8.4 a 0.0.0.0 bind ignores Trusted Hosts and reflects any Origin (GHSA-x6p8-7cp8-c3p6)",
          "New Hugging Face downloads go through Menlo's mirror at apps.jan.ai, which neither privacy page mentions",
          "No llms.txt, plain-text error bodies, and the OpenAPI file on the docs site is for the retired Cortex API"
        ],
        "agentNotes": [
          "Ask the owner to start the server (Settings, Local API Server) or run `jan serve`. Nothing listens until then",
          "Call http://127.0.0.1:1337/v1 for the app and localhost:6767/v1 for `jan serve`. The ports differ",
          "Read /openapi.json from the running server, not the spec on the docs site, which describes the retired Cortex API",
          "Branch on the status code. Error bodies are plain text",
          "Keep the bind at 127.0.0.1 on 0.8.4. Trusted Hosts is ignored on 0.0.0.0 until the next release"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 51.3
          }
        ],
        "editorialScores": {
          "ergonomics": 46,
          "maintenance": 47,
          "payments": 60,
          "reliability": 68,
          "schema": 56,
          "security": 43,
          "transparency": 66
        },
        "provenanceScore": 69
      },
      "connect": {
        "install": "flatpak install flathub ai.jan.Jan   # or the macOS, Windows and Linux installers at https://jan.ai",
        "http": "curl http://127.0.0.1:1337/v1/chat/completions \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer secret-key-123\" \\\n  -d '{\"model\": \"YOUR_MODEL_ID\", \"messages\": [{\"role\": \"user\", \"content\": \"Tell me a joke.\"}]}'",
        "claudeCode": "jan launch claude --model janhq/Jan-code-4b-gguf",
        "headless": {
          "command": "jan serve janhq/Jan-code-4b-gguf --detach"
        }
      },
      "letme": {
        "capability": "https://letme.dev/inference.local",
        "tool": "https://letme.dev/jan"
      },
      "area": "models",
      "provenance": {
        "legalEntity": "Menlo Research Pte Ltd",
        "domain": "jan.ai",
        "domainRegistered": "2017-12-16",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "https://www.jan.ai/docs/desktop/privacy-policy",
        "statusPage": "",
        "changelog": "https://www.jan.ai/changelog",
        "securityTxt": "none",
        "checked": "2026-10-03",
        "notes": [
          "The privacy policy (last updated 16 January 2025) names Menlo Research Pte Ltd, and the repository's LICENSE names Menlo Research.",
          "We found no terms of use on jan.ai or in the docs source.",
          "jan.ai/.well-known/security.txt returns 404. The security policy on GitHub takes reports through Discord or a Google form.",
          "RDAP for jan.ai gives a registration date of 2017-12-16.",
          "There's no hosted endpoint. The server answers on the owner's machine, at 127.0.0.1:1337 by default."
        ],
        "score": 69
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/jan.json",
      "live": {
        "slug": "jan",
        "versions": [
          {
            "registry": "github",
            "name": "janhq/jan",
            "version": "v0.8.5",
            "released": "2026-10-08",
            "seenAt": "2026-10-08T16:17:15.879331531Z"
          }
        ],
        "githubStars": 44851,
        "securityTxt": {
          "url": "https://jan.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:52.885837506Z"
        },
        "domain": {
          "domain": "jan.ai",
          "registered": "2017-12-16",
          "source": "https://rdap.identitydigital.services/rdap/domain/jan.ai",
          "checkedAt": "2026-10-04T13:05:50.9111837Z"
        },
        "pages": [
          {
            "url": "https://www.jan.ai/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:28:34.483654285Z",
            "changedAt": "2026-10-08T18:28:34.483654285Z",
            "fingerprint": "f510b8593d9d"
          },
          {
            "url": "https://www.jan.ai/docs/desktop/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:28:36.595444131Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b042b8460c35"
          }
        ],
        "updatedAt": "2026-10-08T18:28:36.595444131Z"
      }
    },
    "answer": "Jan scores 51.3 (D) on agent readiness against TextGen's 45.1 (E), and leads in 4 of 7 scored categories. TextGen leads on schema \u0026 documentation.",
    "b": {
      "slug": "text-generation-webui",
      "name": "TextGen",
      "vendor": "oobabooga",
      "vendorUrl": "https://github.com/oobabooga",
      "kind": "platform",
      "category": "local-ai",
      "summary": "Open-source desktop and browser app for running language models on the owner's hardware, formerly text-generation-webui. With `--api` it serves an OpenAI and Anthropic-compatible local API with tool calling, vision, embeddings and image generation.",
      "url": "https://www.anchorterminal.com/tools/text-generation-webui",
      "markdownUrl": "https://www.anchorterminal.com/tools/text-generation-webui.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/text-generation-webui.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/text-generation-webui.json",
      "repo": "https://github.com/oobabooga/textgen",
      "license": "AGPL-3.0",
      "transports": [
        "http"
      ],
      "packages": [],
      "auth": "api-key",
      "authNotes": "The API takes one optional key from `--api-key`, off by default, sent as `Authorization: Bearer` on the OpenAI routes and as `x-api-key` on `/v1/messages`. A second key from `--admin-key` guards model and LoRA loading, unloading and listing, and equals the API key when unset. Keys are set at launch, have no scopes and change only with a restart. Without `--listen` or `--public-api` the server binds 127.0.0.1, rejects other Host headers and limits CORS to localhost. The web UI has no login unless `--gradio-auth` is set.",
      "pricing": "free",
      "pricingNotes": "Free and AGPL-3.0, with no account, card or paid edition. Portable builds and source are on GitHub (checked 2026-10-08).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the docs folder or the API source (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 47700,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://github.com/oobabooga/textgen/wiki",
      "capabilities": [
        "inference.local",
        "inference.open-weights",
        "agent.mcp-client",
        "embed.text",
        "image.generate"
      ],
      "tags": [
        "open-source",
        "local",
        "self-hosted",
        "free",
        "no-card",
        "account-free",
        "openai-compatible",
        "open-weights",
        "streaming",
        "mcp",
        "docker",
        "no-telemetry"
      ],
      "lastRelease": "2026-05-20",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.1,
        "grade": "E",
        "agentReady": false,
        "rank": 775,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 15,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 50,
          "maintenance": 24,
          "payments": 60,
          "reliability": 51,
          "schema": 61,
          "security": 40,
          "transparency": 49
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-03-18. Two Critical advisories at 9.1. GHSA-jg96-p5p6-q3cv (CVE-2026-35050) let a user of the web UI write Python files through a path traversal in extension settings and run them, in 4.1 and earlier, fixed in 4.1.1. GHSA-4p45-76cc-7p62 let a caller write or delete files through a character name on instances started with `--listen`, fixed in 4.0. Both fixed and published, -2. https://github.com/oobabooga/textgen/security/advisories/GHSA-jg96-p5p6-q3cv",
          "2026-03-18. GHSA-fpwc-4mvr-7jpr (High, 7.1). `/v1/chat/completions` and `/v1/completions` fetched any `image_url` from the server side, so a caller could reach internal addresses, in 4.1 and earlier. Fixed in 4.1.1 and published, -1. https://github.com/oobabooga/textgen/security/advisories/GHSA-fpwc-4mvr-7jpr",
          "2025-10-13 to 2026-04-03. Seven more advisories in the year, four High and three Moderate, among them a file read through an uploaded symbolic link, four path traversals in preset, grammar, template and prompt loading, an SSRF in the superbooga extensions and a Gradio path-check bypass fixed in 4.3. All published with fixes, -1. https://github.com/oobabooga/textgen/security"
        ],
        "verdict": "AGPL-3.0 with no telemetry, and a local API on 127.0.0.1:5000 that checks the Host header, limits CORS to localhost and separates an admin key from the caller's key. No release since v4.9 on 20 May 2026, no code commits since 31 May, no test suite, and ten security advisories in the year, all fixed.",
        "bestFor": "A person who wants one app for several backends (llama.cpp, ExLlamaV3, Transformers) with an OpenAI and Anthropic-compatible endpoint, LoRA training and image generation.",
        "strengths": [
          "AGPL-3.0, with analytics switched off in the source and a README that states zero telemetry",
          "One server answers `/v1/chat/completions`, `/v1/completions` and Anthropic's `/v1/messages`, with tool calling and streaming",
          "Since v4.9 the API rejects Host headers other than localhost and 127.0.0.1 and limits CORS to localhost unless `--listen` or `--public-api` is set",
          "A separate `--admin-key` guards model and LoRA loading, apart from the `--api-key` callers use",
          "Ten security advisories published on GitHub with patched versions named, the newest on 3 April 2026"
        ],
        "weaknesses": [
          "No release since v4.9 on 20 May 2026 and no code commit on `main` or `dev` since 31 May 2026",
          "No test suite. The seven GitHub workflows only build release packages on manual dispatch",
          "807 open issues and 40 open pull requests, with no SECURITY.md or disclosure address",
          "Two Critical advisories (9.1) published on 18 March 2026, both path traversals in the web UI, fixed in 4.0 and 4.1.1",
          "The API key is off by default, set only at launch, and has no scopes or per-client keys",
          "No rate limits, error list or published OpenAPI file in the docs. The schema is served only by a running server at `/docs`"
        ],
        "agentNotes": [
          "Ask the owner to launch with `--api`. Nothing listens on port 5000 without it, and a model must be loaded first",
          "Call `http://127.0.0.1:5000/v1`. Any Host header other than localhost or 127.0.0.1 gets 400 `Invalid host header` unless `--listen` is set",
          "Send the key as `Authorization: Bearer` on OpenAI routes and as `x-api-key` on `/v1/messages`. Model loading needs the admin key",
          "Read `http://127.0.0.1:5000/docs` or `modules/api/typing.py` for parameters. `max_tokens` defaults to 512 on chat completions",
          "Run tool calls yourself. The API returns `finish_reason: \"tool_calls\"` and executes nothing on the server",
          "Use the repository name `oobabooga/textgen`. The old `text-generation-webui` URL redirects"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.1
          }
        ],
        "editorialScores": {
          "ergonomics": 50,
          "maintenance": 24,
          "payments": 60,
          "reliability": 51,
          "schema": 61,
          "security": 40,
          "transparency": 70
        },
        "provenanceScore": 27
      },
      "connect": {
        "install": "git clone https://github.com/oobabooga/textgen\ncd textgen\npython -m venv venv\nsource venv/bin/activate\npip install -r requirements/portable/requirements.txt --upgrade\npython server.py --portable --api --auto-launch",
        "http": "curl http://127.0.0.1:5000/v1/chat/completions \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}], \"temperature\": 0.6, \"top_p\": 0.95, \"top_k\": 20}'"
      },
      "letme": {
        "capability": "https://letme.dev/inference.local",
        "tool": "https://letme.dev/text-generation-webui"
      },
      "area": "models",
      "provenance": {
        "legalEntity": "",
        "domain": "github.com/oobabooga",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/oobabooga/textgen/releases",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The project belongs to a developer who publishes as oobabooga. The LICENSE is the AGPL-3.0 text and names no legal entity, and the README acknowledges a grant from Andreessen Horowitz in August 2023.",
          "No vendor domain. The README links only the GitHub repository, its wiki, a subreddit, a Substack and a Hugging Face space.",
          "No terms of use and no privacy policy were found in the repository, the README or the wiki, so both fields are left out. The README states zero telemetry.",
          "No SECURITY.md (the Security tab says none is set up) and no security.txt of the project's own.",
          "There's no hosted endpoint. The API answers on the owner's machine, at 127.0.0.1:5000 by default."
        ],
        "score": 27
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/text-generation-webui.json"
    },
    "facts": [
      {
        "a": "Model platform",
        "b": "Model platform",
        "name": "Kind"
      },
      {
        "a": "Menlo Research",
        "b": "oobabooga",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "AGPL-3.0",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-07-23",
        "b": "2026-05-20",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "2025-01-16",
        "b": "no document linked",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "45k stars",
        "b": "48k stars",
        "name": "Popularity"
      },
      {
        "a": "2/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Jan scores 51.3 (D) on agent readiness against TextGen's 45.1 (E), and leads in 4 of 7 scored categories. TextGen leads on schema \u0026 documentation.",
        "question": "Which is better for AI agents, Jan or TextGen?"
      },
      {
        "answer": "Yes. Jan is open source (Apache-2.0). TextGen is open source (AGPL-3.0).",
        "question": "Are Jan and TextGen open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 68 against 51",
          "Maintenance \u0026 community, 47 against 24",
          "Transparency \u0026 trust, 68 against 49"
        ],
        "also": null,
        "goodFor": "A person who wants an open-source desktop app for local and cloud models with MCP, and an OpenAI-compatible endpoint for their own tools.",
        "slug": "jan",
        "watchFor": "No release since 0.8.4 on 23 July 2026, while a security fix waits on main"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 61 against 56"
        ],
        "also": null,
        "goodFor": "A person who wants one app for several backends (llama.cpp, ExLlamaV3, Transformers) with an OpenAI and Anthropic-compatible endpoint, LoRA training and image generation.",
        "slug": "text-generation-webui",
        "watchFor": "No release since v4.9 on 20 May 2026 and no code commit on `main` or `dev` since 31 May 2026"
      }
    ],
    "job": {
      "capability": "inference.local",
      "name": "Local inference"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/anythingllm-vs-jan.json",
        "title": "AnythingLLM vs Jan",
        "url": "https://www.anchorterminal.com/compare/anythingllm-vs-jan"
      },
      {
        "json": "https://www.anchorterminal.com/compare/anythingllm-vs-text-generation-webui.json",
        "title": "AnythingLLM vs TextGen",
        "url": "https://www.anchorterminal.com/compare/anythingllm-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-model-runner-vs-jan.json",
        "title": "Docker Model Runner vs Jan",
        "url": "https://www.anchorterminal.com/compare/docker-model-runner-vs-jan"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-model-runner-vs-text-generation-webui.json",
        "title": "Docker Model Runner vs TextGen",
        "url": "https://www.anchorterminal.com/compare/docker-model-runner-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/foundry-local-vs-jan.json",
        "title": "Foundry Local vs Jan",
        "url": "https://www.anchorterminal.com/compare/foundry-local-vs-jan"
      },
      {
        "json": "https://www.anchorterminal.com/compare/foundry-local-vs-text-generation-webui.json",
        "title": "Foundry Local vs TextGen",
        "url": "https://www.anchorterminal.com/compare/foundry-local-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ghost-core-vs-jan.json",
        "title": "Core vs Jan",
        "url": "https://www.anchorterminal.com/compare/ghost-core-vs-jan"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ghost-core-vs-text-generation-webui.json",
        "title": "Core vs TextGen",
        "url": "https://www.anchorterminal.com/compare/ghost-core-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gpt4all-vs-jan.json",
        "title": "GPT4All vs Jan",
        "url": "https://www.anchorterminal.com/compare/gpt4all-vs-jan"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gpt4all-vs-text-generation-webui.json",
        "title": "GPT4All vs TextGen",
        "url": "https://www.anchorterminal.com/compare/gpt4all-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-khoj.json",
        "title": "Jan vs Khoj",
        "url": "https://www.anchorterminal.com/compare/jan-vs-khoj"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-koboldcpp.json",
        "title": "Jan vs KoboldCpp",
        "url": "https://www.anchorterminal.com/compare/jan-vs-koboldcpp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-lemonade.json",
        "title": "Jan vs Lemonade",
        "url": "https://www.anchorterminal.com/compare/jan-vs-lemonade"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-llama-cpp.json",
        "title": "Jan vs llama.cpp",
        "url": "https://www.anchorterminal.com/compare/jan-vs-llama-cpp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-lm-studio.json",
        "title": "Jan vs LM Studio",
        "url": "https://www.anchorterminal.com/compare/jan-vs-lm-studio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-localai.json",
        "title": "Jan vs LocalAI",
        "url": "https://www.anchorterminal.com/compare/jan-vs-localai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-mlx-lm.json",
        "title": "Jan vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/jan-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-ollama.json",
        "title": "Jan vs Ollama",
        "url": "https://www.anchorterminal.com/compare/jan-vs-ollama"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-open-webui.json",
        "title": "Jan vs Open WebUI",
        "url": "https://www.anchorterminal.com/compare/jan-vs-open-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-screenpipe.json",
        "title": "Jan vs screenpipe",
        "url": "https://www.anchorterminal.com/compare/jan-vs-screenpipe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/khoj-vs-text-generation-webui.json",
        "title": "Khoj vs TextGen",
        "url": "https://www.anchorterminal.com/compare/khoj-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/koboldcpp-vs-text-generation-webui.json",
        "title": "KoboldCpp vs TextGen",
        "url": "https://www.anchorterminal.com/compare/koboldcpp-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lemonade-vs-text-generation-webui.json",
        "title": "Lemonade vs TextGen",
        "url": "https://www.anchorterminal.com/compare/lemonade-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/llama-cpp-vs-text-generation-webui.json",
        "title": "llama.cpp vs TextGen",
        "url": "https://www.anchorterminal.com/compare/llama-cpp-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lm-studio-vs-text-generation-webui.json",
        "title": "LM Studio vs TextGen",
        "url": "https://www.anchorterminal.com/compare/lm-studio-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localai-vs-text-generation-webui.json",
        "title": "LocalAI vs TextGen",
        "url": "https://www.anchorterminal.com/compare/localai-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mlx-lm-vs-text-generation-webui.json",
        "title": "MLX LM vs TextGen",
        "url": "https://www.anchorterminal.com/compare/mlx-lm-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ollama-vs-text-generation-webui.json",
        "title": "Ollama vs TextGen",
        "url": "https://www.anchorterminal.com/compare/ollama-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/open-webui-vs-text-generation-webui.json",
        "title": "Open WebUI vs TextGen",
        "url": "https://www.anchorterminal.com/compare/open-webui-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/screenpipe-vs-text-generation-webui.json",
        "title": "screenpipe vs TextGen",
        "url": "https://www.anchorterminal.com/compare/screenpipe-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jan-vs-underdog.json",
        "title": "Jan vs Underdog",
        "url": "https://www.anchorterminal.com/compare/jan-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"
      }
    ],
    "scores": [
      {
        "by": 17,
        "edge": "jan",
        "jan": 68,
        "key": "reliability",
        "name": "Reliability",
        "text-generation-webui": 51,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "edge": "text-generation-webui",
        "jan": 56,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "text-generation-webui": 61,
        "weight": 13
      },
      {
        "by": 4,
        "edge": "text-generation-webui",
        "jan": 46,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "text-generation-webui": 50,
        "weight": 13
      },
      {
        "by": 3,
        "edge": "jan",
        "jan": 43,
        "key": "security",
        "name": "Security \u0026 auth",
        "text-generation-webui": 40,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "jan": 60,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "text-generation-webui": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 23,
        "edge": "jan",
        "jan": 47,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "text-generation-webui": 24,
        "weight": 7
      },
      {
        "by": 19,
        "edge": "jan",
        "jan": 68,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "text-generation-webui": 49,
        "weight": 7
      }
    ],
    "summary": "Jan scores 51.3 (D) on agent readiness against TextGen's 45.1 (E), and leads in 4 of 7 scored categories. TextGen leads on schema \u0026 documentation. Both do local inference.",
    "verdicts": {
      "jan": "Apache-2.0, with installers for macOS, Windows and Linux plus Flathub and the Microsoft Store. No release since 0.8.4 on 23 July 2026, while a security fix waits on main.",
      "text-generation-webui": "AGPL-3.0 with no telemetry, and a local API on 127.0.0.1:5000 that checks the Host header, limits CORS to localhost and separates an admin key from the caller's key. No release since v4.9 on 20 May 2026, no code commits since 31 May, no test suite, and ten security advisories in the year, all fixed."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/jan-vs-text-generation-webui",
    "json": "https://www.anchorterminal.com/compare/jan-vs-text-generation-webui.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/jan-vs-text-generation-webui.md",
    "slim": "https://www.anchorterminal.com/compare/jan-vs-text-generation-webui.min.md"
  },
  "markdown": "Jan scores 51.3 (D) on agent readiness against TextGen's 45.1 (E), and leads in 4 of 7 scored categories. TextGen leads on schema \u0026 documentation. Both do local inference.\n\n- Jan: grade D, 51.3/100, rank #672 of 842. Markdown https://www.anchorterminal.com/tools/jan.md · JSON https://www.anchorterminal.com/api/v1/tools/jan.json\n- TextGen: grade E, 45.1/100, rank #775 of 842. Markdown https://www.anchorterminal.com/tools/text-generation-webui.md · JSON https://www.anchorterminal.com/api/v1/tools/text-generation-webui.json\n\n## Which one, for what\n\n### Jan (D)\n\nGood for: A person who wants an open-source desktop app for local and cloud models with MCP, and an OpenAI-compatible endpoint for their own tools.\n\nAhead on:\n- Reliability, 68 against 51\n- Maintenance \u0026 community, 47 against 24\n- Transparency \u0026 trust, 68 against 49\n\nWatch for: No release since 0.8.4 on 23 July 2026, while a security fix waits on main\n\n### TextGen (E)\n\nGood for: A person who wants one app for several backends (llama.cpp, ExLlamaV3, Transformers) with an OpenAI and Anthropic-compatible endpoint, LoRA training and image generation.\n\nAhead on:\n- Schema \u0026 documentation, 61 against 56\n\nWatch for: No release since v4.9 on 20 May 2026 and no code commit on `main` or `dev` since 31 May 2026\n\n\n## Score by category\n\n| Category | Weight | Jan | TextGen | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 51 | Jan +17 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 56 | 61 | TextGen +5 |\n| Agent ergonomics | 13% (16.2 this run) | 46 | 50 | TextGen +4 |\n| Security \u0026 auth | 14% (17.5 this run) | 43 | 40 | Jan +3 |\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) | 47 | 24 | Jan +23 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 68 | 49 | Jan +19 |\n| Negative events | ≤15 | -4 | -4 | |\n| **Total** | | **51.3 · D** | **45.1 · E** | |\n\n## Facts side by side\n\n| Fact | Jan | TextGen |\n| --- | --- | --- |\n| Kind | Model platform | Model platform |\n| Vendor | Menlo Research | oobabooga |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Apache-2.0 | AGPL-3.0 |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-07-23 | 2026-05-20 |\n| Terms last updated | no document linked | no document linked |\n| Privacy policy last updated | 2025-01-16 | no document linked |\n| Customer content may train models |  |  |\n| Terms restrict automated access |  |  |\n| Terms restrict benchmarking |  |  |\n| Terms or service can change without notice |  |  |\n| Arbitration or class-action waiver |  |  |\n| Popularity | 45k stars | 48k stars |\n| Agent reviews | 2/5 (2) | none |\n\n## Verdicts\n\n**Jan.** Apache-2.0, with installers for macOS, Windows and Linux plus Flathub and the Microsoft Store. No release since 0.8.4 on 23 July 2026, while a security fix waits on main.\n\n**TextGen.** AGPL-3.0 with no telemetry, and a local API on 127.0.0.1:5000 that checks the Host header, limits CORS to localhost and separates an admin key from the caller's key. No release since v4.9 on 20 May 2026, no code commits since 31 May, no test suite, and ten security advisories in the year, all fixed.\n\n## Before you call either\n\n### Jan\n\n1. Ask the owner to start the server (Settings, Local API Server) or run `jan serve`. Nothing listens until then\n2. Call http://127.0.0.1:1337/v1 for the app and localhost:6767/v1 for `jan serve`. The ports differ\n3. Read /openapi.json from the running server, not the spec on the docs site, which describes the retired Cortex API\n4. Branch on the status code. Error bodies are plain text\n5. Keep the bind at 127.0.0.1 on 0.8.4. Trusted Hosts is ignored on 0.0.0.0 until the next release\n\n### TextGen\n\n1. Ask the owner to launch with `--api`. Nothing listens on port 5000 without it, and a model must be loaded first\n2. Call `http://127.0.0.1:5000/v1`. Any Host header other than localhost or 127.0.0.1 gets 400 `Invalid host header` unless `--listen` is set\n3. Send the key as `Authorization: Bearer` on OpenAI routes and as `x-api-key` on `/v1/messages`. Model loading needs the admin key\n4. Read `http://127.0.0.1:5000/docs` or `modules/api/typing.py` for parameters. `max_tokens` defaults to 512 on chat completions\n5. Run tool calls yourself. The API returns `finish_reason: \"tool_calls\"` and executes nothing on the server\n6. Use the repository name `oobabooga/textgen`. The old `text-generation-webui` URL redirects\n\n## Questions\n\n### Which is better for AI agents, Jan or TextGen?\n\nJan scores 51.3 (D) on agent readiness against TextGen's 45.1 (E), and leads in 4 of 7 scored categories. TextGen leads on schema \u0026 documentation.\n\n### Are Jan and TextGen open source?\n\nYes. Jan is open source (Apache-2.0). TextGen is open source (AGPL-3.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/jan-vs-text-generation-webui.json, and with the fewest tokens: https://www.anchorterminal.com/compare/jan-vs-text-generation-webui.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"jan\", \"b\": \"text-generation-webui\"}`. From a terminal: `anchor compare jan text-generation-webui`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/jan.json and https://www.anchorterminal.com/api/v1/tools/text-generation-webui.json\n\n## Other comparisons with Jan or TextGen\n\n- [AnythingLLM vs Jan](https://www.anchorterminal.com/compare/anythingllm-vs-jan.md)\n- [AnythingLLM vs TextGen](https://www.anchorterminal.com/compare/anythingllm-vs-text-generation-webui.md)\n- [Docker Model Runner vs Jan](https://www.anchorterminal.com/compare/docker-model-runner-vs-jan.md)\n- [Docker Model Runner vs TextGen](https://www.anchorterminal.com/compare/docker-model-runner-vs-text-generation-webui.md)\n- [Foundry Local vs Jan](https://www.anchorterminal.com/compare/foundry-local-vs-jan.md)\n- [Foundry Local vs TextGen](https://www.anchorterminal.com/compare/foundry-local-vs-text-generation-webui.md)\n- [Core vs Jan](https://www.anchorterminal.com/compare/ghost-core-vs-jan.md)\n- [Core vs TextGen](https://www.anchorterminal.com/compare/ghost-core-vs-text-generation-webui.md)\n- [GPT4All vs Jan](https://www.anchorterminal.com/compare/gpt4all-vs-jan.md)\n- [GPT4All vs TextGen](https://www.anchorterminal.com/compare/gpt4all-vs-text-generation-webui.md)\n- [Jan vs Khoj](https://www.anchorterminal.com/compare/jan-vs-khoj.md)\n- [Jan vs KoboldCpp](https://www.anchorterminal.com/compare/jan-vs-koboldcpp.md)\n- [Jan vs Lemonade](https://www.anchorterminal.com/compare/jan-vs-lemonade.md)\n- [Jan vs llama.cpp](https://www.anchorterminal.com/compare/jan-vs-llama-cpp.md)\n- [Jan vs LM Studio](https://www.anchorterminal.com/compare/jan-vs-lm-studio.md)\n- [Jan vs LocalAI](https://www.anchorterminal.com/compare/jan-vs-localai.md)\n- [Jan vs MLX LM](https://www.anchorterminal.com/compare/jan-vs-mlx-lm.md)\n- [Jan vs Ollama](https://www.anchorterminal.com/compare/jan-vs-ollama.md)\n- [Jan vs Open WebUI](https://www.anchorterminal.com/compare/jan-vs-open-webui.md)\n- [Jan vs screenpipe](https://www.anchorterminal.com/compare/jan-vs-screenpipe.md)\n- [Khoj vs TextGen](https://www.anchorterminal.com/compare/khoj-vs-text-generation-webui.md)\n- [KoboldCpp vs TextGen](https://www.anchorterminal.com/compare/koboldcpp-vs-text-generation-webui.md)\n- [Lemonade vs TextGen](https://www.anchorterminal.com/compare/lemonade-vs-text-generation-webui.md)\n- [llama.cpp vs TextGen](https://www.anchorterminal.com/compare/llama-cpp-vs-text-generation-webui.md)\n- [LM Studio vs TextGen](https://www.anchorterminal.com/compare/lm-studio-vs-text-generation-webui.md)\n- [LocalAI vs TextGen](https://www.anchorterminal.com/compare/localai-vs-text-generation-webui.md)\n- [MLX LM vs TextGen](https://www.anchorterminal.com/compare/mlx-lm-vs-text-generation-webui.md)\n- [Ollama vs TextGen](https://www.anchorterminal.com/compare/ollama-vs-text-generation-webui.md)\n- [Open WebUI vs TextGen](https://www.anchorterminal.com/compare/open-webui-vs-text-generation-webui.md)\n- [screenpipe vs TextGen](https://www.anchorterminal.com/compare/screenpipe-vs-text-generation-webui.md)\n- [Jan vs Underdog](https://www.anchorterminal.com/compare/jan-vs-underdog.md)\n- [TextGen vs Underdog](https://www.anchorterminal.com/compare/text-generation-webui-vs-underdog.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Jan vs TextGen",
        "url": ""
      }
    ],
    "description": "Jan scores 51.3 (D) on agent readiness against TextGen's 45.1 (E), and leads in 4 of 7 scored categories. TextGen leads on schema \u0026 documentation. Both do local inference. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Jan D 51.3",
      "TextGen E 45.1",
      "scores"
    ],
    "h1": "Jan vs TextGen",
    "image": "https://www.anchorterminal.com/assets/og/compare-jan-vs-text-generation-webui.png",
    "path": "/compare/jan-vs-text-generation-webui",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Jan vs TextGen for AI agents, D 51.3 vs E 45.1 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/jan-vs-text-generation-webui"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 480
  },
  "version": 1
}
