{
  "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"
  },
  "tool": {
    "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"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 76,
          "points": 15.2,
          "reason": "Read with the local-software lines, since Berth runs on the owner's machine with no hosted service. Static release binaries for Linux amd64 and arm64 and Windows amd64 with SHA256SUMS, built by the release workflow, and `go install` through the Go module proxy, with a support matrix in the README. No distribution package, no Windows installer, and github.com refused our reader, so the release assets themselves were not seen (18 of 20). CI builds, checks formatting, vets, lints and runs `go test ./...` on Linux and runs build, vet and tests on windows-latest, on pushes to main and next and on pull requests, over 188 test files. shields.io reported the main branch passing on 28 October 2026 (25). 11 open issues against 24 closed and 194 closed pull requests. The changelog fixes testers' reports within days (Windows reports #81, #82, #103 and #104 in v0.3.2 and v0.3.3, tagged 21 October 2026, and #196 and #197 in Unreleased), and no open issue carries a `bug` label, but reply times were unreadable (20 of 25). Semver tags, a Keep a Changelog file with dated Added, Changed, Fixed and Security sections, and a pre-release channel. Behaviour changes are explained under Changed and Security with what to do, with no Breaking heading (13 of 15). v0.3.6, called alpha (0).",
          "checked": "2026-10-28"
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 69,
          "points": 11.21,
          "reason": "Read with the API lines, for the gateway and the CLI's JSON output an agent uses. No OpenAPI file or JSON Schema for the gateway's own routes or the CLI output. The OpenAI-compatible routes follow OpenAI's shape and /v1/berth routes are shown with request and response JSON (6 of 25). No llms.txt (404 on the docs site). The docs are Markdown in the repository and an MkDocs site, and `berth skill install` writes SKILL.md files written for agents (8 of 10). The skill's description says when to load it, and its rules say what not to do (kill a GPU process, start an engine outside Berth, work round a pinned lease), with docs pages per feature (17 of 20). Flags and fields take documented values (priority batch, interactive, foreground, hold; format human, json, yaml; tier hot, warm, cool, cold), and `berth config check` validates the config, but nothing is typed in a schema (9 of 15). curl examples for each gateway route, eight documented 503 reason codes with Retry-After, 404, 409 and 400 cases, and the CLI's exit codes 0, 1, 2 and 75 (14 of 15). A dated changelog, semver and routes under /v1 (15).",
          "checked": "2026-10-28"
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 75,
          "points": 12.19,
          "reason": "Read with the API lines. `--format json|yaml` on every reporting command, `-q` for an exit code alone, and `/v1/berth/board` for the whole node in one read. The skill is about 10.5 KB, loaded only when an agent picks it up (18 of 25). Queries take an engine or model (`/v1/berth/cost?engine=`, `/v1/berth/wait?model=`), the harbor picks 1H to 30D windows, and lists are small, but there is no paging or field selection (12 of 20). Wait reasons name the holder and the waiter's place in line, refusals give the memory figures, and 503s carry a machine code and Retry-After (19 of 20). Concurrent requests share one engine start, a crashing engine is not restarted on every retry (15 s doubling to 5 min), switch answers 202 and stop on a pinned holder 409, and the skill says to retry a refusal later. No idempotency keys (15 of 20). Loopback defaults, a key created on first use and read with `berth key`, and OpenAI clients work unchanged. No SDK (11 of 15).",
          "checked": "2026-10-28"
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 51,
          "points": 8.93,
          "reason": "Read with the tool checklist, for the gateway and the daemon. The gateway takes one random bearer key, kept in a mode-600 file that is refused when others can read it and compared in constant time, on a loopback-only bind that refuses non-loopback Host names and browser Origins. The daemon's Unix socket is mode 600 in a 700 directory. The key has no scopes and no documented rotation, the wake page and the optional ComfyUI port take none, and the Windows control pipe is not locked down, per the support matrix (12 of 30). Berth never kills a process it did not start, stowaways are report-only, a pinned holder can't be stopped from the network (409), `berth reclaim` needs `--yes`, `berth update` asks before replacing the binary, and the harbor is read-only, with actions only for a paired device. No read-only key (15 of 20). The gateway passes model output through. The skill tells agents to ask the user before reclaiming, editing config or filing an issue, but there is no prompt-injection guidance (8 of 15). An event log with JSON output, lease records, a 24-hour request log, 30 days of history and Prometheus metrics, with no caller identity beyond the one key (11 of 15). No SECURITY.md, security.txt, bounty or advisories. The changelog disclosed the v0.3.4 fix to the gateway forwarding the node's key to engines, releases carry SHA256SUMS that `berth update` checks, and `berth pull` checks Hugging Face's sha256. The linters don't include gosec (5 of 20).",
          "checked": "2026-10-28"
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 60,
          "points": 7.5,
          "reason": "Read with the self-hosted rule. No x402, MPP or L402, and nothing is sold (0). Free under Apache-2.0 with no account, key or card, so 20, 20 and 20 on the last three lines.",
          "checked": "2026-10-28"
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 76,
          "points": 6.65,
          "reason": "v0.3.6 on 23 October 2026, and v0.4.0-rc.5 on 27 October (30). Nine releases from v0.1.0 on 11 October to v0.3.6, plus five release candidates (20). The changelog credits outside reporters and fixes their issues within days (#148 asked by another user, and Windows testers' #81, #82, #103 and #104 fixed in releases tagged 21 October), and 194 pull requests are closed. Reply times on the 11 open issues were unreadable, and the project is 17 days old (18 of 25). No MCP server or official SDK (0). Go 1.27.1 with current dependencies (golang.org/x/sys 0.48.0, modernc.org/sqlite 1.60.1) and CI on both platforms, but no Dependabot or Renovate (8 of 10).",
          "checked": "2026-10-28"
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 68,
          "points": 5.95,
          "note": "editorial 74, provenance 61",
          "reason": "The editorial half. Apache-2.0 with all source public and a NOTICE file. The name and artwork are excluded from the licence, which doesn't affect use (30). No privacy policy, which a tool with no service doesn't need, but the README lists what Berth never does (no cloud account, no telemetry upload) and the docs state what it keeps and for how long (a 24-hour request log, 30 days of history, KV snapshots capped at 16 GiB with advice to keep them private) and what leaves the machine. The docs site drops Google Fonts to avoid sending visitors' addresses to Google (20 of 30). No written deprecation policy. The renamed `chat` shelf still reads as `text`, and pre-releases are kept apart from the update channel (6 of 20). The only automatic outbound call, a GitHub update check at most once a day with a User-Agent of the version, is described in the README with its opt-out, and model downloads and webhooks happen only when asked (18 of 20).",
          "checked": "2026-10-28"
        }
      ],
      "assessment": {
        "date": "2026-10-28",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "Read with the API lines. `--format json|yaml` on every reporting command, `-q` for an exit code alone, and `/v1/berth/board` for the whole node in one read. The skill is about 10.5 KB, loaded only when an agent picks it up (18 of 25). Queries take an engine or model (`/v1/berth/cost?engine=`, `/v1/berth/wait?model=`), the harbor picks 1H to 30D windows, and lists are small, but there is no paging or field selection (12 of 20). Wait reasons name the holder and the waiter's place in line, refusals give the memory figures, and 503s carry a machine code and Retry-After (19 of 20). Concurrent requests share one engine start, a crashing engine is not restarted on every retry (15 s doubling to 5 min), switch answers 202 and stop on a pinned holder 409, and the skill says to retry a refusal later. No idempotency keys (15 of 20). Loopback defaults, a key created on first use and read with `berth key`, and OpenAI clients work unchanged. No SDK (11 of 15).",
          "maintenance": "v0.3.6 on 23 October 2026, and v0.4.0-rc.5 on 27 October (30). Nine releases from v0.1.0 on 11 October to v0.3.6, plus five release candidates (20). The changelog credits outside reporters and fixes their issues within days (#148 asked by another user, and Windows testers' #81, #82, #103 and #104 fixed in releases tagged 21 October), and 194 pull requests are closed. Reply times on the 11 open issues were unreadable, and the project is 17 days old (18 of 25). No MCP server or official SDK (0). Go 1.27.1 with current dependencies (golang.org/x/sys 0.48.0, modernc.org/sqlite 1.60.1) and CI on both platforms, but no Dependabot or Renovate (8 of 10).",
          "payments": "Read with the self-hosted rule. No x402, MPP or L402, and nothing is sold (0). Free under Apache-2.0 with no account, key or card, so 20, 20 and 20 on the last three lines.",
          "reliability": "Read with the local-software lines, since Berth runs on the owner's machine with no hosted service. Static release binaries for Linux amd64 and arm64 and Windows amd64 with SHA256SUMS, built by the release workflow, and `go install` through the Go module proxy, with a support matrix in the README. No distribution package, no Windows installer, and github.com refused our reader, so the release assets themselves were not seen (18 of 20). CI builds, checks formatting, vets, lints and runs `go test ./...` on Linux and runs build, vet and tests on windows-latest, on pushes to main and next and on pull requests, over 188 test files. shields.io reported the main branch passing on 28 October 2026 (25). 11 open issues against 24 closed and 194 closed pull requests. The changelog fixes testers' reports within days (Windows reports #81, #82, #103 and #104 in v0.3.2 and v0.3.3, tagged 21 October 2026, and #196 and #197 in Unreleased), and no open issue carries a `bug` label, but reply times were unreadable (20 of 25). Semver tags, a Keep a Changelog file with dated Added, Changed, Fixed and Security sections, and a pre-release channel. Behaviour changes are explained under Changed and Security with what to do, with no Breaking heading (13 of 15). v0.3.6, called alpha (0).",
          "schema": "Read with the API lines, for the gateway and the CLI's JSON output an agent uses. No OpenAPI file or JSON Schema for the gateway's own routes or the CLI output. The OpenAI-compatible routes follow OpenAI's shape and /v1/berth routes are shown with request and response JSON (6 of 25). No llms.txt (404 on the docs site). The docs are Markdown in the repository and an MkDocs site, and `berth skill install` writes SKILL.md files written for agents (8 of 10). The skill's description says when to load it, and its rules say what not to do (kill a GPU process, start an engine outside Berth, work round a pinned lease), with docs pages per feature (17 of 20). Flags and fields take documented values (priority batch, interactive, foreground, hold; format human, json, yaml; tier hot, warm, cool, cold), and `berth config check` validates the config, but nothing is typed in a schema (9 of 15). curl examples for each gateway route, eight documented 503 reason codes with Retry-After, 404, 409 and 400 cases, and the CLI's exit codes 0, 1, 2 and 75 (14 of 15). A dated changelog, semver and routes under /v1 (15).",
          "security": "Read with the tool checklist, for the gateway and the daemon. The gateway takes one random bearer key, kept in a mode-600 file that is refused when others can read it and compared in constant time, on a loopback-only bind that refuses non-loopback Host names and browser Origins. The daemon's Unix socket is mode 600 in a 700 directory. The key has no scopes and no documented rotation, the wake page and the optional ComfyUI port take none, and the Windows control pipe is not locked down, per the support matrix (12 of 30). Berth never kills a process it did not start, stowaways are report-only, a pinned holder can't be stopped from the network (409), `berth reclaim` needs `--yes`, `berth update` asks before replacing the binary, and the harbor is read-only, with actions only for a paired device. No read-only key (15 of 20). The gateway passes model output through. The skill tells agents to ask the user before reclaiming, editing config or filing an issue, but there is no prompt-injection guidance (8 of 15). An event log with JSON output, lease records, a 24-hour request log, 30 days of history and Prometheus metrics, with no caller identity beyond the one key (11 of 15). No SECURITY.md, security.txt, bounty or advisories. The changelog disclosed the v0.3.4 fix to the gateway forwarding the node's key to engines, releases carry SHA256SUMS that `berth update` checks, and `berth pull` checks Hugging Face's sha256. The linters don't include gosec (5 of 20).",
          "transparency": "The editorial half. Apache-2.0 with all source public and a NOTICE file. The name and artwork are excluded from the licence, which doesn't affect use (30). No privacy policy, which a tool with no service doesn't need, but the README lists what Berth never does (no cloud account, no telemetry upload) and the docs state what it keeps and for how long (a 24-hour request log, 30 days of history, KV snapshots capped at 16 GiB with advice to keep them private) and what leaves the machine. The docs site drops Google Fonts to avoid sending visitors' addresses to Google (20 of 30). No written deprecation policy. The renamed `chat` shelf still reads as `text`, and pre-releases are kept apart from the update channel (6 of 20). The only automatic outbound call, a GitHub update check at most once a day with a User-Agent of the version, is described in the README with its opt-out, and model downloads and webhooks happen only when asked (18 of 20)."
        },
        "sources": [
          {
            "what": "README (status, support matrix, install, what Berth never does, licence)",
            "url": "https://github.com/T-Crypt/berth/blob/main/README.md",
            "seen": "2026-10-28"
          },
          {
            "what": "AGENTS.md (packages, invariants, CI commands)",
            "url": "https://github.com/T-Crypt/berth/blob/main/AGENTS.md",
            "seen": "2026-10-28"
          },
          {
            "what": "CHANGELOG (v0.1.0 on 11 October to v0.3.6 on 23 October 2026, Unreleased)",
            "url": "https://github.com/T-Crypt/berth/blob/main/CHANGELOG.md",
            "seen": "2026-10-28"
          },
          {
            "what": "NOTICE and LICENSE (Apache-2.0, Trevin Tindall)",
            "url": "https://github.com/T-Crypt/berth/blob/main/NOTICE",
            "seen": "2026-10-28"
          },
          {
            "what": "go.mod (Go 1.27.1, dependencies)",
            "url": "https://github.com/T-Crypt/berth/blob/main/go.mod",
            "seen": "2026-10-28"
          },
          {
            "what": "Gateway docs (routes, key, error codes, switch costs)",
            "url": "https://github.com/T-Crypt/berth/blob/main/docs/gateway.md",
            "seen": "2026-10-28"
          },
          {
            "what": "Interfaces docs (CLI output contract, exit codes, harbor, Prometheus)",
            "url": "https://github.com/T-Crypt/berth/blob/main/docs/interfaces.md",
            "seen": "2026-10-28"
          },
          {
            "what": "Install, FAQ, roadmap, engines, harbor and benchmarks docs",
            "url": "https://github.com/T-Crypt/berth/tree/main/docs",
            "seen": "2026-10-28"
          },
          {
            "what": "Agent skill SKILL.md and ComfyUI skill",
            "url": "https://github.com/T-Crypt/berth/blob/main/internal/skill/SKILL.md",
            "seen": "2026-10-28"
          },
          {
            "what": "Skill install targets",
            "url": "https://github.com/T-Crypt/berth/blob/v0.3.6/internal/skill/skill.go",
            "seen": "2026-10-28"
          },
          {
            "what": "Gateway guard (key, Host, Origin)",
            "url": "https://github.com/T-Crypt/berth/blob/v0.3.6/internal/gateway/gateway.go",
            "seen": "2026-10-28"
          },
          {
            "what": "API key file and constant-time check",
            "url": "https://github.com/T-Crypt/berth/blob/v0.3.6/internal/apikey/apikey.go",
            "seen": "2026-10-28"
          },
          {
            "what": "Daemon socket permissions",
            "url": "https://github.com/T-Crypt/berth/blob/v0.3.6/internal/server/server.go",
            "seen": "2026-10-28"
          },
          {
            "what": "Update check and checksum verification",
            "url": "https://github.com/T-Crypt/berth/blob/v0.3.6/internal/update/update.go",
            "seen": "2026-10-28"
          },
          {
            "what": "CI and release workflows, lint config",
            "url": "https://github.com/T-Crypt/berth/blob/main/.github/workflows/ci.yml",
            "seen": "2026-10-28"
          },
          {
            "what": "Go module proxy version list and tag times",
            "url": "https://proxy.golang.org/github.com/!t-!crypt/berth/@v/list",
            "seen": "2026-10-28"
          },
          {
            "what": "Repository counts and CI status (shields.io JSON badges for stars, forks, issues, pull requests, contributors, ci.yml on main)",
            "url": "https://img.shields.io/github/stars/T-Crypt/berth.json",
            "seen": "2026-10-28"
          },
          {
            "what": "File listing at v0.3.6 (jsDelivr)",
            "url": "https://data.jsdelivr.com/v1/packages/gh/T-Crypt/berth@v0.3.6?structure=flat",
            "seen": "2026-10-28"
          },
          {
            "what": "Docs site",
            "url": "https://t-crypt.github.io/berth/",
            "seen": "2026-10-28"
          }
        ],
        "openQuestions": [
          "The lead matched. T-Crypt/berth is the original. jenerestain/berth, sefator/berth and Bacongineer/berth-upstream keep the module path github.com/T-Crypt/berth, the T-Crypt copyright and links back, so they read as forks of earlier snapshots. They are not listed.",
          "Not one of our own products. LocalGhost is a personal AI server and letme picks a tool for a job. Berth decides which local program holds a GPU, which is neither job.",
          "unchecked: the GitHub release pages and their assets, issue and pull request threads and reply times, and the Actions history, since github.com and api.github.com refused our reader. Counts and CI status come from shields.io's JSON badges, tag dates from the Go module proxy.",
          "Graded on v0.3.6, the latest release. v0.4.0-rc.1 to rc.5 (26 and 27 October 2026) are pre-releases on the `next` branch and were not graded.",
          "We did not install or run Berth. Behaviour comes from the source at v0.3.6 and main, the docs and the changelog. Swap times are the vendor's figures.",
          "AGENTS.md and the skill contain instructions addressed to agents (for example to open issues with `gh`). They were read as documents and not acted on.",
          "Category local-ai is the closest fit. Berth runs no model itself, and its OpenAI-compatible gateway proxies to local engines, which is why `inference.local` leads its capabilities, with `compute.gpu` for the GPU scheduling."
        ]
      },
      "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
      },
      "scoreHistory": [
        {
          "date": "2026-10-28",
          "grade": "B",
          "kind": "listed",
          "method": "0.7",
          "score": 67.6
        }
      ]
    },
    "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"
    },
    "notable": [
      "v0.1.0 was tagged on 11 October 2026 (Go module proxy time 2026-10-11T22:31:33Z, CHANGELOG dated the same day). v0.3.6 followed on 23 October, nine releases in 13 days, and v0.4.0-rc.1 to rc.5 were tagged on 26 and 27 October as pre-releases (https://github.com/T-Crypt/berth/blob/main/CHANGELOG.md; https://proxy.golang.org/github.com/!t-!crypt/berth/@v/list)",
      "The README calls the project alpha, run daily on the author's RTX 4090 workstation, with Linux and NVIDIA supported and Windows 10/11 with NVIDIA and Linux AMD RDNA3, RDNA4 and Phoenix APUs experimental (https://github.com/T-Crypt/berth/blob/main/README.md)",
      "A lease is granted only after the driver shows the previous holder's memory free, and a process holding VRAM without a lease is reported as a stowaway with its PID and memory and left running. These are listed as invariants in AGENTS.md (https://github.com/T-Crypt/berth/blob/main/AGENTS.md)",
      "`berth skill install` writes a Berth skill and a ComfyUI skill into the skill folders of Claude Code (~/.claude/skills), OpenCode, Hermes Agent and the shared ~/.agents folder. The skill tells agents to ask Berth for the card and never kill a GPU process (https://github.com/T-Crypt/berth/blob/v0.3.6/internal/skill/skill.go; https://github.com/T-Crypt/berth/blob/main/internal/skill/SKILL.md)",
      "v0.3.4 (22 October 2026) stopped the gateway forwarding the node's API key to engines, recorded under a Security heading in the changelog (https://github.com/T-Crypt/berth/blob/main/CHANGELOG.md)",
      "The harbor checks GitHub's releases/latest API at most once every 24 hours by default, sending only a User-Agent of berth/\u003cversion\u003e, and `[update] check = false` turns it off (https://github.com/T-Crypt/berth/blob/v0.3.6/internal/update/update.go)",
      "GitHub shows copies of the repository under jenerestain/berth, sefator/berth and Bacongineer/berth-upstream. Each keeps the module path github.com/T-Crypt/berth and links back to T-Crypt/berth, so they read as forks of earlier snapshots, not separate products"
    ],
    "area": "models",
    "details": [
      {
        "label": "Surface listed",
        "value": "Berth v0.3.6, its CLI with JSON output, the agent skill and the preview gateway, read from the repository at main and tag v0.3.6, the docs and the changelog on 28 October 2026. Nothing was installed or run"
      },
      {
        "label": "Interfaces",
        "value": "The `berth` CLI (daemon, run, hold, stop, resume, reclaim, status, events, models, pull, gateway, harbor, skill and more), the daemon's Unix socket (NDJSON), the harbor web UI on 127.0.0.1:9798, Prometheus /metrics on loopback and the gateway on 127.0.0.1:9799. No MCP server"
      },
      {
        "label": "Gateway routes",
        "value": "OpenAI-compatible /v1/chat/completions, /v1/completions, /v1/embeddings and a merged /v1/models, ComfyUI's /prompt, /queue, /history, /view and /ws, and Berth's own /v1/berth/board, switch, stop, wait, cost and plan. Preview"
      },
      {
        "label": "Leasing",
        "value": "Priorities hold, foreground, interactive and batch. The holder finishes its reply or image job, is unloaded (its own unload, then SIGTERM, then SIGKILL for processes Berth started) and the next lease waits for the driver to show the memory free. Parking in RAM for ComfyUI, vLLM, SGLang and engines on the park protocol"
      },
      {
        "label": "Engines read",
        "value": "llama.cpp, llama-swap, Ollama, vLLM, SGLang, ComfyUI, Kokoro, LM Studio, KoboldCpp, TabbyAPI, LocalAI and any OpenAI-compatible or custom server named in berth.toml"
      },
      {
        "label": "Platforms",
        "value": "Linux with NVIDIA (supported). Windows 10/11 with NVIDIA, Linux AMD RDNA3, RDNA4 and Phoenix APUs, and one berthd per card on multi-GPU machines (experimental). Release binaries for Linux amd64 and arm64 and Windows amd64"
      },
      {
        "label": "Network",
        "value": "An update check to api.github.com at most once every 24 hours (off with `[update] check = false`), model downloads from Hugging Face and CivitAI on `berth pull`, probes of local engine ports, and opt-in webhooks. No telemetry upload"
      },
      {
        "label": "Data kept",
        "value": "Leases and events, a 24-hour request log, 30 days of telemetry history in SQLite under ~/.local/state/berth, and optional llama.cpp KV snapshots, capped at 16 GiB by default, which hold conversation prompts"
      },
      {
        "label": "Vendor benchmarks",
        "value": "On the author's RTX 4090 with 62.5 GiB of RAM (23 October 2026), a 21 GB chat model from the page cache in 5.6 s and ComfyUI to a 27B chat model in 13.6 to 16.3 s, request to reply. Vendor figures"
      },
      {
        "label": "Releases",
        "value": "v0.1.0 (11 October 2026) to v0.3.6 (23 October), nine releases, then v0.4.0-rc.1 to rc.5 on 26 and 27 October as pre-releases on the `next` branch"
      },
      {
        "label": "Repository activity",
        "value": "245 stars, 22 forks, 11 open and 24 closed issues, 2 open and 194 closed pull requests and 3 contributors, per shields.io's reading of GitHub on 28 October 2026"
      }
    ],
    "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,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Trevin Tindall (T-Crypt on GitHub)",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": ", no registry record we could read",
          "points": 0,
          "max": 15,
          "state": "no"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "no hosted endpoint",
          "points": 0,
          "max": 0,
          "state": "na"
        },
        {
          "check": "Terms of service",
          "value": "nothing hosted, so the Apache-2.0. The Berth name, the Pilot mascot and the artwork in assets/ are excluded from the licence, per the NOTICE file licence stands in",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Privacy policy",
          "value": "nothing hosted, not scored",
          "points": 0,
          "max": 0,
          "state": "na"
        },
        {
          "check": "Status page",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "People named",
          "value": "1 named with their role, 1 with a public profile",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Support route",
          "value": "help pages, a community",
          "points": 5,
          "max": 5,
          "state": "ok"
        }
      ]
    },
    "humans": {
      "slug": "berth",
      "checked": "2026-10-28",
      "company": "Independent open-source project by Trevin Tindall (T-Crypt)",
      "people": [
        {
          "name": "Trevin Tindall",
          "role": "Creator and maintainer",
          "founder": true,
          "linkedin": "https://www.linkedin.com/in/trevin-tindall-483883213",
          "github": "https://github.com/T-Crypt",
          "bio": "Trevin Tindall created Berth and maintains it under the GitHub account T-Crypt. His GitHub profile describes him as a senior systems engineer in managed-service delivery with ten years in IT. His other public projects include Speculum, which watches a local LLM runtime, and GATE, a localhost control plane for AI agents.",
          "bioSources": [
            "https://github.com/T-Crypt/berth/blob/main/NOTICE",
            "https://github.com/T-Crypt/T-Crypt/blob/main/README.md"
          ],
          "page": "/people/trevin-tindall/"
        }
      ],
      "peopleNote": "The NOTICE file, the README and every source file's header name Trevin Tindall (T-Crypt) as Berth's creator and maintainer. Shields.io counts 3 contributors on GitHub, whose names we couldn't read because github.com refused our reader. The LinkedIn link is the one his own GitHub profile README links to, and no X account is linked there. No photo, since the project has no website or team page.",
      "companySocial": {},
      "support": {
        "urls": [
          "https://github.com/T-Crypt/berth/issues",
          "https://t-crypt.github.io/berth/"
        ],
        "community": [
          {
            "label": "Drain report issue form",
            "url": "https://github.com/T-Crypt/berth/issues/new?template=drain-report.yml",
            "kind": "github"
          }
        ]
      },
      "sources": [
        "https://github.com/T-Crypt/berth/blob/main/README.md",
        "https://github.com/T-Crypt/berth/blob/main/NOTICE",
        "https://github.com/T-Crypt/berth/blob/main/AGENTS.md",
        "https://github.com/T-Crypt/berth/blob/main/docs/benchmarks.md",
        "https://github.com/T-Crypt/T-Crypt/blob/main/README.md",
        "https://img.shields.io/github/contributors/T-Crypt/berth.json"
      ],
      "ownership": {
        "status": "project",
        "checked": "2026-10-28",
        "sources": [
          "https://github.com/T-Crypt/berth/blob/main/NOTICE"
        ]
      }
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/berth.json"
  }
}
