MARKDOWN SURVIVES.
Both keep human-readable Markdown in the durable story and derive search machinery around it.
06A // COMPETITION FIELD REPORT
GBrain is what happens when a second brain asks for a platform team. Vagus is what happens when a search tool refuses to become your employer.
BEFORE THE TRASH TALK
v0.13.0v0.46.24.0This is not a retrieval benchmark. Compared from pinned repository snapshots on 2026-08-20. Source was inspected; GBrain was installed and initialized in a clean Linux/arm64 container. Times and sizes are one measured run. Scale and quality figures remain project-reported.
COMMON ANCESTRY
Both keep human-readable Markdown in the durable story and derive search machinery around it.
Both combine lexical and semantic retrieval instead of pretending embeddings replaced exact terms.
Both use reciprocal-rank fusion to let independent retrieval paths vote.
Vagus is local by contract. GBrain also has an embedded PGLite, no-server path.
Both are built to be called by coding agents, not admired as another notes dashboard.
Neither requires surrendering every memory to an opaque hosted-only database.
EXHIBIT 00 // WE INSTALLED IT
Documented GitHub install on Bun 1.4.0, excluding the 4.45-second base-image pull.
Bun's own install report. The resulting dependency tree contained 220 package manifests.
Physical writable-container growth after install. Bun hardlinks its cache and global tree.
An empty PGLite brain after keyless initialization—before the first remembered page.
Files in the global install tree: source, tests, docs, skills, WASM, SDKs, codecs, and dependencies.
Applied by gbrain init --pglite --no-embedding in 9.79 seconds.
| Bill | Vagus | GBrain | What survives year five |
|---|---|---|---|
| Distribution | 15.34 MB compressed macOS release; 46.34 MB native binary; six Homebrew cellar files; zero formula dependencies. | Documented Bun install produced a 336.6 MB logical node_modules tree. The package itself was 119.4 MB. | One checksum-pinned artifact versus a runtime, package graph, and source tree. Both still need maintainers. |
| First state | vagus init --icloud took 0.29 seconds in a synthetic clean home: five directories, one symlink, zero regular-file bytes. | Keyless PGLite init took 9.79 seconds and created a 43.7 MB empty database after 127 migrations. | A folder convention ages differently from a database schema history. |
| Model assets | First semantic index downloads 1.256 GB measured. Reranker + smart rewrite bring a fully populated local cache to 2.704 GB. | Measured keyless init downloaded zero model weights. Semantic and synthesis paths can use hosted or configured local providers. | Vagus owns a large local cache. GBrain owns provider contracts—or your local-provider stack. |
| Upgrade surface | brew update && brew upgrade vagus; rebuildable index formats and model identities still need migration care. | Bun or binary updates, database migrations, two engine behaviors, schema packs, 23 provider recipes, and copied skill assets. | The package manager is the easy part. State and integrations are the annuity. |
ALTERNATIVE DISTRIBUTION EXISTS: GBrain can compile. Its pinned release shipped a 143.8 MB macOS arm64 executable and a 181.9 MB Linux x64 executable, bypassing the measured source-install tree. Compilation changes the packaging bill; it does not erase migrations, providers, or operational scope.
THEN THE ARCHITECTURE SPOKE
Search your notes. Return evidence. Exit.
Ingest the world. Graph it. Synthesize it. Schedule it. Serve it. Authorize it. Repeat overnight.
EXHIBIT A
| Question | Vagus | GBrain | What it costs |
|---|---|---|---|
| Job description | Personal PARA retrieval and assisted filing. | Personal/company memory spanning ingestion, graph, synthesis, jobs, identity, and access. | One is a tool. One is a platform wearing a CLI. |
| Implementation | Rust; a self-contained binary with no versioned runtime. | TypeScript/Bun source with a documented compile-to-executable path. | “But JavaScript” is the lazy joke. Surface area is the serious one. |
| Source of truth | Markdown vault first; search projections are rebuildable. Usage provenance is the named exception. | Markdown/Git brain repo can stay canonical; PGLite/Postgres carries retrieval and operational state. | Both let you own files. Only one grows a database contract into a product category. |
| Process model | Index, search, return, disappear. No daemon in any Vagus tier. | Local PGLite and stdio can run without a DB server; the marquee dream-cycle deployment is explicitly 24/7. | “Always a daemon” is false. “The full promise wants infrastructure” is not. |
| Retrieval | BM25 + vectors → fixed unweighted RRF; exact oracle, optional local reranker, reproducible qrels. | Hybrid RRF plus graph recall, aliases, intent/source boosts, reranking, dedup, and token policy. | Inspectable restraint versus a much richer ranking machine. |
| Models | Local after download. Base embedder is about 1.23 GB; optional models add more disk and RAM. | Keyword search can be keyless; semantic and synthesis paths can use hosted or local providers. | Vagus sends a hardware invoice. GBrain may send a provider and operations invoice. |
| Organization | Fixed PARA, with filing proposed by an agent and approved by a human. | Schema packs, typed edges, multiple sources and brains, agent-shaped evolution. | A strong opinion versus a programmable ontology. |
| Collaboration | A deliberately personal, per-machine index. | Team brains, OAuth scopes, federated reads, Postgres, and remote MCP. | If access control is the problem, Vagus is not even applying for the job. |
| Answer shape | Returns evidence; the host agent reads and answers. | think synthesizes an answer with citations and explicit gaps. | A clean retrieval boundary versus an integrated reasoning layer. |
RUST VS TYPESCRIPT
It won this architectural argument because Vagus knew when to stop.
TypeScript didn't lose. It was asked to staff a database, MCP server, OAuth surface, schema system, job queue, provider gateway, admin UI, and a dream cycle.
$ vagus search "what did we decide?"
→ evidence returned
$ pgrep -x vagus
[ exit 1 ]$ gbrain serve --http
→ MCP + OAuth + admin
$ gbrain autopilot --install
[ dream cycle scheduled ]FAIRNESS INTERRUPT: GBrain can run locally, keyless, with PGLite and stdio. We checked. Its serious advantages—shared access, continuous enrichment, durable jobs, remote brains—simply live beyond that minimal lane.
CVE ACCOUNTING // NO CREATIVE MATH
Trivy found 80 unique advisory IDs in the measured image: 76 CVEs plus four Debian temporary IDs. Every one was already present in the untouched Bun base image.
Trivy's Node-package target reported zero findings, and bun audit returned an empty object. That is a point-in-time result, not a lifetime warranty.
cargo audit found RUSTSEC-2026-0204 and RUSTSEC-2026-0258 in Vagus's 512-package lock plus five informational warnings. A native binary is not a dependency-free halo.
THE HONEST CONCLUSION: Container operators inherit a base-image patch queue before application code arrives. GBrain's JavaScript graph was clean in this snapshot; Vagus's Rust lock was not. The stronger case for Vagus is a smaller installed and operational surface—not fake immunity from dependency work.
THE LONG MAINTENANCE
Today's source install binds Bun ≥1.3.10 to 188 resolved packages. Binary self-update covers macOS arm64 and Linux x64; source, linked, and compiled installs have different update owners.
127 migrations ran in the empty PGLite brain. Long-term tests must preserve PGLite/Postgres parity, schema packs, pooled database behavior, durable jobs, OAuth, and recovery.
Twenty-three provider recipes and 69 bundled skills track APIs, models, auth, pricing, deprecations, routing, copied user assets, and the inevitable provider funeral.
VAGUS DOES NOT ESCAPE TIME: it still carries 512 locked Rust packages, ONNX Runtime, C++ search code, Metal paths, mutable model repositories, index formats, and a manually advanced Homebrew tap. Its advantage is the smaller contract users must operate—not a maintenance-free source tree.
NO STRAW MEN ALLOWED
Typed graph traversal, cited synthesis, gap analysis, schemas, and durable jobs are real capabilities Vagus does not pretend to replace.
GBrain supports embedded local use, compiled executables, and serious Postgres-backed team deployments without abandoning Markdown/Git ownership.
Its README reports 155,795 production pages and 66 autonomous cron jobs. That is project-reported—not independent, not a Vagus comparison, and still not nothing.
THE RULING
You need a typed organizational graph, shared brains, access control, continuous ingestion, synthesized answers, and jobs that survive the chat session.
PAY IN SERVICES, SCHEMA, PROVIDERS, AND OPERATIONS.Your notes already live in Markdown. You want local hybrid recall, explicit PARA, human-approved filing, and no resident system waiting to become a lifestyle.
PAY IN MODEL DOWNLOADS, LOCAL RAM, AND NARROWER AMBITION.OUR SO-CALLED COMPETITION?
GBrain is a memory operating system. Vagus is a retrieval reflex. If you need the former, Vagus was never bidding. If you need the latter, why are you hiring infrastructure?
PINNED EVIDENCE
Lab snapshot: Docker Server 29.2.1; oven/bun:1 digest sha256:5ff609…; Bun 1.4.0; Trivy 0.74.0. Sizes are decimal bytes rendered as MB/GB. Scanner counts were deduplicated by advisory ID. Snapshot claims can age; pinned source cannot quietly move the goalposts.
Different opponent. Much closer bloodline.
read Vagus vs QMD →