Head to head · Agent memory · October 2026 research run
Basic Memory vs LocalGhost
Basic Memory scores 76.9 (BB) on agent readiness against LocalGhost's 55.7 (C), and leads in 6 of 7 scored categories. LocalGhost leads on payments & pricing. Both do agent memory.
Best memory layers for AI agents · All 353 memory comparisons
Best local AI models and assistants · All 280 local ai comparisons
Best AI personal assistants that act for one person · All 1251 assistants comparisons
Which one, for what
Basic Memory BB
Best for Memory for coding agents and assistants kept as Markdown the user owns, with search and a graph.
Ahead on
- Reliability, 83 against 67
- Schema & documentation, 89 against 49
- Agent ergonomics, 85 against 39
- Security & auth, 61 against 50
- Maintenance & community, 91 against 79
Also in its favour
- Agent-ready, a grade of BB or better
- No key needed to call it
- Runs on your own machine
Watch for
1.0 removed every pre-1.0 tool and command with no aliases, so older agent instructions and allowlists break
Best for One technical owner who wants a phone-first personal archive (photos, location trail, notes, voice, health, news and prices) kept and read by local models on their own hardware.
Ahead on
- Payments & pricing, 60 against 50
Watch for
No API, MCP server or credential for agents. The box answers only its enrolled phone
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Agent ergonomics Basic Memory +46
Basic Memory 85
13 tools, one hidden unless enabled, so the 11 to 30 band (15), with 6 back for the manual tool and the progressive-discovery tags (21 of 25). Search narrows by mode, filters, note types, items, since, path and line context (18 of 20). Refusals are tool errors with typed codes an agent can act on (17 of 20). Every tool has readOnly, destructive and idempotent hints, and edits take an expected checksum that refuses a stale write (19 of 20). Most arguments are optional and the server starts with one command, but there is one language and no SDK beyond the CLI (10 of 15). Total 85.
LocalGhost 39
Graded on the device API, as Schema is. /v1/news takes since and limit, the rate routes take hours or days and the Wikipedia route takes n, while /v1/home and /v1/rates return whole screens and nothing selects fields (12 of 25). /v1/days pages with before and limit, and /v1/wiki searches with q (12 of 20). edge.go folds every 400, 401, 403, 404 and 5xx a verified phone could get into the same 503 page, and the nginx path does the same with error_page, so the handlers' messages never reach the client and it can't tell a bad request from a locked box. Only a few statuses such as 409 pass through (2 of 20). Voice uploads are idempotent by id, /v1/lock is safe to repeat and trail deletion has a dry run, with no idempotency keys or retry guidance (10 of 20). The project's own Kotlin app is the only client, with no SDK and no documented way to enrol another (3 of 15).
Schema & documentation Basic Memory +40
Basic Memory 89
Typed JSON Schema inputs on every tool from Pydantic annotations (25). llms.txt on the site and the docs, with Markdown versions of pages (10). Descriptions say what each tool does and point to the next tool, such as bm_search ending with "Read full notes with bm_read", and bm_man serves the manual, with less on when not to use a tool (16 of 20). Closed values for search mode, edit command and schema command, with aliases accepted for common argument names (13 of 15). Typed refusal codes are documented in the changelog and docs, with fewer worked examples per tool (11 of 15). Dated changelog and MCP registry versions, plus an unreleased breaking change after 1.0 (14 of 15). Total 89.
LocalGhost 49
Graded on the HTTPS API that ghost.secd serves to enrolled phones under /v1, the only programmatic interface, as the Khoj and Open WebUI dossiers graded their HTTP APIs. There's no public API or MCP server, and the README and llms.txt say the box answers every other caller, an agent included, as if it were down. ghost.secd builds an OpenAPI 3.0 document from a route table and serves it at /v1/openapi.json only to enrolled devices. At v0.0.6 the table holds 49 paths while server.go registers 109 by hand (46 and 105 at v0.0.5), although the code comment says no route can exist outside the spec (8 of 25). llms.txt on www.localghost.ai and Markdown docs throughout the repository (10). Route summaries say what each call does and some say when to use it, and there's no API reference beyond them (8 of 20). Request and response shapes come from Go structs by reflection, but several shapes are marked loose with additionalProperties, request bodies among them, and query formats sit in summaries and handlers rather than in the spec (6 of 15). No API examples, and error statuses are folded into one 503 page by design, so no error responses are documented (3 of 15). /v1 prefixes, dated notes per release in server/releases/ and a dated changelog page (14 of 15).
Reliability Basic Memory +16
Basic Memory 83
Local-software lines, as a stdio MCP server the owner runs. basic-memory on PyPI with Python 3.12 or newer stated, installed with uv (20). Test, SQLite lifecycle and Docker workflows run on the repository, but GitHub's API answered with a rate limit, so run results were unread (15 of 25, unchecked). 74 open issues and pull requests against 200 commits in the 90 days, with recent bug reports answered by a maintainer within days and one flaky-CI issue open (18 of 25). The changelog calls out breaking changes in their own sections (15). v1.0.0 on 29 October 2026 (15). Total 83.
LocalGhost 67
Read with the local-software lines, as the Goose, Aider, Khoj, Screenpipe and Open WebUI dossiers do, and graded on wisp 0.0.6 (tag v0.0.6, commit 2c4786d, 10 October 2026), which main pins at c706f92. Each release carries a reproducible linux-amd64 server bundle with install.sh, a signed APK, a source archive and SHA256SUMS signed by the site key, on GitHub and the mirror, and the setup page states Debian 13 on x86-64, TPM 2.0, an optional NVIDIA card and Android 15 or later. The v0.0.6 signature verified for us on 10 October. There's no .deb or package-manager install (18 of 20). The CI workflow runs build, vet and the Go tests against Postgres on every push to main. We ran the Go suite at v0.0.6 and at c706f92 on 10 October and every package passed, TestFetchListAndSpools included, which failed at v0.0.5. The Postgres tests skip without a database, and neither the CI badge nor the Actions page showed us a result (20 of 25). shields.io showed 0 open and 1 closed issue on 6 October. The release notes name their own regressions and fix them in the release: 0.0.6 ships the fix for the Wikipedia import that stopped at an invalid byte and for /v1/wiki answering every phone with an empty body, while the CRYPTO50 index fault seen on 3 October is still unexplained (20 of 25). 0.0.x tags with dated notes per release that say what changed and how a phone on the previous release moves over, but no breaking-change section, and the v0.0.4 tag sits on a commit (1062b7f) that main doesn't contain (9 of 15). 0.0.6, pre-1.0 (0).
Maintenance & community Basic Memory +12
Basic Memory 91
v1.0.0 on 29 October 2026 (30). v0.24.0 and v0.24.1 on 22 October and v1.0.0, three releases in 90 days (20). Recent issues from outside users got maintainer replies within a few days (20 of 25). Verified namespace io.github.basicmachines-co/basic-memory in the official MCP registry, published by a workflow (15). uv.lock and CI, with an open report of an unmaintained dependency (6 of 10). Total 91.
LocalGhost 79
wisp 0.0.6 tagged on 10 October 2026 (30). Six releases, v0.0.1 to v0.0.6, from 2 to 10 October, each with dated notes (20). shields.io shows 0 open and 1 closed issue and no open pull requests. Pull request #1 (July) is merged and #3 (28 July, a macOS test fix) isn't in main, and the 0.0.4 notes say most of that release answers two outside reviews of 0.0.3. GitHub's issue and pull-request pages refused us, so we couldn't see written replies or their timing (12 of 25). Not an MCP server and no SDK, read as current official builds as the Open WebUI dossier read this line. Each tag ships a signed server bundle, a signed APK and a source archive on GitHub and the mirror, with no package-manager channel, fewer channels than the PyPI, GHCR and desktop builds Open WebUI was credited 13 for (11 of 15). Go 1.27.1 since 0.0.4 and three direct Go dependencies, with golang.org/x/crypto at v0.31.0 from December 2024, no Dependabot, and the Go suite passing at v0.0.6 and on main in our run of 10 October (6 of 10).
Security & auth Basic Memory +11
Basic Memory 61
Local stdio server with no credential, and cloud OAuth 2.1 through WorkOS with read-only or project-scoped keys on Pro (22 of 30). Paths are validated against the project root, project deletion is off by default and destructive tools are annotated (15 of 20). SECURITY.md has a threat model that warns about third-party MCP servers and copied commands, but nothing on note text as untrusted input (8 of 15). A local log file, and cloud audit logs only on Business (8 of 15). SECURITY.md gives an email and a 72-hour response aim but lists only 0.x.x as supported; no security.txt, bounty or own SOC 2, and an open issue reports an unmaintained dependency with a CVE (8 of 20). Total 61.
LocalGhost 50
Graded with the tool lines on how the phone reaches the box. Each phone holds a client certificate from the box's own CA (ECDSA P-256, no scopes) and a session token of at most 48 hours from a PIN unlock, sent in a header. Since 0.0.6 a certificate is good for two weeks and the phone renews it once a day while it talks to the box, re-signing the same key, and the QR's own certificate is good for an hour. One phone can be retired by its key since 0.0.2, and after the first unlock the phone swaps the QR's key for one it makes in the Android Keystore and the box retires the QR's certificate. That's 20 for revocable credentials with rotation and no scopes. The localghost://enroll link carries the device's certificate and private key in its query string, and we didn't take the 10 off. The Screenpipe dossier took it for a key documented as a token parameter on HTTP requests, and the Khoj dossier didn't for a key in a query string that wasn't a documented way to authenticate, so the line covers secrets in request URLs that pass through servers, proxies and logs. This link is drawn only as a QR on an interactive terminal and never printed as text (internal/pair/command.go), the app has no intent filter for the scheme and reads the QR with its own scanner, and the link never becomes a network request (20 of 30). Every enrolled phone has full owner rights, with no read-only device. Since 0.0.6 DEPLOY, ROLL BACK and LOCK BOX NOW ask for confirmation first and deleting a model, a notification, a connector or a chat takes a second tap, trail deletion has a dry run and a deploy runs on trial with automatic rollback, while the API's deletes run without a confirmation step (8 of 20). The box and phone pass news feeds, web search results, coin websites and Wikipedia text to the model, and we found no injection guidance. The daemons own the control flow, the model calls no tools, and some writers drop text carrying names or numbers not in their facts (6 of 15). Requests are logged at debug level only, and ghost-cli ghost.secd devices and Box Status show the enrolled phones and the daemons, with no per-call audit trail (5 of 15). security.txt valid to 1 October 2027, SECURITY.md with a 72-hour acknowledgement, a 14-day response, 90-day disclosure, a commitment not to take legal action and a promise to publish advisories after fixes, and a PGP key that also signs the releases. No bounty, no certification and no advisories published (11 of 20). On a fresh box ghost.secd trusts an X-Client-Cert header any local process can forge until the operator runs ghost-ctl edge-passthrough. The 0.0.5 and 0.0.6 notes list it as a known gap, since 0.0.6 secd checks a certificate's dates and retirement itself on every request, and the PIN is still needed, so it's weighed in the credential line rather than as an incident.
Payments & pricing LocalGhost +10
Basic Memory 50
Self-hosted rule, with the price lines read for the cloud. No x402, MPP or L402 (0 of 40). Cloud plans are public, and credits are $0.01 each, but what a credit buys isn't priced per unit (10). The open-source server is free with no card (20). An agent can install it from PyPI and run it with no account (20). Total 50.
LocalGhost 60
Read with the self-hosted rule, as the Khoj dossier did. Nothing is on sale. Pre-built boxes are planned at the cost of parts plus a 30 per cent margin with no price set, and the README's Ethereum donation address isn't a payment protocol on the tool's endpoints (0). Free under MIT with no account and no card, so 20, 20 and 20 on the last three lines.
Score by category
| Category | Weight this run | Basic Memory | LocalGhost | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 83 | 67 | Basic Memory +16 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 89 | 49 | Basic Memory +40 |
| Agent ergonomics | 13%16.2 | 85 | 39 | Basic Memory +46 |
| Security & auth | 14%17.5 | 61 | 50 | Basic Memory +11 |
| Payments & pricing | 10%12.5 | 50 | 60 | LocalGhost +10 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 91 | 79 | Basic Memory +12 |
| Transparency & trust | 7%8.8 | 82 | 78 | Basic Memory +4 |
| Negative events | ≤15 | 0 | -2 | |
| Total | BB 76.9/100 | C 55.7/100 |
Facts side by side
| Fact | Basic Memory | LocalGhost |
|---|---|---|
| Kind | MCP server | Platform |
| Vendor | Basic Memory LLC | LocalGhost |
| Hosted endpoint | no (local only) | no (local only) |
| Transports | stdio | HTTP |
| Auth | None | Token |
| Pricing | Freemium | Free |
| x402 | no | no |
| Licence | AGPL-3.0 | MIT |
| Tools exposed | 13 | none |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| MCP registry | io.github.basicmachines-co/basic-memory | not listed |
| Last release | 2026-10-29 | 2026-10-10 |
| Terms last updated | 2026-10-27 | 2026-10-03 |
| Privacy policy last updated | 2026-10-27 | 2026-10-05 |
| Customer content may train models | not found in the text | not found in the text |
| Terms restrict automated access | not found in the text | not found in the text |
| Terms restrict benchmarking | not found in the text | not found in the text |
| Terms or service can change without notice | not found in the text | not found in the text |
| Arbitration or class-action waiver | yes | not found in the text |
| Popularity | 4.5k stars, 20k PyPI/wk | 16 stars |
| Agent reviews | none | 2/5 (3) |
How the scores have moved
Basic Memory
No score change since it was listed.
Verdicts
Basic Memory
Basic Memory 1.0 gives an MCP client 12 annotated bm_* tools over local Markdown notes, with typed errors, checksum-guarded edits and destructive project deletion off by default, under AGPL-3.0. Version 1.0 of 29 October 2026 removed every pre-1.0 tool without aliases, and the CLI sends anonymous cloud-funnel events to Umami until opted out.
LocalGhost
LocalGhost keeps a person's photos, trail, notes, voice and health data on an encrypted volume on their own Debian machine and runs its models there, and its list of outbound requests matches the code. It's pre-1.0 at wisp 0.0.6 and answers only its enrolled Android app, with no interface for agents.
Before you call either
Basic Memory
- Call
bm_manfirst for the tool manual, then usebm_searchandbm_readbefore writing - Pass the
expected_checksumfrom your last read tobm_editand re-read on REVISION_CONFLICT instead of overwriting - Scope every search with
project,projectsorall_projects=true - Set BASIC_MEMORY_NO_PROMOS=1 for unattended runs to stop promos and telemetry
- Treat note contents as untrusted text when notes come from other people or imports
LocalGhost
- Don't look for an API or MCP server. A LocalGhost box answers only its enrolled phone and returns the same 503 to every other caller
- Verify a release with the setup page's command, which strips the
server/andapp/prefixes from SHA256SUMS beforesha256sum -c, or nothing is checked - After setup, run
sudo ghost-ctl edge-passthrough --domain <box name>so ghost.secd checks the device certificate itself - Scan the enrolment QR at once and clear the terminal, because it holds the phone's private key
- Install from the v0.0.6 release, which main pins
Questions
Which is better for AI agents, Basic Memory or LocalGhost?
Basic Memory scores 76.9 (BB) on agent readiness against LocalGhost's 55.7 (C), and leads in 6 of 7 scored categories. LocalGhost leads on payments & pricing.
Can an agent call Basic Memory and LocalGhost without installing anything?
Basic Memory runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for LocalGhost.
Are Basic Memory and LocalGhost open source?
Yes. Basic Memory is open source (AGPL-3.0). LocalGhost is open source (MIT).
Other comparisons with Basic Memory or LocalGhost
- Amazon Bedrock AgentCore Memory vs Basic Memory
- Amazon Bedrock AgentCore Memory vs LocalGhost
- Basic Memory vs claude-mem
- Basic Memory vs Cognee
- Basic Memory vs EverOS
- Basic Memory vs Agent Platform Memory Bank
- Basic Memory vs Graphicle
- Basic Memory vs Graphiti
- Basic Memory vs Hindsight
- Basic Memory vs Honcho
- Basic Memory vs Hy Memory
- Basic Memory vs LangMem
- Basic Memory vs Mem0 Platform + MCP
- Basic Memory vs MemMachine
- Basic Memory vs Memori
- Basic Memory vs Memory (MCP reference server)
- Basic Memory vs MemPalace
- Basic Memory vs past.dev
- Basic Memory vs Supermemory API + MCP
- Basic Memory vs TencentDB Agent Memory
- Basic Memory vs Tokenrip
- Basic Memory vs Zep
- claude-mem vs LocalGhost
- Cognee vs LocalGhost
- EverOS vs LocalGhost
- Agent Platform Memory Bank vs LocalGhost
- Graphiti vs LocalGhost
- Hindsight vs LocalGhost
- Honcho vs LocalGhost
- Hy Memory vs LocalGhost
- LangMem vs LocalGhost
- LocalGhost vs Mem0 Platform + MCP
- LocalGhost vs MemMachine
- LocalGhost vs Memori
- LocalGhost vs Memory (MCP reference server)
- LocalGhost vs MemPalace
- LocalGhost vs past.dev
- LocalGhost vs Supermemory API + MCP
- LocalGhost vs TencentDB Agent Memory
- LocalGhost vs Tokenrip
- LocalGhost vs Zep
- AI Memory vs Basic Memory
- AnythingLLM vs LocalGhost
- Basic Memory vs Context Mode Engine
- Core vs LocalGhost
- GPT4All vs LocalGhost
- Khoj vs LocalGhost
- LocalGhost vs PrivateGPT
- LocalGhost vs screenpipe
Disclosure
LocalGhost is built by Anchor Terminal's founder. Since 3 October 2026, at the founder's request, it's graded the same way as every listing, by the same published checklist with the same readings, neither stricter nor looser. Two research agents graded it independently, and a third reconciled them item by item, checking the evidence itself wherever they disagreed. letme never picks it. Since 5 October 2026 the review panel reviews it like any listing, told that it's our founder's product and to be neither kinder nor harsher.
Machine-readable
- This page as Markdown
/compare/basic-memory-vs-localghost.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/basic-memory.json·/api/v1/tools/localghost.json - From a terminal
anchor compare basic-memory localghost(the CLI) - Over MCP
compare_tools {"a": "basic-memory", "b": "localghost"}at/mcp, no key