{
  "data": {
    "a": {
      "slug": "berth",
      "name": "Berth",
      "vendor": "Trevin Tindall (T-Crypt on GitHub)",
      "vendorUrl": "https://github.com/T-Crypt",
      "kind": "http-api",
      "category": "local-ai",
      "summary": "Berth is an open-source Go daemon and CLI that leases one GPU to local inference engines, image pipelines and games in turn, with a priority queue, measured VRAM handoffs and a preview OpenAI-compatible gateway on loopback.",
      "url": "https://www.anchorterminal.com/tools/berth",
      "markdownUrl": "https://www.anchorterminal.com/tools/berth.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/berth.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/berth.json",
      "repo": "https://github.com/T-Crypt/berth",
      "license": "Apache-2.0. The Berth name, the Pilot mascot and the artwork in assets/ are excluded from the licence, per the NOTICE file",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "go",
          "name": "github.com/T-Crypt/berth"
        }
      ],
      "auth": "api-key",
      "authNotes": "The gateway (`berth gateway`, 127.0.0.1:9799) takes one bearer key on every API route. The key is created on first use in `~/.config/berth/api.key` with mode 600, a group- or world-readable file is refused, `berth key` prints it, and the comparison is constant-time. The gateway binds loopback only, refuses non-loopback Host names and any request with a browser Origin. The key has no scopes and no documented rotation command. The daemon itself answers on a Unix socket with mode 600 in a 700 directory, so only the owning user can lease the card. The harbor web UI (127.0.0.1:9798) is read-only with no login, and its actions need a device paired with `berth pair`. The wake page and the optional `--comfyui-listen` port take no key by design.",
      "pricing": "free",
      "pricingNotes": "Free under Apache-2.0 with nothing to buy and no account. No hosted service.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the docs or the changelog (checked 2026-10-28). Nothing is sold.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 245,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-28"
      },
      "docsUrl": "https://t-crypt.github.io/berth/",
      "capabilities": [
        "inference.local",
        "compute.gpu"
      ],
      "tags": [
        "open-source",
        "local",
        "self-hosted",
        "free",
        "no-card",
        "apache-2.0",
        "openai-compatible",
        "go",
        "cli",
        "linux",
        "windows",
        "gpu",
        "agent-skill",
        "alpha",
        "pre-1.0",
        "new"
      ],
      "lastRelease": "2026-10-23",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.6,
        "grade": "B",
        "agentReady": false,
        "rank": 283,
        "ranked": true,
        "rankOf": 1218,
        "categoryRank": 2,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 75,
          "maintenance": 76,
          "payments": 60,
          "reliability": 76,
          "schema": 69,
          "security": 51,
          "transparency": 68
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-28"
        },
        "negative": 0,
        "verdict": "Berth coordinates one NVIDIA card between engines, ComfyUI and games, grants a lease only after the driver shows memory free, and gives agents a skill, JSON output and a keyed loopback gateway. It is 17 days old, alpha and maintained by one developer, with Windows and AMD experimental and no machine-readable API spec.",
        "bestFor": "Someone running several GPU programs (llama.cpp, llama-swap, Ollama, vLLM, ComfyUI, games) on one NVIDIA card who wants them to take turns, and agents that need to ask for the card.",
        "strengths": [
          "A lease is granted only after the driver shows the previous holder's memory free, and processes it did not start are reported, never killed",
          "Every reporting command takes `--format json|yaml`, with results on stdout and exit codes 0, 1, 2 and 75 by one documented rule",
          "Gateway failures return 503 with Retry-After and a machine code such as `outranked`, `engine_oom` or `no_headroom`",
          "CI builds, vets, lints and tests on Linux and Windows, and releases publish SHA256SUMS that `berth update` checks",
          "Apache-2.0, no account and no telemetry upload, with the one GitHub update check documented and switchable off"
        ],
        "weaknesses": [
          "First released on 11 October 2026 and called alpha. Windows, AMD and multiple GPUs are experimental, and the gateway is a preview",
          "One bearer key with no scopes or documented rotation controls every gateway route, including switch and stop",
          "No OpenAPI file or llms.txt. The gateway's own routes are documented in Markdown with curl examples",
          "No SECURITY.md, security.txt or disclosure route, and the harbor has no login when bound past loopback",
          "Linux and NVIDIA only for full support, through nvidia-smi. Intel and Apple GPUs are not supported"
        ],
        "agentNotes": [
          "Run `berth status --format json` before starting, stopping or switching any GPU engine. If berthd is unreachable, no engine is protected",
          "Never kill a process to free VRAM. Ask for the card with `berth run`, `berth hold` or a gateway request, and report stowaways to the user",
          "Send gateway requests to http://127.0.0.1:9799/v1 with `Authorization: Bearer $(berth key)`, and use `\"stream\": true` for cold starts of up to minutes",
          "On a 503, read the `code` and wait for `Retry-After`. A pinned holder (a game or `berth hold`) answers 409 to stop and is the user's call",
          "Ask the user before `berth reclaim LEASE --yes`, any berth.toml edit or `berth update`. Each changes the node"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.6
          }
        ],
        "editorialScores": {
          "ergonomics": 75,
          "maintenance": 76,
          "payments": 60,
          "reliability": 76,
          "schema": 69,
          "security": 51,
          "transparency": 74
        },
        "provenanceScore": 61,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-28",
            "maintenance": "2026-10-28",
            "payments": "2026-10-28",
            "reliability": "2026-10-28",
            "schema": "2026-10-28",
            "security": "2026-10-28",
            "transparency": "2026-10-28"
          },
          "last": "2026-10-28",
          "oldest": "2026-10-28",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "go install github.com/T-Crypt/berth/cmd/berth@latest      # or a release binary checked against SHA256SUMS\nberth service install --harbor\nberth status\nberth run --as llama --priority foreground -- llama-server -m model.gguf --port 8080",
        "http": "curl -s http://127.0.0.1:9799/v1/berth/board -H \"Authorization: Bearer $(berth key)\"",
        "claudeCode": "berth skill install   # writes the Berth and ComfyUI skills, including to ~/.claude/skills"
      },
      "letme": {
        "capability": "https://letme.dev/inference.local",
        "tool": "https://letme.dev/berth"
      },
      "area": "models",
      "provenance": {
        "legalEntity": "Trevin Tindall (T-Crypt on GitHub)",
        "domain": "",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/T-Crypt/berth/blob/main/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-28",
        "notes": [
          "The project has no website of its own. The docs are an MkDocs site at https://t-crypt.github.io/berth/. The NOTICE and README name Trevin Tindall (T-Crypt) as the creator and maintainer, and the licence is Apache-2.0.",
          "No terms, privacy policy, SECURITY.md or security.txt. The changelog has a Security heading for v0.3.4.",
          "The software runs on the owner's machine, so there is no vendor endpoint or status page to check.",
          "T-Crypt/berth is the original. jenerestain/berth, sefator/berth and Bacongineer/berth-upstream keep its module path, copyright and links, and are forks of earlier snapshots."
        ],
        "score": 61
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/berth.json"
    },
    "answer": "Berth scores 67.6 (B) on agent readiness against MLX LM's 52.5 (D), and leads in 5 of 7 scored categories.",
    "b": {
      "slug": "mlx-lm",
      "name": "MLX LM",
      "vendor": "Apple Inc.",
      "vendorUrl": "https://opensource.apple.com/projects/mlx/",
      "kind": "http-api",
      "category": "local-ai",
      "summary": "Open-source Python package and command-line tools from Apple's MLX team for running, quantising and fine-tuning language models on Apple silicon. `mlx_lm.server` exposes a local HTTP API modelled on OpenAI's chat completions.",
      "url": "https://www.anchorterminal.com/tools/mlx-lm",
      "markdownUrl": "https://www.anchorterminal.com/tools/mlx-lm.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/mlx-lm.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mlx-lm.json",
      "repo": "https://github.com/ml-explore/mlx-lm",
      "license": "MIT",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "mlx-lm"
        }
      ],
      "auth": "none",
      "authNotes": "No credential, and no option to add one. `mlx_lm.server` binds 127.0.0.1:8080 by default, and `--allowed-origins` defaults to `*`, so any origin's requests are answered. Access control is left to the network or a proxy in front (https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md).",
      "pricing": "free",
      "pricingNotes": "Free under MIT, with no account, key or card. Nothing is sold. The owner pays for the hardware and electricity.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or the source (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 7300,
        "npmWeekly": null,
        "pypiWeekly": 139915,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md",
      "capabilities": [
        "inference.local",
        "inference.open-weights"
      ],
      "tags": [
        "open-source",
        "local",
        "self-hosted",
        "free",
        "no-card",
        "openai-compatible",
        "python",
        "pre-1.0",
        "no-auth",
        "no-telemetry"
      ],
      "lastRelease": "2026-10-01",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 52.5,
        "grade": "D",
        "agentReady": false,
        "rank": 866,
        "ranked": true,
        "rankOf": 1218,
        "categoryRank": 14,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 54,
          "maintenance": 61,
          "payments": 60,
          "reliability": 66,
          "schema": 37,
          "security": 32,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "MIT, with no telemetry found in the source, and the tests passed on the last eight pushes to main. `mlx_lm.server` has no API key option, answers any origin by default and loads whichever model a request names, and its own docs say it is not recommended for production.",
        "bestFor": "An owner with an Apple silicon Mac who wants MLX-format models, local fine-tuning and quantisation from Python or the command line, with a simple local chat completions server.",
        "strengths": [
          "MIT, with no telemetry, analytics or update check found in the source",
          "Installs from PyPI (`mlx-lm` 0.32.0, Python 3.11 or later) and conda-forge, with releases published to PyPI by trusted publishing from a GitHub workflow",
          "The Build and Test workflow passed on the last eight pushes to main, with 21 test files run on a macOS runner",
          "`mlx_lm.server` binds 127.0.0.1:8080 by default, caps output at 512 tokens unless told otherwise and validates field types and ranges with a 400",
          "127 commits from 82 authors on main in the 90 days to 8 October 2026"
        ],
        "weaknesses": [
          "`mlx_lm.server` has no API key or other credential option, and `--allowed-origins` defaults to `*`",
          "A request's `model` and `adapters` fields make the server download or load any Hugging Face repository or local path, with no allow-list (open issue #1892)",
          "The docs and a start-up warning say the server is not recommended for production because it has only basic security checks",
          "No OpenAPI file or llms.txt, and `SERVER.md` leaves out `tools`, `seed`, `/health` and the error responses",
          "One PyPI release in 90 days (0.32.0 on 1 October 2026, the first since 0.31.3 on 22 April), and the version is still 0.x"
        ],
        "agentNotes": [
          "Keep `mlx_lm.server` on 127.0.0.1 and pass `--allowed-origins` with the origins you trust. There is no API key, and the default answers every origin",
          "Treat any caller as able to load any model. The `model` and `adapters` request fields accept any Hugging Face repository or local path",
          "Send `max_tokens` or `max_completion_tokens` when you need more than 512 tokens, the server default",
          "Read errors as `{\"error\": \"\u003ctext\u003e\"}` with 400 for a bad field and 404 for a model that failed to load. They are not OpenAI error objects",
          "Poll `GET /health` before the first request. It answers 503 with `unavailable` when the generation thread has stopped"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 52.5
          }
        ],
        "editorialScores": {
          "ergonomics": 54,
          "maintenance": 61,
          "payments": 60,
          "reliability": 66,
          "schema": 37,
          "security": 32,
          "transparency": 65
        },
        "provenanceScore": 72,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-08",
            "maintenance": "2026-10-08",
            "payments": "2026-10-08",
            "reliability": "2026-10-08",
            "schema": "2026-10-08",
            "security": "2026-10-08",
            "transparency": "2026-10-08"
          },
          "last": "2026-10-08",
          "lastMoved": "2026-10-27",
          "oldest": "2026-10-08",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install mlx-lm\nmlx_lm.server --model mlx-community/Mistral-7B-Instruct-v0.3-4bit   # listens on 127.0.0.1:8080",
        "http": "curl localhost:8080/v1/chat/completions \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n     \"messages\": [{\"role\": \"user\", \"content\": \"Say this is a test!\"}],\n     \"temperature\": 0.7\n   }'"
      },
      "letme": {
        "capability": "https://letme.dev/inference.local",
        "tool": "https://letme.dev/mlx-lm"
      },
      "sameCompany": [
        "apple-ads"
      ],
      "area": "models",
      "provenance": {
        "legalEntity": "Apple Inc.",
        "domain": "apple.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/ml-explore/mlx-lm/releases",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The `LICENSE` file reads Copyright 2023 Apple Inc., and the package author on PyPI is MLX Contributors at a group.apple.com address. The repository sits in GitHub's ml-explore organisation and has no website of its own.",
          "opensource.apple.com/projects/mlx describes the MLX framework and does not name MLX LM. Its footer links Apple's website terms and general privacy policy, which do not govern this software, so terms and privacy are left empty.",
          "www.apple.com/.well-known/security.txt is valid until 6 October 2027 and is Apple's corporate file. The repository's own policy takes reports through GitHub private vulnerability reporting.",
          "There is no shared hosted endpoint. The server runs on the owner's machine."
        ],
        "score": 72
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/mlx-lm.json",
      "live": {
        "slug": "mlx-lm",
        "versions": [
          {
            "registry": "github",
            "name": "ml-explore/mlx-lm",
            "version": "v0.32.2",
            "released": "2026-10-16",
            "seenAt": "2026-10-27T11:16:25.749609767Z"
          },
          {
            "registry": "pypi",
            "name": "mlx-lm",
            "version": "0.32.2",
            "released": "2026-10-16",
            "seenAt": "2026-10-27T11:16:25.562153582Z"
          }
        ],
        "githubStars": 7484,
        "pypiWeekly": 145961,
        "securityTxt": {
          "url": "https://apple.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-10-09T01:00:00.000Z",
          "checkedAt": "2026-10-27T15:31:53.540293244Z"
        },
        "domain": {
          "domain": "apple.com",
          "registered": "1987-02-19",
          "source": "https://rdap.verisign.com/com/v1/domain/apple.com",
          "checkedAt": "2026-10-25T14:02:07.025217459Z"
        },
        "github": {
          "repo": "ml-explore/mlx-lm",
          "checkedAt": "2026-10-26T07:47:13.819572771Z",
          "stars": 7476,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-24T00:10:47Z",
          "openIssues": 156,
          "openPRs": 91,
          "issuesOpened90d": 102,
          "issuesClosed90d": 148,
          "prsMerged90d": 142,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 47,
            "failure": 3,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-24T00:15:08Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 14,
            "medianDays": 5.8
          }
        },
        "updatedAt": "2026-10-27T15:31:53.540293244Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Trevin Tindall (T-Crypt on GitHub)",
        "b": "Apple Inc.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0. The Berth name, the Pilot mascot and the artwork in assets/ are excluded from the licence, per the NOTICE file",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-23",
        "b": "2026-10-01",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "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": "245 stars",
        "b": "7.3k stars, 140k PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Berth scores 67.6 (B) on agent readiness against MLX LM's 52.5 (D), and leads in 5 of 7 scored categories.",
        "question": "Which is better for AI agents, Berth or MLX LM?"
      },
      {
        "answer": "Berth needs an API key. MLX LM needs no key.",
        "question": "Do Berth and MLX LM need an API key?"
      },
      {
        "answer": "No hosted endpoint is listed for Berth. No hosted endpoint is listed for MLX LM.",
        "question": "Can an agent call Berth and MLX LM without installing anything?"
      },
      {
        "answer": "Yes. Berth is open source (Apache-2.0. The Berth name, the Pilot mascot and the artwork in assets/ are excluded from the licence, per the NOTICE file). MLX LM is open source (MIT).",
        "question": "Are Berth and MLX LM open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 76 against 66",
          "Schema \u0026 documentation, 69 against 37",
          "Agent ergonomics, 75 against 54",
          "Security \u0026 auth, 51 against 32",
          "Maintenance \u0026 community, 76 against 61"
        ],
        "also": null,
        "goodFor": "Someone running several GPU programs (llama.cpp, llama-swap, Ollama, vLLM, ComfyUI, games) on one NVIDIA card who wants them to take turns, and agents that need to ask for the card.",
        "slug": "berth",
        "watchFor": "First released on 11 October 2026 and called alpha. Windows, AMD and multiple GPUs are experimental, and the gateway is a preview"
      },
      {
        "aheadOn": null,
        "also": [
          "No key needed to call it"
        ],
        "goodFor": "An owner with an Apple silicon Mac who wants MLX-format models, local fine-tuning and quantisation from Python or the command line, with a simple local chat completions server.",
        "slug": "mlx-lm",
        "watchFor": "`mlx_lm.server` has no API key or other credential option, and `--allowed-origins` defaults to `*`"
      }
    ],
    "job": {
      "capability": "inference.local",
      "name": "Local inference"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/anythingllm-vs-berth.json",
        "title": "AnythingLLM vs Berth",
        "url": "https://www.anchorterminal.com/compare/anythingllm-vs-berth"
      },
      {
        "json": "https://www.anchorterminal.com/compare/anythingllm-vs-mlx-lm.json",
        "title": "AnythingLLM vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/anythingllm-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-bitrun.json",
        "title": "Berth vs BitRun",
        "url": "https://www.anchorterminal.com/compare/berth-vs-bitrun"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-docker-model-runner.json",
        "title": "Berth vs Docker Model Runner",
        "url": "https://www.anchorterminal.com/compare/berth-vs-docker-model-runner"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-foundry-local.json",
        "title": "Berth vs Foundry Local",
        "url": "https://www.anchorterminal.com/compare/berth-vs-foundry-local"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-ghost-core.json",
        "title": "Berth vs Core",
        "url": "https://www.anchorterminal.com/compare/berth-vs-ghost-core"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-gpt4all.json",
        "title": "Berth vs GPT4All",
        "url": "https://www.anchorterminal.com/compare/berth-vs-gpt4all"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-jan.json",
        "title": "Berth vs Jan",
        "url": "https://www.anchorterminal.com/compare/berth-vs-jan"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-khoj.json",
        "title": "Berth vs Khoj",
        "url": "https://www.anchorterminal.com/compare/berth-vs-khoj"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-koboldcpp.json",
        "title": "Berth vs KoboldCpp",
        "url": "https://www.anchorterminal.com/compare/berth-vs-koboldcpp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-lemonade.json",
        "title": "Berth vs Lemonade",
        "url": "https://www.anchorterminal.com/compare/berth-vs-lemonade"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-llama-cpp.json",
        "title": "Berth vs llama.cpp",
        "url": "https://www.anchorterminal.com/compare/berth-vs-llama-cpp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-lm-studio.json",
        "title": "Berth vs LM Studio",
        "url": "https://www.anchorterminal.com/compare/berth-vs-lm-studio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-localai.json",
        "title": "Berth vs LocalAI",
        "url": "https://www.anchorterminal.com/compare/berth-vs-localai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-ollama.json",
        "title": "Berth vs Ollama",
        "url": "https://www.anchorterminal.com/compare/berth-vs-ollama"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-open-webui.json",
        "title": "Berth vs Open WebUI",
        "url": "https://www.anchorterminal.com/compare/berth-vs-open-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-screenpipe.json",
        "title": "Berth vs screenpipe",
        "url": "https://www.anchorterminal.com/compare/berth-vs-screenpipe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-text-generation-webui.json",
        "title": "Berth vs TextGen",
        "url": "https://www.anchorterminal.com/compare/berth-vs-text-generation-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/berth-vs-vllm.json",
        "title": "Berth vs vLLM",
        "url": "https://www.anchorterminal.com/compare/berth-vs-vllm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitrun-vs-mlx-lm.json",
        "title": "BitRun vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/bitrun-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-model-runner-vs-mlx-lm.json",
        "title": "Docker Model Runner vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/docker-model-runner-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/foundry-local-vs-mlx-lm.json",
        "title": "Foundry Local vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/foundry-local-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ghost-core-vs-mlx-lm.json",
        "title": "Core vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/ghost-core-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gpt4all-vs-mlx-lm.json",
        "title": "GPT4All vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/gpt4all-vs-mlx-lm"
      },
      {
        "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/khoj-vs-mlx-lm.json",
        "title": "Khoj vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/khoj-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/koboldcpp-vs-mlx-lm.json",
        "title": "KoboldCpp vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/koboldcpp-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lemonade-vs-mlx-lm.json",
        "title": "Lemonade vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/lemonade-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/llama-cpp-vs-mlx-lm.json",
        "title": "llama.cpp vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/llama-cpp-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lm-studio-vs-mlx-lm.json",
        "title": "LM Studio vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/lm-studio-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localai-vs-mlx-lm.json",
        "title": "LocalAI vs MLX LM",
        "url": "https://www.anchorterminal.com/compare/localai-vs-mlx-lm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mlx-lm-vs-ollama.json",
        "title": "MLX LM vs Ollama",
        "url": "https://www.anchorterminal.com/compare/mlx-lm-vs-ollama"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mlx-lm-vs-open-webui.json",
        "title": "MLX LM vs Open WebUI",
        "url": "https://www.anchorterminal.com/compare/mlx-lm-vs-open-webui"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mlx-lm-vs-screenpipe.json",
        "title": "MLX LM vs screenpipe",
        "url": "https://www.anchorterminal.com/compare/mlx-lm-vs-screenpipe"
      },
      {
        "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/mlx-lm-vs-vllm.json",
        "title": "MLX LM vs vLLM",
        "url": "https://www.anchorterminal.com/compare/mlx-lm-vs-vllm"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mlx-lm-vs-underdog.json",
        "title": "MLX LM vs Underdog",
        "url": "https://www.anchorterminal.com/compare/mlx-lm-vs-underdog"
      }
    ],
    "scores": [
      {
        "berth": 76,
        "by": 10,
        "edge": "berth",
        "key": "reliability",
        "mlx-lm": 66,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "berth": 69,
        "by": 32,
        "edge": "berth",
        "key": "schema",
        "mlx-lm": 37,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "berth": 75,
        "by": 21,
        "edge": "berth",
        "key": "ergonomics",
        "mlx-lm": 54,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "berth": 51,
        "by": 19,
        "edge": "berth",
        "key": "security",
        "mlx-lm": 32,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "berth": 60,
        "by": 0,
        "edge": "",
        "key": "payments",
        "mlx-lm": 60,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "berth": 76,
        "by": 15,
        "edge": "berth",
        "key": "maintenance",
        "mlx-lm": 61,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "berth": 68,
        "by": 1,
        "edge": "mlx-lm",
        "key": "transparency",
        "mlx-lm": 69,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Berth scores 67.6 (B) on agent readiness against MLX LM's 52.5 (D), and leads in 5 of 7 scored categories. Both do local inference.",
    "tutorials": [],
    "verdicts": {
      "berth": "Berth coordinates one NVIDIA card between engines, ComfyUI and games, grants a lease only after the driver shows memory free, and gives agents a skill, JSON output and a keyed loopback gateway. It is 17 days old, alpha and maintained by one developer, with Windows and AMD experimental and no machine-readable API spec.",
      "mlx-lm": "MIT, with no telemetry found in the source, and the tests passed on the last eight pushes to main. `mlx_lm.server` has no API key option, answers any origin by default and loads whichever model a request names, and its own docs say it is not recommended for production."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/berth-vs-mlx-lm",
    "json": "https://www.anchorterminal.com/compare/berth-vs-mlx-lm.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/berth-vs-mlx-lm.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/berth-vs-mlx-lm.min.md"
  },
  "markdown": "Berth scores 67.6 (B) on agent readiness against MLX LM's 52.5 (D), and leads in 5 of 7 scored categories. Both do local inference.\n\n- Berth: grade B, 67.6/100, rank #283 of 1218. Markdown https://www.anchorterminal.com/tools/berth.md · JSON https://www.anchorterminal.com/api/v1/tools/berth.json\n- MLX LM: grade D, 52.5/100, rank #866 of 1218. Markdown https://www.anchorterminal.com/tools/mlx-lm.md · JSON https://www.anchorterminal.com/api/v1/tools/mlx-lm.json\n- Best local AI models and assistants: https://www.anchorterminal.com/best/local-ai/index.md\n- All 229 local ai comparisons: https://www.anchorterminal.com/compare/local-ai/index.md\n\n## Which one, for what\n\n### Berth (B)\n\nGood for: Someone running several GPU programs (llama.cpp, llama-swap, Ollama, vLLM, ComfyUI, games) on one NVIDIA card who wants them to take turns, and agents that need to ask for the card.\n\nAhead on:\n- Reliability, 76 against 66\n- Schema \u0026 documentation, 69 against 37\n- Agent ergonomics, 75 against 54\n- Security \u0026 auth, 51 against 32\n- Maintenance \u0026 community, 76 against 61\n\nWatch for: First released on 11 October 2026 and called alpha. Windows, AMD and multiple GPUs are experimental, and the gateway is a preview\n\n### MLX LM (D)\n\nGood for: An owner with an Apple silicon Mac who wants MLX-format models, local fine-tuning and quantisation from Python or the command line, with a simple local chat completions server.\n\nAlso in its favour:\n- No key needed to call it\n\nWatch for: `mlx_lm.server` has no API key or other credential option, and `--allowed-origins` defaults to `*`\n\n\n## Score by category\n\n| Category | Weight | Berth | MLX LM | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 76 | 66 | Berth +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 69 | 37 | Berth +32 |\n| Agent ergonomics | 13% (16.2 this run) | 75 | 54 | Berth +21 |\n| Security \u0026 auth | 14% (17.5 this run) | 51 | 32 | Berth +19 |\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) | 76 | 61 | Berth +15 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 68 | 69 | MLX LM +1 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **67.6 · B** | **52.5 · D** | |\n\n## Facts side by side\n\n| Fact | Berth | MLX LM |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Trevin Tindall (T-Crypt on GitHub) | Apple Inc. |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | API key | None |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Apache-2.0. The Berth name, the Pilot mascot and the artwork in assets/ are excluded from the licence, per the NOTICE file | MIT |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-10-23 | 2026-10-01 |\n| Terms last updated | no document linked | no document linked |\n| Privacy policy last updated | no document linked | 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 | 245 stars | 7.3k stars, 140k PyPI/wk |\n\n## Verdicts\n\n**Berth.** Berth coordinates one NVIDIA card between engines, ComfyUI and games, grants a lease only after the driver shows memory free, and gives agents a skill, JSON output and a keyed loopback gateway. It is 17 days old, alpha and maintained by one developer, with Windows and AMD experimental and no machine-readable API spec.\n\n**MLX LM.** MIT, with no telemetry found in the source, and the tests passed on the last eight pushes to main. `mlx_lm.server` has no API key option, answers any origin by default and loads whichever model a request names, and its own docs say it is not recommended for production.\n\n## Before you call either\n\n### Berth\n\n1. Run `berth status --format json` before starting, stopping or switching any GPU engine. If berthd is unreachable, no engine is protected\n2. Never kill a process to free VRAM. Ask for the card with `berth run`, `berth hold` or a gateway request, and report stowaways to the user\n3. Send gateway requests to http://127.0.0.1:9799/v1 with `Authorization: Bearer $(berth key)`, and use `\"stream\": true` for cold starts of up to minutes\n4. On a 503, read the `code` and wait for `Retry-After`. A pinned holder (a game or `berth hold`) answers 409 to stop and is the user's call\n5. Ask the user before `berth reclaim LEASE --yes`, any berth.toml edit or `berth update`. Each changes the node\n\n### MLX LM\n\n1. Keep `mlx_lm.server` on 127.0.0.1 and pass `--allowed-origins` with the origins you trust. There is no API key, and the default answers every origin\n2. Treat any caller as able to load any model. The `model` and `adapters` request fields accept any Hugging Face repository or local path\n3. Send `max_tokens` or `max_completion_tokens` when you need more than 512 tokens, the server default\n4. Read errors as `{\"error\": \"\u003ctext\u003e\"}` with 400 for a bad field and 404 for a model that failed to load. They are not OpenAI error objects\n5. Poll `GET /health` before the first request. It answers 503 with `unavailable` when the generation thread has stopped\n\n## Questions\n\n### Which is better for AI agents, Berth or MLX LM?\n\nBerth scores 67.6 (B) on agent readiness against MLX LM's 52.5 (D), and leads in 5 of 7 scored categories.\n\n### Do Berth and MLX LM need an API key?\n\nBerth needs an API key. MLX LM needs no key.\n\n### Can an agent call Berth and MLX LM without installing anything?\n\nNo hosted endpoint is listed for Berth. No hosted endpoint is listed for MLX LM.\n\n### Are Berth and MLX LM open source?\n\nYes. Berth is open source (Apache-2.0. The Berth name, the Pilot mascot and the artwork in assets/ are excluded from the licence, per the NOTICE file). MLX LM is open source (MIT).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/berth-vs-mlx-lm.json, and with the fewest tokens: https://www.anchorterminal.com/compare/berth-vs-mlx-lm.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"berth\", \"b\": \"mlx-lm\"}`. From a terminal: `anchor compare berth mlx-lm`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/berth.json and https://www.anchorterminal.com/api/v1/tools/mlx-lm.json\n\n## Other comparisons with Berth or MLX LM\n\n- [AnythingLLM vs Berth](https://www.anchorterminal.com/compare/anythingllm-vs-berth.md)\n- [AnythingLLM vs MLX LM](https://www.anchorterminal.com/compare/anythingllm-vs-mlx-lm.md)\n- [Berth vs BitRun](https://www.anchorterminal.com/compare/berth-vs-bitrun.md)\n- [Berth vs Docker Model Runner](https://www.anchorterminal.com/compare/berth-vs-docker-model-runner.md)\n- [Berth vs Foundry Local](https://www.anchorterminal.com/compare/berth-vs-foundry-local.md)\n- [Berth vs Core](https://www.anchorterminal.com/compare/berth-vs-ghost-core.md)\n- [Berth vs GPT4All](https://www.anchorterminal.com/compare/berth-vs-gpt4all.md)\n- [Berth vs Jan](https://www.anchorterminal.com/compare/berth-vs-jan.md)\n- [Berth vs Khoj](https://www.anchorterminal.com/compare/berth-vs-khoj.md)\n- [Berth vs KoboldCpp](https://www.anchorterminal.com/compare/berth-vs-koboldcpp.md)\n- [Berth vs Lemonade](https://www.anchorterminal.com/compare/berth-vs-lemonade.md)\n- [Berth vs llama.cpp](https://www.anchorterminal.com/compare/berth-vs-llama-cpp.md)\n- [Berth vs LM Studio](https://www.anchorterminal.com/compare/berth-vs-lm-studio.md)\n- [Berth vs LocalAI](https://www.anchorterminal.com/compare/berth-vs-localai.md)\n- [Berth vs Ollama](https://www.anchorterminal.com/compare/berth-vs-ollama.md)\n- [Berth vs Open WebUI](https://www.anchorterminal.com/compare/berth-vs-open-webui.md)\n- [Berth vs screenpipe](https://www.anchorterminal.com/compare/berth-vs-screenpipe.md)\n- [Berth vs TextGen](https://www.anchorterminal.com/compare/berth-vs-text-generation-webui.md)\n- [Berth vs vLLM](https://www.anchorterminal.com/compare/berth-vs-vllm.md)\n- [BitRun vs MLX LM](https://www.anchorterminal.com/compare/bitrun-vs-mlx-lm.md)\n- [Docker Model Runner vs MLX LM](https://www.anchorterminal.com/compare/docker-model-runner-vs-mlx-lm.md)\n- [Foundry Local vs MLX LM](https://www.anchorterminal.com/compare/foundry-local-vs-mlx-lm.md)\n- [Core vs MLX LM](https://www.anchorterminal.com/compare/ghost-core-vs-mlx-lm.md)\n- [GPT4All vs MLX LM](https://www.anchorterminal.com/compare/gpt4all-vs-mlx-lm.md)\n- [Jan vs MLX LM](https://www.anchorterminal.com/compare/jan-vs-mlx-lm.md)\n- [Khoj vs MLX LM](https://www.anchorterminal.com/compare/khoj-vs-mlx-lm.md)\n- [KoboldCpp vs MLX LM](https://www.anchorterminal.com/compare/koboldcpp-vs-mlx-lm.md)\n- [Lemonade vs MLX LM](https://www.anchorterminal.com/compare/lemonade-vs-mlx-lm.md)\n- [llama.cpp vs MLX LM](https://www.anchorterminal.com/compare/llama-cpp-vs-mlx-lm.md)\n- [LM Studio vs MLX LM](https://www.anchorterminal.com/compare/lm-studio-vs-mlx-lm.md)\n- [LocalAI vs MLX LM](https://www.anchorterminal.com/compare/localai-vs-mlx-lm.md)\n- [MLX LM vs Ollama](https://www.anchorterminal.com/compare/mlx-lm-vs-ollama.md)\n- [MLX LM vs Open WebUI](https://www.anchorterminal.com/compare/mlx-lm-vs-open-webui.md)\n- [MLX LM vs screenpipe](https://www.anchorterminal.com/compare/mlx-lm-vs-screenpipe.md)\n- [MLX LM vs TextGen](https://www.anchorterminal.com/compare/mlx-lm-vs-text-generation-webui.md)\n- [MLX LM vs vLLM](https://www.anchorterminal.com/compare/mlx-lm-vs-vllm.md)\n- [MLX LM vs Underdog](https://www.anchorterminal.com/compare/mlx-lm-vs-underdog.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-28",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Berth vs MLX LM",
        "url": ""
      }
    ],
    "description": "Berth scores 67.6 (B) to MLX LM's 52.5 (D) for local inference. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Berth B 67.6",
      "MLX LM D 52.5",
      "scores"
    ],
    "h1": "Berth vs MLX LM",
    "image": "https://www.anchorterminal.com/assets/og/compare-berth-vs-mlx-lm.png",
    "path": "/compare/berth-vs-mlx-lm",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Berth vs MLX LM for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-28",
    "url": "https://www.anchorterminal.com/compare/berth-vs-mlx-lm"
  },
  "tokens": {
    "markdown": 2600,
    "slim": 530
  },
  "version": 1
}
