{"id":37537756,"url":"https://github.com/maxwolf-01/memex","last_synced_at":"2026-04-15T01:00:58.489Z","repository":{"id":330534776,"uuid":"1119284789","full_name":"MaxWolf-01/memex","owner":"MaxWolf-01","description":"Second brain for your LLM.","archived":false,"fork":false,"pushed_at":"2026-04-01T19:19:06.000Z","size":130,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-02T06:43:01.833Z","etag":null,"topics":["agent-memory","agentic-ai","agentic-workflow","claude-code","mcp-server","memex","obsidian","second-brain"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaxWolf-01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-19T03:26:23.000Z","updated_at":"2026-04-01T19:19:09.000Z","dependencies_parsed_at":"2026-02-16T08:05:33.643Z","dependency_job_id":null,"html_url":"https://github.com/MaxWolf-01/memex","commit_stats":null,"previous_names":["maxwolf-01/memex"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/MaxWolf-01/memex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaxWolf-01%2Fmemex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaxWolf-01%2Fmemex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaxWolf-01%2Fmemex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaxWolf-01%2Fmemex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaxWolf-01","download_url":"https://codeload.github.com/MaxWolf-01/memex/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaxWolf-01%2Fmemex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31821685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-memory","agentic-ai","agentic-workflow","claude-code","mcp-server","memex","obsidian","second-brain"],"created_at":"2026-01-16T08:41:31.992Z","updated_at":"2026-04-15T01:00:58.468Z","avatar_url":"https://github.com/MaxWolf-01.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# memex-md\n\n*You like Obsidian? Your LLM will love it too.*\n\n*[Memex](https://en.wikipedia.org/wiki/Memex): Vannevar Bush's 1945 concept of a \"memory extender\" - a device for storing and retrieving personal knowledge. The conceptual ancestor of personal wikis and second brains.*\n\nFuzzy find, wikilink graph traversal, and semantic search for markdown vaults. Point it at your Obsidian vault (or any markdown folder).\n\n## Quick Start\n\n```bash\nuv tool install memex-md                                                    # find, explore, rename\nuv tool install memex-md --with \"memex-md[semantic]\" --torch-backend=cpu    # + semantic search (CPU, ~200MB)\nuv tool install memex-md --with \"memex-md[semantic]\" --torch-backend=auto   # + semantic search (auto-detect GPU)\n```\n\nIf installed, you can run `memex` directly, or via the alias `mx`:\n```\nmx vault:add personal ~/notes ~/journal\nmx search \"How does the auth flow handle token refresh?\" -v personal\nmx find knn\nmx explore auth personal\n```\n\nFor a memex skill, see [my agent workflows](https://github.com/MaxWolf-01/agents).\n\n## How It Works\n\nA **vault** is a named collection of directories. Each vault has its own embedding model and SQLite index (`~/.local/share/memex-md/\u003cvault-name\u003e/index.db`).\n\nThe index contains:\n\n- Wikilink graph for backlink/outlink queries\n- Extracted frontmatter (aliases, tags)\n- Embeddings for semantic similarity (optional, default: [embeddinggemma-300m](https://huggingface.co/google/embeddinggemma-300m))\n\nIndexing is incremental — on each command, only files with changed mtimes are re-indexed. Hidden directories (`.obsidian`, `.trash`, `.git`, etc.) are excluded.\n\nSemantic search requires the `semantic` extra (`pip install memex-md[semantic]`). Without it, `find`, `explore` (outlinks/backlinks), and `rename` work normally — only `search` and the \"similar notes\" section in `explore` are unavailable.\n\n**Note:** Initial embedding computation is GPU-intensive. Example: ~3800 notes took ~7 minutes on an RTX 3070 Ti.\n\n## Configuration\n\nVaults are configured via CLI. Config lives at `~/.config/memex/config.toml`.\n\n```bash\nmx vault:add personal ~/notes ~/journal\nmx vault:add work ~/work-docs --model some/other-model\nmx vault:list\nmx vault:info personal\nmx vault:remove personal --path ~/journal   # remove one path\nmx vault:remove work                        # remove entire vault\n```\n\nRe-add a vault with `--model` to change its embedding model (triggers re-embedding). Use `--model none` to disable semantic search (wikilink navigation only).\n\n## Commands\n\n### find\n\n```\nmx find knn\nmx find \"neural ordinary\" -v personal\nmx find auth -n 20\n```\n\nFuzzy match against note titles, frontmatter aliases, and paths. No embeddings needed — instant results. Ranked: exact title/alias \u003e substring \u003e fuzzy ([rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) WRatio). Multi-word queries match any part; more parts hitting = ranked higher.\n\n| Flag | Description |\n|------|-------------|\n| `-v`, `--vault` | Search a specific vault (default: all) |\n| `-n`, `--limit` | Max results (default: 10) |\n\n### search\n\n```\nmx search \"How does the auth flow handle token refresh?\" -v personal\nmx search \"What approaches did we consider for caching?\" -v work --full\n```\n\nEmbeds the query and ranks indexed notes by cosine distance. Natural language questions of a few sentences tend to work well.\n\n| Flag | Description |\n|------|-------------|\n| `-v`, `--vault` | Search a specific vault (default: all) |\n| `-n`, `--limit` | Max results (default: 5) |\n| `-p`, `--page` | Pagination (default: 1) |\n| `-f`, `--full` | Include note content (default: paths only) |\n\n### explore\n\n```\nmx explore auth personal\nmx explore docs/api-design work --full\n```\n\nShows a note's outlinks (`[[wikilinks]]`), backlinks, and semantically similar notes.\n\n`note_path` can be a title (`auth`) or path (`docs/auth.md`). Titles must be unique in the vault.\n\n| Flag | Description |\n|------|-------------|\n| `-f`, `--full` | Include note content and metadata (default: graph only) |\n\n### rename\n\n```\nmx rename old-name new-name personal\nmx rename docs/guide manual work\n```\n\nRenames a note file and updates all `[[wikilinks]]` pointing to it. Handles path links, title links, aliases, and heading refs. Ambiguous links (multiple files share a name) are skipped with warning.\n\n### index\n\n```\nmx index\nmx index -v personal\n```\n\nTrigger indexing. Runs automatically before search/explore.\n\n## Development\n\n```bash\nuv sync\nmake check          # ruff + ty\nmake test           # pytest\nmake release-patch  # 1.0.0 -\u003e 1.0.1, tag, push\nmake release-minor  # 1.0.0 -\u003e 1.1.0\nmake release-major  # 1.0.0 -\u003e 2.0.0\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxwolf-01%2Fmemex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxwolf-01%2Fmemex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxwolf-01%2Fmemex/lists"}