The evidence view is more useful than a visibility score
NiubiGEO asks model APIs about a domain or a neutral keyword, then keeps the answer, returned sources, model route, search setting, failures, and derived observations together. The workbench can compare descriptions, associated keywords, competitor mentions, and recommendations across models. Each domain has its own project and history, which reduces the chance of mixing one client's evidence into another report.
The README includes 20 real product cases, and 11 of them include keyword tests. Those examples are valuable because they preserve awkward results and parsing failures rather than presenting a perfect demo. The project also states the central limit clearly: an API answer is not the same surface as a consumer chat application. NiubiGEO can tell you what its configured route returned under recorded conditions. It cannot tell you what every user saw.
What happened when we ran it
Our sandbox installed 58 npm packages in 10 seconds and used 74 MB on disk. The build completed in 11 seconds. Npm audit found 0 known vulnerabilities, including 0 critical, high, moderate, or low findings. The repository at commit 8bc65e9 had 569 files, about 47,487 source lines, and a 47.1 MB checkout.
The test command failed with exit code 1 after 30 seconds. Node's test runner reported 255 passed and 1 failed of 256. The supplied final log lines were all marked ok, including checks for JSON-LD collection, unavailable site preparation, retry behavior, and the multilingual app shell. Because the tail does not contain the failed assertion, it does not support a diagnosis. The proper finding is simply that this commit did not pass its full suite in our container.
Version 0.2.1 supports mixed model sources with limits
The September 28, 2026 release adds 16 platform shortcuts and lets one test mix OpenRouter, direct provider APIs, and custom OpenAI-compatible endpoints. Endpoint, model, search setting, answer, citation, and failure identities remain separate even when model names match. Custom endpoints can load model IDs from /models or accept manual IDs. Structured GEO analysis requires JSON Schema support.
Credentials have two operating modes. Keys entered in the browser remain in memory for that session and disappear on refresh. They are excluded from browser storage and saved evidence, but the separate scheduler cannot use them. Scheduled work therefore needs an environment or file-based server credential. That split protects casual keys from persistence, while making unattended monitoring an operator task with real API costs.
Public deployment needs an authentication layer
The Docker guide binds port 8787 to 127.0.0.1 and explicitly warns against exposing the workbench directly. NiubiGEO has no built-in login, TLS, or multi-user authorization. A remote deployment needs a controlled network or an authenticated reverse proxy. The server and schedule worker must share the same data volume, and the guide recommends backing up the whole product-v2 tree before an upgrade.
Storage is a set of JSON records rather than a transactional database. Single-file writes use temporary files and rename, but the architecture document says this does not provide cross-file transactions, encryption, or tamper resistance. That is acceptable for a local analyst's workbench. It is a poor fit for a public client portal or a regulated multi-tenant service unless you add those controls outside the application.
Two open bugs can change how evidence is counted
Issue 18 says a report may label provider-native web search as used when NiubiGEO requested the capability but received no execution event or native citation. Issue 12 says the same canonical URL can be counted twice when it arrives as both a provider citation and an ordinary answer link. Open pull requests address citation deduplication, but the issue and fixes were still open when fetched.
These are measurement bugs, not cosmetic defects. Search execution and unique source counts shape the story a GEO report tells. Until fixes land in a release, inspect the raw answer and source list before repeating either claim to a client. The project's own evidence-first interface makes that review possible, which is a meaningful advantage over a dashboard that exposes only aggregate percentages.
Active maintenance does not make short runs causal evidence
GitHub showed 4,855 stars, 6 open issues, 6 open pull requests, and a last push on September 28, 2026. Release v0.2.1 was published the same day. The checkout contains 4 CI workflow files, a Dockerfile, a Compose file, and tests. Those are healthy maintenance signals even though our own suite ended with one failure.
Repeated answers still need modest interpretation. Models, routes, search indexes, and returned sources can change. A mention after editing a page does not prove the edit caused it, and a few observations do not establish a trend. NiubiGEO is best used as an evidence ledger: freeze the test conditions, retain failures, read the raw responses, and investigate changes before turning them into marketing claims.

