{
  "data": {
    "a": {
      "slug": "localai",
      "name": "LocalAI",
      "vendor": "Ettore Di Giacinto and the LocalAI team",
      "vendorUrl": "https://localai.io",
      "kind": "http-api",
      "category": "local-ai",
      "summary": "Open-source engine in Go, MIT licensed, that runs models on the owner's hardware behind OpenAI-, Anthropic-, Ollama- and ElevenLabs-compatible APIs on port 8080.",
      "url": "https://www.anchorterminal.com/tools/localai",
      "markdownUrl": "https://www.anchorterminal.com/tools/localai.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/localai.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/localai.json",
      "repo": "https://github.com/mudler/LocalAI",
      "license": "MIT. Each backend image wraps an upstream engine (llama.cpp, vLLM, whisper.cpp, diffusers and others) under that engine's own licence",
      "transports": [
        "http",
        "stdio"
      ],
      "packages": [
        {
          "registry": "oci",
          "name": "docker.io/localai/localai"
        }
      ],
      "auth": "mixed",
      "authNotes": "Off by default. With no keys and no user accounts configured, every request is accepted, and the server refuses to start on a public address in that state unless `--allow-insecure-public-bind` is set. `LOCALAI_API_KEY` sets shared keys with full admin rights. `LOCALAI_AUTH=true` turns on user accounts (local, GitHub OAuth or OIDC), and each user creates revocable keys stored as HMAC-SHA256, with an optional expiry in the source, carrying the user's role (admin or user) and per-model and per-feature permissions. Keys go in `Authorization: Bearer`, `x-api-key`, `xi-api-key` or a `token` cookie.",
      "pricing": "free",
      "pricingNotes": "Free and MIT with nothing to buy. You run it on your own hardware. The project takes sponsorship through GitHub Sponsors.",
      "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": 42,
      "popularity": {
        "githubStars": 47800,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-03"
      },
      "docsUrl": "https://localai.io/basics/getting_started/",
      "openapi": "https://raw.githubusercontent.com/mudler/LocalAI/master/swagger/swagger.json",
      "capabilities": [
        "inference.local",
        "inference.open-weights",
        "agent.mcp-client",
        "embed.text",
        "rerank",
        "speech.stt",
        "speech.tts",
        "voice.speech-to-speech",
        "image.generate",
        "video.generate",
        "guard.pii",
        "finetune.sft",
        "db.vector"
      ],
      "tags": [
        "open-source",
        "local",
        "self-hosted",
        "free",
        "no-card",
        "openai-compatible",
        "openapi",
        "mcp",
        "go",
        "docker",
        "streaming",
        "open-weights",
        "no-telemetry"
      ],
      "lastRelease": "2026-10-02",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68,
        "grade": "B",
        "agentReady": false,
        "rank": 133,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 1,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 71,
          "maintenance": 80,
          "payments": 60,
          "reliability": 84,
          "schema": 81,
          "security": 62,
          "transparency": 47
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-03"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-07-07. CVE-2026-59707 (8.6 at NVD under CVSS 3.1, published by VulnCheck), an unauthenticated server-side request forgery through POST /models/apply in v4.3.1 and earlier, reported in issue #10665. The code now refuses private, loopback and metadata addresses in gallery config fetches, with a comment citing the issue, from v4.8.0 at the latest. The project published no GitHub advisory, the fix commit NVD and VulnCheck name (f9b968e) is an unrelated docs change, and SECURITY.md still lists 3.x as the supported series. Fixed, documented only by a third party, -3. https://nvd.nist.gov/vuln/detail/CVE-2026-59707; https://github.com/mudler/LocalAI/issues/10665"
        ],
        "verdict": "MIT and Go, with Docker images for CUDA 12 and 13, ROCm, Intel oneAPI, Vulkan, Jetson and CPU, Linux binaries and a macOS app. No authentication by default. Loopback, LAN and VPN binds answer every caller, and keys set by environment variable grant full admin.",
        "strengths": [
          "MIT and Go, with Docker images for CUDA 12 and 13, ROCm, Intel oneAPI, Vulkan, Jetson and CPU, Linux binaries and a macOS app",
          "OpenAI, Anthropic, Open Responses, Ollama and ElevenLabs-compatible endpoints, with a Swagger 2.0 file of 133 operations served by every instance",
          "429 and 503 responses carry Retry-After, and errors come in the calling client's own envelope",
          "Optional user accounts with hashed, revocable keys, per-model and per-feature permissions and per-user quotas",
          "v4.11.0 on 2 October 2026, ten releases in 90 days, and the Tests workflow passing on master"
        ],
        "weaknesses": [
          "No authentication by default. Loopback, LAN and VPN binds answer every caller, and keys set by environment variable grant full admin",
          "CVE-2026-59707, an unauthenticated SSRF in v4.3.1 and earlier, published by VulnCheck in July 2026 with no advisory from the project",
          "SECURITY.md still names 3.x as the supported series, and there's no security.txt or privacy policy",
          "The MCP admin server registers 42 tools against the 19 its docs list, with no annotations, and its writes are held back only by a prompt",
          "No breaking-change section in the release notes, and the unsigned macOS DMG needs its quarantine flag removed by hand"
        ],
        "agentNotes": [
          "Send `Authorization: Bearer \u003ckey\u003e` when the operator has set keys. A 401 means the instance has auth on",
          "Read /.well-known/localai.json and /api/instructions first. Both answer without a key and list what this instance can do",
          "Back off on 429 and 503 for the Retry-After seconds. A 503 can mean the model is still loading",
          "Start `local-ai mcp-server` with `--read-only` unless the task is to install or delete models",
          "Take model names from /v1/models. Each instance names its own"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68
          }
        ],
        "editorialScores": {
          "ergonomics": 71,
          "maintenance": 80,
          "payments": 60,
          "reliability": 84,
          "schema": 81,
          "security": 62,
          "transparency": 67
        },
        "provenanceScore": 27
      },
      "connect": {
        "install": "docker run -ti --name local-ai -p 8080:8080 localai/localai:latest",
        "http": "curl http://localhost:8080/v1/chat/completions -H \"Content-Type: application/json\" -d '{\n  \"model\": \"qwen3-4b\",\n  \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]\n}'"
      },
      "letme": {
        "capability": "https://letme.dev/inference.local",
        "tool": "https://letme.dev/localai"
      },
      "area": "models",
      "provenance": {
        "legalEntity": "",
        "domain": "localai.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/mudler/LocalAI/releases",
        "securityTxt": "none",
        "checked": "2026-10-03",
        "notes": [
          "No company is named. The `LICENSE` copyright line reads Ettore Di Giacinto, and the README names him as project lead with Richard Palethorpe as maintainer.",
          "We found no terms or privacy page in the docs site's source, and localai.io/.well-known/security.txt and localai.io/llms.txt return 404.",
          "There's no hosted endpoint. Each instance answers on the operator's own host, by default port 8080."
        ],
        "score": 27
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/localai.json",
      "live": {
        "slug": "localai",
        "versions": [
          {
            "registry": "github",
            "name": "mudler/LocalAI",
            "version": "v4.11.0",
            "released": "2026-10-02",
            "seenAt": "2026-10-04T16:32:02.572449913Z"
          }
        ],
        "githubStars": 49385,
        "securityTxt": {
          "url": "https://localai.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:42.873292356Z"
        },
        "domain": {
          "domain": "localai.io",
          "checkedAt": "2026-10-04T13:07:02.946116654Z"
        },
        "updatedAt": "2026-10-04T16:32:02.572449913Z"
      }
    },
    "b": {
      "slug": "ollama",
      "name": "Ollama",
      "vendor": "Ollama Inc.",
      "vendorUrl": "https://ollama.com",
      "kind": "http-api",
      "category": "local-ai",
      "summary": "Open-source model runner for macOS, Windows and Linux, with a local API and a library of downloadable models.",
      "url": "https://www.anchorterminal.com/tools/ollama",
      "markdownUrl": "https://www.anchorterminal.com/tools/ollama.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/ollama.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/ollama.json",
      "repo": "https://github.com/ollama/ollama",
      "license": "MIT (server, CLI and desktop app). Ollama Cloud is a closed service under the ollama.com terms, and each model carries its own licence",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "oci",
          "name": "docker.io/ollama/ollama"
        },
        {
          "registry": "pypi",
          "name": "ollama"
        },
        {
          "registry": "npm",
          "name": "ollama"
        }
      ],
      "auth": "none",
      "authNotes": "The local API at http://localhost:11434 takes no credential. It binds 127.0.0.1, answers a foreign Host header with 403 while bound to loopback, and allows cross-origin calls from 127.0.0.1 and 0.0.0.0 unless `OLLAMA_ORIGINS` adds more. Anything that reaches the port can generate, pull, push, create, copy and delete models. Cloud models through the local server need `ollama signin`, which signs requests with the install's own key. Direct calls to https://ollama.com/api and /v1 need a Bearer API key from ollama.com/settings/keys, which doesn't expire and has no scopes, and is revoked from the same page (https://github.com/ollama/ollama/blob/main/docs/api/authentication.mdx).",
      "pricing": "freemium",
      "pricingNotes": "The server, CLI and desktop app are free under MIT with no account. Ollama Cloud has five plans on ollama.com/pricing. Free ($0, starter usage credits, starter models, 1 concurrent request), Pro ($20 a month or $200 a year, $60 of usage credits a month, 3 concurrent requests), Max ($100 a month, $300 of credits, 10 concurrent requests), Team ($500 a month, $1,000 of shared credits, unlimited users) and Enterprise (custom). Usage is priced per model by the token, and the page doesn't say whether the Free plan needs a card (checked 2026-10-03).",
      "priceSummary": "$20 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the pricing page or the source (checked 2026-10-03).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 181200,
        "npmWeekly": 871543,
        "pypiWeekly": null,
        "asOf": "2026-10-03"
      },
      "docsUrl": "https://docs.ollama.com",
      "llmsTxt": "https://docs.ollama.com/llms.txt",
      "openapi": "https://raw.githubusercontent.com/ollama/ollama/main/docs/openapi.yaml",
      "capabilities": [
        "inference.local",
        "inference.open-weights",
        "inference.llm",
        "embed.text",
        "inference.decision",
        "web.search",
        "web.fetch"
      ],
      "tags": [
        "open-source",
        "local",
        "self-hosted",
        "hosted",
        "freemium",
        "no-card",
        "openai-compatible",
        "openapi",
        "llms-txt",
        "docker",
        "go",
        "python",
        "typescript",
        "pre-1.0",
        "no-auth"
      ],
      "lastRelease": "2026-10-01",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 56.6,
        "grade": "C",
        "agentReady": false,
        "rank": 302,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 5,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 75,
          "maintenance": 81,
          "payments": 60,
          "reliability": 53,
          "schema": 79,
          "security": 28,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-03"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-04-29. CERT Polska published CVE-2026-42248 and CVE-2026-42249 (9.8 each). The Windows app accepted downloaded updates without a signature check and took the file name from the server's response, and it installs updates silently, so whoever could answer the update request could run code on the machine. CERT Polska tested 0.12.10 to 0.17.5, and the Windows check stayed a stub returning success until v0.23.3 on 12 May 2026, whose notes list the fix only as `app: harden update flows`. CERT Polska says the maintainers didn't respond with details or the vulnerable range, and Ollama published no advisory. Fixed, but not disclosed by the vendor, -4. https://cert.pl/en/posts/2026/04/CVE-2026-42248/; https://github.com/ollama/ollama/releases/tag/v0.23.3"
        ],
        "verdict": "An OpenAPI 3.1 file for the 15 native operations and llms.txt with 68 links to Markdown pages. No credential on the local API, and any caller that reaches it can pull, push, create and delete models.",
        "strengths": [
          "An OpenAPI 3.1 file for the 15 native operations and llms.txt with 68 links to Markdown pages",
          "Native, OpenAI-compatible and Anthropic-compatible routes on one local port, with `ollama launch` for Claude Code, Codex and OpenCode",
          "28 releases in the 90 days to 3 October 2026, and official Python and JavaScript libraries released on 28 September",
          "Local prompts stay on the machine, and `OLLAMA_NO_CLOUD=1` turns off cloud models and web search",
          "Binds 127.0.0.1 by default and refuses foreign Host headers while bound to loopback"
        ],
        "weaknesses": [
          "No credential on the local API, and any caller that reaches it can pull, push, create and delete models",
          "No GitHub security advisory, against 12 CVEs on NVD since October 2025",
          "The Windows updater installed unsigned files until v0.23.3 on 12 May 2026, fixed under a release note that didn't mention security",
          "The desktop app checks ollama.com every hour with a signed request, even with automatic updates off, and no documented way to stop it",
          "A default context of 4k tokens below 24 GiB of VRAM, where the docs say agents need 64,000"
        ],
        "agentNotes": [
          "Send `\"stream\": false` for one JSON body. The native routes stream NDJSON by default",
          "Set `OLLAMA_CONTEXT_LENGTH=64000` or `options.num_ctx` before agent work. The default is 4k below 24 GiB of VRAM",
          "Back off on a 503. It means the queue (512 by default) is full",
          "Put an authenticating proxy in front before binding past 127.0.0.1. The server checks no credential",
          "Expect model names with a `cloud` tag to run on Ollama's servers. They need `ollama signin` and fail with `OLLAMA_NO_CLOUD=1`"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 56.6
          }
        ],
        "editorialScores": {
          "ergonomics": 75,
          "maintenance": 81,
          "payments": 60,
          "reliability": 53,
          "schema": 79,
          "security": 28,
          "transparency": 66
        },
        "provenanceScore": 59
      },
      "connect": {
        "install": "curl -fsSL https://ollama.com/install.sh | sh   # macOS and Linux; Windows: irm https://ollama.com/install.ps1 | iex\nollama pull gemma4:e2b",
        "http": "curl http://localhost:11434/api/chat \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemma4:e2b\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Say hello in one sentence.\"}],\n    \"stream\": false\n  }'",
        "claudeCode": "ollama launch claude   # or: ANTHROPIC_AUTH_TOKEN=ollama ANTHROPIC_API_KEY=\"\" ANTHROPIC_BASE_URL=http://localhost:11434 claude --model qwen3.5"
      },
      "letme": {
        "capability": "https://letme.dev/inference.local",
        "tool": "https://letme.dev/ollama"
      },
      "area": "models",
      "unitPrices": [
        {
          "item": "Ollama Cloud Pro",
          "unit": "month",
          "usd": 20,
          "note": "$60 of usage credits a month, 3 concurrent requests. $200 a year"
        },
        {
          "item": "Ollama Cloud Max",
          "unit": "month",
          "usd": 100,
          "note": "$300 of usage credits a month, 10 concurrent requests"
        },
        {
          "item": "Ollama Cloud Team",
          "unit": "month",
          "usd": 500,
          "note": "$1,000 of shared usage credits a month, unlimited users, 10 concurrent requests"
        }
      ],
      "provenance": {
        "legalEntity": "Ollama Inc.",
        "domain": "ollama.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "https://ollama.com/terms",
        "privacy": "https://ollama.com/privacy",
        "statusPage": "",
        "changelog": "https://github.com/ollama/ollama/releases",
        "securityTxt": "none",
        "checked": "2026-10-03",
        "notes": [
          "The terms (last updated May 2026) name Ollama Inc., under California law with arbitration in San Francisco. The privacy policy was last updated in March 2026.",
          "ollama.com/.well-known/security.txt returns 404. SECURITY.md sends reports to hello@ollama.com.",
          "status.ollama.com doesn't resolve, and we found no other status page for Ollama Cloud.",
          "The API an agent calls runs on the owner's machine, so there's no shared endpoint to check. Ollama Cloud answers at https://ollama.com/api and /v1."
        ],
        "score": 59
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/ollama.json",
      "live": {
        "slug": "ollama",
        "versions": [
          {
            "registry": "github",
            "name": "ollama/ollama",
            "version": "v0.35.1",
            "released": "2026-09-29",
            "seenAt": "2026-10-04T16:34:54.976052119Z"
          },
          {
            "registry": "npm",
            "name": "ollama",
            "version": "0.6.4",
            "seenAt": "2026-10-04T16:34:54.718897973Z"
          },
          {
            "registry": "pypi",
            "name": "ollama",
            "version": "0.6.3",
            "released": "2026-09-29",
            "seenAt": "2026-10-04T16:34:54.611886134Z"
          }
        ],
        "githubStars": 182181,
        "npmWeekly": 899010,
        "pypiWeekly": 3792881,
        "securityTxt": {
          "url": "https://ollama.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:42.667557395Z"
        },
        "llmsTxt": {
          "url": "https://docs.ollama.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:03.78930424Z"
        },
        "domain": {
          "domain": "ollama.com",
          "registered": "2017-05-08",
          "source": "https://rdap.verisign.com/com/v1/domain/ollama.com",
          "checkedAt": "2026-10-04T13:05:52.948193398Z"
        },
        "pages": [
          {
            "url": "https://ollama.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:17.783383878Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "058925ed2fe9"
          },
          {
            "url": "https://ollama.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:19.909311869Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ef2c1d1a23eb"
          }
        ],
        "updatedAt": "2026-10-04T16:34:54.976052119Z"
      }
    },
    "summary": "LocalAI has a score of 68 (B) against Ollama's 56.6 (C). Both do local inference. The largest gap is security \u0026 auth, 34 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/localai-vs-ollama",
    "json": "https://www.anchorterminal.com/compare/localai-vs-ollama.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/localai-vs-ollama.md",
    "slim": "https://www.anchorterminal.com/compare/localai-vs-ollama.min.md"
  },
  "markdown": "LocalAI has a score of 68 (B) against Ollama's 56.6 (C). Both do local inference. The largest gap is security \u0026 auth, 34 points.\n\n- LocalAI: grade B, 68/100, rank #133 of 452. Markdown https://www.anchorterminal.com/tools/localai.md · JSON https://www.anchorterminal.com/api/v1/tools/localai.json\n- Ollama: grade C, 56.6/100, rank #302 of 452. Markdown https://www.anchorterminal.com/tools/ollama.md · JSON https://www.anchorterminal.com/api/v1/tools/ollama.json\n\n## Which one, for what\n\nPick LocalAI for reliability (+31), security \u0026 auth (+34).\n\nPick Ollama for transparency \u0026 trust (+16).\n\n## Score by category\n\n| Category | Weight | LocalAI | Ollama | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 84 | 53 | LocalAI +31 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 81 | 79 | LocalAI +2 |\n| Agent ergonomics | 13% (16.2 this run) | 71 | 75 | Ollama +4 |\n| Security \u0026 auth | 14% (17.5 this run) | 62 | 28 | LocalAI +34 |\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) | 80 | 81 | Ollama +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 47 | 63 | Ollama +16 |\n| Negative events | ≤15 | -3 | -4 | |\n| **Total** | | **68 · B** | **56.6 · C** | |\n\n## Facts side by side\n\n| Fact | LocalAI | Ollama |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Ettore Di Giacinto and the LocalAI team | Ollama Inc. |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports | HTTP, stdio | HTTP |\n| Auth | OAuth or key | None |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | MIT. Each backend image wraps an upstream engine (llama.cpp, vLLM, whisper.cpp, diffusers and others) under that engine's own licence | MIT (server, CLI and desktop app). Ollama Cloud is a closed service under the ollama.com terms, and each model carries its own licence |\n| Tools exposed | 42 | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | yes | no |\n| llms.txt | no | yes |\n| MCP registry | not listed | not listed |\n| Last release | 2026-10-02 | 2026-10-01 |\n| Popularity | 48k stars | 181k stars, 872k npm/wk |\n| Agent reviews | 3/5 (2) | 2.5/5 (2) |\n\n## Verdicts\n\n**LocalAI.** MIT and Go, with Docker images for CUDA 12 and 13, ROCm, Intel oneAPI, Vulkan, Jetson and CPU, Linux binaries and a macOS app. No authentication by default. Loopback, LAN and VPN binds answer every caller, and keys set by environment variable grant full admin.\n\n**Ollama.** An OpenAPI 3.1 file for the 15 native operations and llms.txt with 68 links to Markdown pages. No credential on the local API, and any caller that reaches it can pull, push, create and delete models.\n\n## Before you call either\n\n### LocalAI\n\n1. Send `Authorization: Bearer \u003ckey\u003e` when the operator has set keys. A 401 means the instance has auth on\n2. Read /.well-known/localai.json and /api/instructions first. Both answer without a key and list what this instance can do\n3. Back off on 429 and 503 for the Retry-After seconds. A 503 can mean the model is still loading\n4. Start `local-ai mcp-server` with `--read-only` unless the task is to install or delete models\n5. Take model names from /v1/models. Each instance names its own\n\n### Ollama\n\n1. Send `\"stream\": false` for one JSON body. The native routes stream NDJSON by default\n2. Set `OLLAMA_CONTEXT_LENGTH=64000` or `options.num_ctx` before agent work. The default is 4k below 24 GiB of VRAM\n3. Back off on a 503. It means the queue (512 by default) is full\n4. Put an authenticating proxy in front before binding past 127.0.0.1. The server checks no credential\n5. Expect model names with a `cloud` tag to run on Ollama's servers. They need `ollama signin` and fail with `OLLAMA_NO_CLOUD=1`\n\n## Other comparisons with LocalAI or Ollama\n\n- [AnythingLLM vs LocalAI](https://www.anchorterminal.com/compare/anythingllm-vs-localai.md)\n- [AnythingLLM vs Ollama](https://www.anchorterminal.com/compare/anythingllm-vs-ollama.md)\n- [GPT4All vs LocalAI](https://www.anchorterminal.com/compare/gpt4all-vs-localai.md)\n- [GPT4All vs Ollama](https://www.anchorterminal.com/compare/gpt4all-vs-ollama.md)\n- [Jan vs LocalAI](https://www.anchorterminal.com/compare/jan-vs-localai.md)\n- [Jan vs Ollama](https://www.anchorterminal.com/compare/jan-vs-ollama.md)\n- [Khoj vs LocalAI](https://www.anchorterminal.com/compare/khoj-vs-localai.md)\n- [Khoj vs Ollama](https://www.anchorterminal.com/compare/khoj-vs-ollama.md)\n- [llama.cpp vs LocalAI](https://www.anchorterminal.com/compare/llama-cpp-vs-localai.md)\n- [llama.cpp vs Ollama](https://www.anchorterminal.com/compare/llama-cpp-vs-ollama.md)\n- [LM Studio vs LocalAI](https://www.anchorterminal.com/compare/lm-studio-vs-localai.md)\n- [LM Studio vs Ollama](https://www.anchorterminal.com/compare/lm-studio-vs-ollama.md)\n- [LocalAI vs Open WebUI](https://www.anchorterminal.com/compare/localai-vs-open-webui.md)\n- [LocalAI vs screenpipe](https://www.anchorterminal.com/compare/localai-vs-screenpipe.md)\n- [Ollama vs Open WebUI](https://www.anchorterminal.com/compare/ollama-vs-open-webui.md)\n- [Ollama vs screenpipe](https://www.anchorterminal.com/compare/ollama-vs-screenpipe.md)\n- [LocalAI vs Underdog](https://www.anchorterminal.com/compare/localai-vs-underdog.md)\n- [Ollama vs Underdog](https://www.anchorterminal.com/compare/ollama-vs-underdog.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "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": "LocalAI vs Ollama",
        "url": ""
      }
    ],
    "description": "LocalAI has a score of 68 (B) against Ollama's 56.6 (C). Both do local inference. The largest gap is security \u0026 auth, 34 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "LocalAI B 68",
      "Ollama C 56.6",
      "scores"
    ],
    "h1": "LocalAI vs Ollama",
    "image": "https://www.anchorterminal.com/assets/og/compare-localai-vs-ollama.png",
    "path": "/compare/localai-vs-ollama",
    "published": "2026-10-01",
    "section": "tools",
    "title": "LocalAI vs Ollama for AI agents, B 68 vs C 56.6 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/compare/localai-vs-ollama"
  },
  "tokens": {
    "markdown": 1600,
    "slim": 330
  },
  "version": 1
}
