{
  "markdown": "<!-- mcp-name: io.github.basicmachines-co/basic-memory -->\n[![MCP Toplist](https://mcptoplist.com/badge/io.github.basicmachines-co%2Fbasic-memory.svg)](https://mcptoplist.com/server/io.github.basicmachines-co%2Fbasic-memory)\n\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n[![PyPI version](https://badge.fury.io/py/basic-memory.svg)](https://badge.fury.io/py/basic-memory)\n[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)\n[![Tests](https://github.com/basicmachines-co/basic-memory/workflows/Tests/badge.svg)](https://github.com/basicmachines-co/basic-memory/actions)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n![](https://badge.mcpx.dev?type=server 'MCP Server')\n![](https://badge.mcpx.dev?type=dev 'MCP Dev')\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/basicmachines-co/basic-memory)\n\n## Skip the install — try Basic Memory in the cloud\n\nClaude, Codex, or Cursor connected in 30 seconds. No Python, no JSON, no\nterminal. **$15.00/mo locked in for life** (12.50/mo yearly pricing). 7-day free\ntrial — cancel any time before day 7 if it's not for you. Beta pricing —\nsign up now and your rate never goes up. OSS users: code `BMFOSS` takes\nanother 20% off for 3 months.\n\n[Start free trial →](https://basicmemory.com?utm_source=github&utm_medium=referral&utm_campaign=readme&utm_content=banner)\n\n### Basic Memory Teams is now available!\n\nGive your team a single, shared cloud workspace. Knowledge isn't confined to one person — anything a teammate writes is immediately available to everyone else and to their AI assistants. \nEdit a note together in real time, hand work off between humans and agents, and build one connected knowledge base instead of scattered copies. Same pricing - start with one user and add more as needed. \n\n---\n\n# Basic Memory\n\n### Your AI never forgets again.\n\nPick up right where you left off — in Claude, Codex, Cursor, ChatGPT, or\nanything that speaks [MCP](https://modelcontextprotocol.io). Your knowledge\nlives as Markdown files that both you and your AI can read, write, and\nsearch.\n\n- **Local-first.** Plain text on your disk. Forever.\n- **Two-way.** AI and humans write to the same files; sync keeps them in step.\n- **A real knowledge graph.** Observations and wikilinks compound into context.\n- **Semantic search.** Find notes by meaning, not just keywords, with optional\n  cross-encoder reranking for higher-quality vector and hybrid results.\n- **MCP-native.** Works with every major AI client and IDE.\n- **Progressive tool discovery.** Every tool is tagged with behavior hints\n  (read-only, destructive, idempotent) so agents pick the right tool on\n  demand — no wasted context trying things to see what they do.\n- **Cloud, optional.** Sync across devices when you want — never required.\n\n## Get started\n\nPick the path that fits you. Both run the same product on the same Markdown.\n\n<table>\n<tr>\n<th width=\"50%\">☁️ &nbsp; Cloud</th>\n<th width=\"50%\">💻 &nbsp; Local install</th>\n</tr>\n<tr>\n<td valign=\"top\">\n\n**30 seconds.** Sign up, connect your AI client, done.\n\n- Works in any browser\n- Mobile, web, desktop\n- Cross-device sync built in\n- We handle hosting, backups, snapshots\n\n**$15.00/mo locked for life** · 7-day free trial · cancel any time\n\n[**Start free trial →**](https://basicmemory.com?utm_source=github&utm_medium=referral&utm_campaign=readme&utm_content=quickstart)\n\n</td>\n<td valign=\"top\">\n\n**2 minutes.** Install, configure your AI client, run.\n\n- Free forever (AGPL-3.0)\n- All data on your disk\n- Air-gapped friendly\n- Requires Python via [`uv`](https://docs.astral.sh/uv/)\n\n```bash\nuv tool install basic-memory --prerelease=allow\n```\n\n`--prerelease=allow` is required: Basic Memory 0.23 depends on a FastMCP 4\npre-release, and `uv` only accepts pre-releases of transitive dependencies when\ntold to — without the flag it silently installs an older release. The same flag\ngoes on every `uvx` / `uv tool upgrade` command below.\n\nFor Postgres deployments that store semantic vectors in Milvus, install the\nfirst-party optional extra instead:\n\n```bash\nuv tool install \"basic-memory[milvus]\" --prerelease=allow\n```\n\n[**Configure your client ↓**](#connect-your-ai-client)\n\n</td>\n</tr>\n</table>\n\n## What people are saying\n\n> Basic Memory changed my whole relationship with LLMs. I switched from GPT\n> and Gemini to exclusively Claude and Claude Code because of this\n> integration and am completely revamping all our company's processes around\n> a Basic Memory workflow.\n>\n> — **Alex**, TrainerDay\n\n> Basic Memory is the missing 'wow' factor in AI chatbots. Now I can't\n> imagine Claude or Claude Code without it.\n>\n> — **Caleb**, Caleb Picker Consulting\n\n> I don't code without Basic Memory anymore. It's such a time saver to be\n> able to refer to projects I don't currently have active and keep a running\n> log of all my learnings and ProTips.\n>\n> — **@groksrc**, Developer\n\nMore on [basicmemory.com](https://basicmemory.com?utm_source=github&utm_medium=referral&utm_campaign=readme).\n\n## Basic Memory Cloud\n\nThe hosted version of Basic Memory. Same product, same Markdown files, same\nMCP tools — we just host the database, run the sync, and put it on your\nphone.\n\n### What you get\n\n- **Every device, same brain.** Your knowledge graph on web, mobile, and\n  desktop. No copy-paste between machines.\n- **Connect any MCP client.** Claude Desktop, Claude Code, Codex, Cursor,\n  ChatGPT (Custom GPTs), VS Code — one-click connect from the web app.\n- **Bidirectional sync to local.** Edit on your phone, see it in Obsidian on\n  your laptop. rclone-powered with conflict resolution.\n- **Snapshots and backups.** Point-in-time restore. Browse history. Never\n  lose a note.\n- **No lock-in.** Your notes are plain Markdown. Export to local Markdown any\n  time — same files, same format, same wikilinks. Cancel anytime, your data\n  stays yours.\n\nBuilt on WorkOS AuthKit, Neon Postgres, and Tigris S3.\n\n### Pricing\n\n**$15.00/mo, locked in for the life of your subscription** (regular price\n$19). Sign up during beta and the rate never goes up — as long as you stay\nsubscribed, you keep the price. One plan, no tiers, no surprise upgrades.\nUnlimited notes, unlimited projects, every feature.\n\n- 7-day free trial. Cancel any time before day 7 if it's not for you.\n- Cancel anytime after that too — export your notes whenever you want.\n- OSS users: code `BMFOSS` for another 20% off for 3 months (~$11.40/mo).\n\n[**Start your 7-day free trial →**](https://basicmemory.com?utm_source=github&utm_medium=referral&utm_campaign=readme&utm_content=cloud-section)\n\n## Cloud vs. local\n\n|  | Cloud | Local |\n|---|---|---|\n| **Setup time** | 30 seconds | 2 minutes (requires Python) |\n| **Cost** | $15.00/mo, locked for life (7-day trial) | Free |\n| **Storage** | We host (Tigris S3) | Your disk |\n| **Cross-device sync** | Built in | Manual (Git, Syncthing, etc.) |\n| **Mobile access** | Yes (web + app) | No |\n| **Air-gapped** | No | Yes |\n| **Your data stays yours** | Yes — export anytime | Yes — already there |\n| **Source code** | AGPL-3.0 | AGPL-3.0 |\n| **Snapshots & backups** | Built in | Roll your own |\n\nBoth paths use the same OSS engine and the same Markdown files. There's no\nlock-in either way — flip between them when your needs change.\n\n## Works with the tools you already use\n\n| Client | Transport | Notes |\n|---|---|---|\n| Cloud web app | https | Sign in at basicmemory.com — no install |\n| [Claude Desktop](#claude-desktop) | stdio/https | macOS / Windows / Linux |\n| [Claude Code](#claude-code) | stdio/https | `claude mcp add` |\n| [Codex](#codex-cli) | stdio/https | OpenAI's coding agent |\n| [Cursor](#cursor) | stdio/https | `.cursor/mcp.json` |\n| [VS Code](#vs-code) | stdio/https | Native MCP support |\n| [ChatGPT](#chatgpt) | https | Custom GPT actions (`search` / `fetch`) |\n| [Obsidian](#obsidian) | — | Reads/writes the same Markdown directly |\n| Anything MCP | stdio/https | If it speaks MCP, it works |\n\n## Official agent packages\n\nThis repository is also the canonical home for Basic Memory's host-native\nagent packages. The core Python package, Claude Code plugin, shared skills,\nHermes plugin, and OpenClaw plugin all ship from the same source tree.\n\nMaintainers can verify the whole consolidated surface from the repo root:\n\n```bash\njust package-check\n```\n\nPackage-local justfiles are also available when working inside one host:\n\n```bash\njust package-check-claude-code\njust package-check-skills\njust package-check-hermes\njust package-check-openclaw\n```\n\n### Claude Code plugin\n\nThe Claude Code plugin is the bridge between Claude's working memory and Basic\nMemory — session-start briefings, pre-compaction checkpoints, an opt-in capture\noutput style, and `/basic-memory:bm-setup` · `:remember` · `:share` · `:status`.\n\n**Connect the Basic Memory MCP server first** — see [Connect your AI\nclient](#connect-your-ai-client). The plugin's hooks and skills call it, so it's a\nhard prerequisite. Then install the plugin:\n\n```bash\nbm install claude-code\n```\n\nThat registers the marketplace and installs the plugin through Claude Code. Add\n`--scope project` to declare both in the repository's settings for a team, or\n`--dry-run` to see the underlying `claude plugin` commands without running them.\n\nSource: [`plugins/claude-code`](plugins/claude-code).\n\n### Shared skills\n\nFramework-agnostic `SKILL.md` files live in [`skills/`](skills). If your\nSkills CLI supports repository subdirectory sources:\n\n```bash\nnpx skills add basicmachines-co/basic-memory/skills\n```\n\nIf your installed Skills CLI cannot load that source, update the CLI or copy\nthe `memory-*` directories from `skills/` into your agent's skills directory.\n\n### Hermes\n\nHermes keeps its native plugin shape under [`integrations/hermes`](integrations/hermes):\n\n```bash\nhermes plugins install basicmachines-co/basic-memory/integrations/hermes\n```\n\nHermes does not install a plugin's Python dependencies, so also add the `mcp`\npackage to the Hermes venv — see the [plugin README](integrations/hermes/README.md#install)\nfor that step and the supported Hermes releases.\n\n### OpenClaw\n\nOpenClaw stays package-native and publishes from\n[`integrations/openclaw`](integrations/openclaw):\n\n```bash\nopenclaw plugins install @basicmemory/openclaw-basic-memory\n```\n\n## Pick up where you left off\n\nhttps://github.com/user-attachments/assets/a55d8238-8dd0-454a-be4c-8860dbbd0ddc\n\n## Connect your AI client\n\nIf you went the [Cloud](#get-started) route, the web app walks you through\nclient connect. The snippets below are for local installs.\n\n### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"basic-memory\": {\n      \"command\": \"uvx\",\n      \"args\": [\"--prerelease=allow\", \"basic-memory\", \"mcp\"]\n    }\n  }\n}\n```\n\nRestart Claude Desktop. Notes live in `~/basic-memory` by default.\n\n<details>\n<summary><b>Claude Code, Codex CLI, Cursor, VS Code, ChatGPT, Obsidian</b></summary>\n\n### Claude Code\n\n```bash\nclaude mcp add basic-memory -- uvx --prerelease=allow basic-memory mcp\n```\n\nFor the full memory bridge — session briefings, pre-compaction checkpoints, and\nthe `/basic-memory:*` commands — also install the [Claude Code\nplugin](#claude-code-plugin) on top of this.\n\n### Codex CLI\n\nAdd to `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.basic-memory]\ncommand = \"uvx\"\nargs = [\"--prerelease=allow\", \"basic-memory\", \"mcp\"]\n```\n\nCodex can keep its default MCP approval behavior, or you can pre-approve eligible\nBasic Memory tools by adding this server-scoped setting to the same table:\n\n```toml\n[mcp_servers.basic-memory]\ncommand = \"uvx\"\nargs = [\"--prerelease=allow\", \"basic-memory\", \"mcp\"]\ndefault_tools_approval_mode = \"approve\"\n```\n\nThis does not disable Codex approvals globally or expand which Basic Memory\nprojects the server can access. Codex still requires approval for tools that\nadvertise a destructive annotation, including Basic Memory's writes, edits, and\ndeletes. If you installed the Basic Memory Codex plugin, use its\n[plugin-scoped configuration](plugins/codex/README.md#mcp-approvals) instead.\n\n### Cursor\n\nAdd to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):\n\n```json\n{\n  \"mcpServers\": {\n    \"basic-memory\": {\n      \"command\": \"uvx\",\n      \"args\": [\"--prerelease=allow\", \"basic-memory\", \"mcp\"]\n    }\n  }\n}\n```\n\n### VS Code\n\nAdd to your User Settings (JSON):\n\n```json\n{\n  \"mcp\": {\n    \"servers\": {\n      \"basic-memory\": {\n        \"command\": \"uvx\",\n        \"args\": [\"--prerelease=allow\", \"basic-memory\", \"mcp\"]\n      }\n    }\n  }\n}\n```\n\n### ChatGPT\n\nBasic Memory exposes OpenAI-compatible `search` and `fetch` tools for Custom\nGPT actions. See the [ChatGPT integration\nguide](https://docs.basicmemory.com/integrations/chatgpt/?utm_source=github&utm_medium=referral&utm_campaign=readme).\n\n### Obsidian\n\nNo setup. Point Obsidian at `~/basic-memory` (or your project folder) and the\nsame wikilinks, frontmatter, and Markdown your AI writes appear in your graph\nview. Edit either side — sync handles the rest.\n\n</details>\n\nTry a prompt:\n\n```\n\"Create a note about our project architecture decisions.\"\n\"Find information about JWT auth in my notes.\"\n\"What have I been working on this week?\"\n```\n\n## What's New\n\n- **Automatic updates.** Basic Memory keeps itself up to date for `uv tool`\n  and Homebrew installs; `bm update` triggers a manual check.\n- **Semantic vector search.** Find notes by meaning, not just keywords.\n  Hybrid full-text + vector ranking with FastEmbed embeddings, on SQLite or\n  Postgres.\n- **Optional search reranking.** Rescore the strongest vector and hybrid\n  candidates with a local FastEmbed cross-encoder or a LiteLLM-backed provider.\n- **Schema system.** Infer, validate, and diff the structure of your\n  knowledge base with `schema_infer`, `schema_validate`, `schema_diff`.\n- **Per-project cloud routing.** Route individual projects through the cloud\n  while others stay local, via API key (`bm project set-cloud`).\n- **Smarter editing.** `edit_note` append/prepend auto-creates notes when\n  missing; `write_note` guards against accidental overwrites.\n- **Richer search results.** Matched chunk text is included so the LLM gets\n  context, not just hits.\n- **FastMCP 3.0 + tool annotations.** Every tool ships with MCP behavior\n  hints (`readOnlyHint`, `destructiveHint`, `idempotentHint`,\n  `openWorldHint`) so agents can discover capabilities progressively at\n  runtime instead of guessing or burning tokens.\n- **CLI overhaul.** `--json` output for scripting, workspace-aware commands,\n  and an htop-inspired project dashboard.\n\nFull [CHANGELOG](CHANGELOG.md) for v0.18 → v0.20.\n\n## Optional cross-encoder reranking\n\nReranking adds a second relevance pass after vector or hybrid retrieval. It is\ndisabled by default because it adds inference latency and, for the local\nprovider, a first-run model download. Text, title, and permalink searches keep\ntheir existing ranking.\n\nEnable the default local FastEmbed reranker:\n\n```bash\nexport BASIC_MEMORY_SEMANTIC_SEARCH_ENABLED=true\nexport BASIC_MEMORY_RERANKER_ENABLED=true\n```\n\nThe default model is `jinaai/jina-reranker-v1-tiny-en`. To use a hosted\nreranker through LiteLLM instead:\n\n```bash\nexport BASIC_MEMORY_SEMANTIC_SEARCH_ENABLED=true\nexport BASIC_MEMORY_RERANKER_ENABLED=true\nexport BASIC_MEMORY_RERANKER_PROVIDER=litellm\nexport BASIC_MEMORY_RERANKER_MODEL=cohere/rerank-v3.5\nexport COHERE_API_KEY=...\n```\n\nThe feature fails fast on invalid configuration and does not silently fall\nback to retrieval order when an enabled provider fails. See the\n[semantic search guide](docs/semantic-search.md#cross-encoder-reranking) for\nprovider setup, all settings, tuning, pagination, and failure behavior.\n\n## Why Basic Memory\n\nMost LLM conversations are ephemeral. You ask a question, get an answer, then\neverything is forgotten. Workarounds have limits:\n\n- **Chat history** captures conversations but isn't structured knowledge.\n- **RAG** lets the LLM query your documents but not write back to them.\n- **Vector DBs** need complex infra and usually live in someone else's cloud.\n- **Knowledge graphs** need specialized tooling to maintain.\n\nBasic Memory takes a simpler path: **structured Markdown files that humans\nand LLMs both read and write.**\n\n- All knowledge stays in plain files you control.\n- Both sides read and write to the same files.\n- Familiar Markdown with semantic patterns — no new format to learn.\n- A traversable graph the LLM can follow link by link.\n- Works with the editors you already use (Obsidian, VS Code, anything).\n- Just files plus a local SQLite index. No servers required.\n\n## How it works\n\nYou're chatting normally about coffee:\n\n> I've been experimenting with brewing methods. Pour over gives more clarity\n> than French press, water at 205°F seems best, and freshly ground beans\n> make a huge difference.\n\nAsk the LLM to capture it:\n\n> \"Make a note on coffee brewing methods.\"\n\nA Markdown file appears in your project directory in real time:\n\n```markdown\n---\ntitle: Coffee Brewing Methods\npermalink: coffee-brewing-methods\ntags: [coffee, brewing]\n---\n\n# Coffee Brewing Methods\n\n## Observations\n- [method] Pour over highlights subtle flavors over body\n- [technique] Water at 205°F (96°C) extracts optimal compounds\n- [principle] Freshly ground beans preserve aromatics\n\n## Relations\n- relates_to [[Coffee Bean Origins]]\n- requires [[Proper Grinding Technique]]\n- affects [[Flavor Extraction]]\n```\n\nNext session, the LLM picks up the thread. It follows the relations to\nsurface what you already know about Ethiopian beans and burr grinders, and\nbuilds on it instead of starting over. You see the same files in Obsidian or\nyour editor. Edit them by hand — the AI sees your changes too.\n\nReal two-way flow: humans edit Markdown, LLMs read/write through MCP, sync\nkeeps everything consistent, and the source of truth is always your files.\n\n## The Markdown format\n\nEach file is an `Entity`. Entities have `Observations` (facts about them) and\n`Relations` (links to other entities). That's the whole grammar.\n\n### Frontmatter\n\n```markdown\n---\ntitle: <Entity title>\ntype: note\npermalink: <uri-slug>\ntags: [optional, list]\n---\n```\n\n### Observations\n\nFacts about the entity. Categories in `[brackets]`, tags with `#`, optional\ncontext in parens.\n\n```markdown\n- [method] Pour over highlights subtle flavors\n- [tip] Grind medium-fine for V60 #brewing\n- [fact] Lighter roasts contain more caffeine than dark\n- [resource] James Hoffmann's V60 technique on YouTube\n- [question] How does temperature affect compound extraction?\n```\n\n### Relations\n\nWiki-style links that form the graph. Single-token relation types, or quote\nmulti-word ones.\n\n```markdown\n- pairs_well_with [[Chocolate Desserts]]\n- grown_in [[Ethiopia]]\n- requires [[Burr Grinder]]\n- \"pairs well with\" [[Dark Chocolate]]\n```\n\nBare `- [[Target]]` and prose `- Worth checking out [[Target]]` index as\n`links_to`. Full reference in the\n[docs](https://docs.basicmemory.com/concepts/knowledge-format?utm_source=github&utm_medium=referral&utm_campaign=readme).\n\n## MCP tools\n\nBasic Memory exposes these tools to any MCP client. Every tool is annotated\nwith MCP behavior hints (read-only, destructive, idempotent, open-world) so\nagents can pick the right one without trial-and-error:\n\n- **Content:** `write_note`, `read_note`, `edit_note`, `move_note`,\n  `delete_note`, `read_content`, `view_note`\n- **Search & discovery:** `search_notes`, `recent_activity`, `list_directory`\n- **Knowledge graph:** `build_context` (navigates `memory://` URLs)\n- **Projects:** `list_memory_projects`, `list_workspaces`,\n  `create_memory_project`, `delete_project`\n- **Schema:** `schema_infer`, `schema_validate`, `schema_diff`\n- **Compatibility & diagnostics:** `search`, `fetch`,\n  `basic_memory_diagnostics`\n\nAll MCP tools default to text output; pass `output_format=\"json\"` for\nstructured responses. Full tool reference in the\n[docs](https://docs.basicmemory.com/?utm_source=github&utm_medium=referral&utm_campaign=readme).\n\n## CLI essentials\n\n```bash\n# Projects\nbasic-memory project list\nbasic-memory project add research ~/research\nbasic-memory project set-cloud research   # route through cloud\nbasic-memory project set-local research   # revert\n\n# Config\nbasic-memory config list                        # all settings, effective values, env overrides\nbasic-memory config set cli_output_style plain  # validated through the config model\nbasic-memory config unset cli_output_style      # revert to default\n\n# Health & maintenance\nbasic-memory status\nbasic-memory doctor              # file <-> DB consistency check\nbasic-memory tool edit-note ...  # CLI access to MCP tools\nbasic-memory update              # check for and install updates\n\n# Imports\nbasic-memory import claude conversations\nbasic-memory import chatgpt\nbasic-memory import memory-json\n```\n\nRouting flags (`--local` / `--cloud`) force a target when you're in mixed\nmode. Full CLI reference in the\n[docs](https://docs.basicmemory.com/reference/cli-reference?utm_source=github&utm_medium=referral&utm_campaign=readme).\n\n## Auto-updates\n\nCLI installs check for updates every 24 hours by default and apply them\nsilently (so the MCP server keeps responding).\n\n- Supported install sources: `uv tool`, Homebrew\n- Skipped for `uvx` (ephemeral runtime managed by uv)\n- Manual: `bm update` (check + apply) or `bm update --check` (check only)\n\nDisable in `~/.basic-memory/config.json`:\n\n```json\n{ \"auto_update\": false }\n```\n\n## Telemetry\n\nMinimal, anonymous events to understand the CLI-to-cloud conversion funnel.\n\n**What we collect:** cloud promo impressions, cloud login attempts and\noutcomes, promo opt-out events.\n\n**What we don't:** file contents, note titles, knowledge base data, PII, IP\naddresses, per-command or per-tool tracking.\n\nEvents go to our [Umami Cloud](https://umami.is) instance (open-source,\nprivacy-focused) on a background thread — never blocks the CLI.\n\nOpt out:\n\n```bash\nexport BASIC_MEMORY_NO_PROMOS=1\n```\n\nThis disables promos and all telemetry.\n\n## Logging\n\nBasic Memory uses [Loguru](https://github.com/Delgan/loguru). Defaults vary\nby entry point:\n\n| Entry point | Default | Why |\n|---|---|---|\n| CLI commands | File only | Doesn't interfere with command output |\n| MCP server | File only | Stdout would corrupt JSON-RPC |\n| API server | File (local) or stdout (cloud) | Docker/cloud uses stdout |\n\nLog file: `~/.basic-memory/basic-memory.log` (10MB rotation, 10 days\nretention).\n\n### Environment variables\n\n| Variable | Default | Description |\n|---|---|---|\n| `BASIC_MEMORY_LOG_LEVEL` | `INFO` | DEBUG / INFO / WARNING / ERROR |\n| `BASIC_MEMORY_CLOUD_MODE` | `false` | API logs to stdout with structured context |\n| `BASIC_MEMORY_FORCE_LOCAL` | `false` | Force local API routing |\n| `BASIC_MEMORY_FORCE_CLOUD` | `false` | Force cloud API routing |\n| `BASIC_MEMORY_EXPLICIT_ROUTING` | `false` | Mark route selection as explicit |\n| `BASIC_MEMORY_ENV` | `dev` | Set to `test` for test mode (stderr only) |\n| `BASIC_MEMORY_NO_PROMOS` | `false` | Disable cloud promos and telemetry |\n| `BASIC_MEMORY_IMPORT_UPLOAD_MAX_BYTES` | `104857600` | Max uploaded import size |\n\n```bash\nBASIC_MEMORY_LOG_LEVEL=DEBUG basic-memory reindex\ntail -f ~/.basic-memory/basic-memory.log\n```\n\n## Development\n\nBasic Memory supports SQLite (default, fast, no Docker) and Postgres\n(via testcontainers — Docker required).\n\n```bash\njust install          # Install with dev dependencies\njust test-sqlite      # All tests, SQLite\njust test-postgres    # All tests, Postgres (testcontainers)\njust test             # Both backends\njust fast-check       # fix/format/typecheck + impacted tests\njust doctor           # File <-> DB consistency check (temp config)\njust package-check    # Claude Code, skills, Hermes, OpenClaw package checks\njust lint\njust typecheck        # Pyright (primary)\njust typecheck-ty     # ty (supplemental)\njust format\njust check            # All quality checks\njust migration \"msg\"  # New Alembic migration\n```\n\nTests use pytest markers: `windows`, `benchmark`, `smoke`. See\n[justfile](justfile) for the full list.\n\nContributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n[AGPL-3.0](LICENSE).\n\nBuilt with ♥️ by [Basic Machines](https://basicmachines.co?utm_source=github&utm_medium=referral&utm_campaign=readme)\n",
  "bytes": 24403,
  "sha": "f17c69dbb796108638d4da27fc7929aef8f6cd99d2c66ec4b22b01a8ca40dc52",
  "repo_slug": "basicmachines-co/basic-memory",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_basicmachines_co_basic_memory_439294e6/readme"
}