{"_id":"@edmondfrank/probe-linux-x64","_rev":"10-f8609bbde3f0b354099ebddb0015104a","name":"@edmondfrank/probe-linux-x64","dist-tags":{"latest":"1.0.1-rc2"},"versions":{"1.0.0":{"name":"@edmondfrank/probe-linux-x64","version":"1.0.0","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","_id":"@edmondfrank/probe-linux-x64@1.0.0","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"homepage":"https://github.com/buger/probe#readme","bugs":{"url":"https://github.com/buger/probe/issues"},"os":["linux"],"bin":{"probe":"probe"},"cpu":["x64"],"dist":{"shasum":"2adbcf740101297e7277854f8b27a48be21e6fd1","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-1.0.0.tgz","fileCount":4,"integrity":"sha512-Gt1foMP3EG1ehiQTAxhc9LRkyTc1/3tfYOiW7W17G/WsFZZZMdeP9804XU6gYZftixJTspTw7Ux/g8m1YV/t5g==","signatures":[{"sig":"MEUCIFUgjkA0TinAC7qyX7u3U45MOI7YWa52J1FAkug4SF7IAiEArwYtVS0rX+2o5u0rzopBEFh3Sx2Xt6I1R6hQIa3u6vg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40948646},"gitHead":"11e9e8993e5173cc5d32636a7fdd7f40e65c2ebc","_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"repository":{"url":"git+https://github.com/buger/probe.git","type":"git"},"_npmVersion":"10.8.2","description":"Probe CLI binary for linux-x64","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/probe-linux-x64_1.0.0_1748517748387_0.5897151025458744","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc2":{"name":"@edmondfrank/probe-linux-x64","version":"1.0.0-rc2","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","_id":"@edmondfrank/probe-linux-x64@1.0.0-rc2","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"homepage":"https://github.com/buger/probe#readme","bugs":{"url":"https://github.com/buger/probe/issues"},"os":["linux"],"bin":{"probe":"probe"},"cpu":["x64"],"dist":{"shasum":"58925d2db770b0b2fdc9ea6d8dbc3ac7fb92943f","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-1.0.0-rc2.tgz","fileCount":4,"integrity":"sha512-qQaqHbQXRzvk125KiC0DjJW78J4T6JTeADrskR7jqJtrlZNE8TxmXhmtKW7h3vJv2t19IOFoIqTQXD3v23ByNw==","signatures":[{"sig":"MEYCIQCC9aPLUMelLYFw1Q663PIu17qSqtIbQZLW5PCxgOMEswIhAKeiAxfz9CNJSGP/gmniQLGn/Iyz/AkbI/SpiWlklKQQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40948650},"gitHead":"cf491ca40b863e7ad150a286a624bab36966ca7b","_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"repository":{"url":"git+https://github.com/buger/probe.git","type":"git"},"_npmVersion":"10.8.2","description":"Probe CLI binary for linux-x64","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/probe-linux-x64_1.0.0-rc2_1748518604779_0.8125200757664977","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc3":{"name":"@edmondfrank/probe-linux-x64","version":"1.0.0-rc3","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","_id":"@edmondfrank/probe-linux-x64@1.0.0-rc3","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"homepage":"https://github.com/buger/probe#readme","bugs":{"url":"https://github.com/buger/probe/issues"},"os":["linux"],"bin":{"probe":"probe"},"cpu":["x64"],"dist":{"shasum":"a8d6026208f5b7d82321a9728a1bf23be6c12743","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-1.0.0-rc3.tgz","fileCount":4,"integrity":"sha512-0Heh48/hi1iSxM8YiaytrTWkxUp1o63momzIK7mZgD9ewaUVfduA7OeQi0T9uiDlNkFQV2lRln1gpGKDDA/S8g==","signatures":[{"sig":"MEQCIDBuw8ziU+bMOrnUcaWMszi4f59llpx2MlOlOiTdUwqKAiAMnhnnCn7DSEO11xHt2KlEolR+cB1724SmmPk4JyxHPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40948650},"gitHead":"420510f32aa7fc3e2cfe1a710b398b0c3e007bea","_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"repository":{"url":"git+https://github.com/buger/probe.git","type":"git"},"_npmVersion":"10.8.2","description":"Probe CLI binary for linux-x64","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/probe-linux-x64_1.0.0-rc3_1748524788478_0.8918770091541659","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc4":{"name":"@edmondfrank/probe-linux-x64","version":"1.0.0-rc4","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","_id":"@edmondfrank/probe-linux-x64@1.0.0-rc4","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"homepage":"https://github.com/buger/probe#readme","bugs":{"url":"https://github.com/buger/probe/issues"},"os":["linux"],"bin":{"probe":"probe"},"cpu":["x64"],"dist":{"shasum":"5e1d9d424f758b42c67d25ff0e11d2bf386192c7","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-1.0.0-rc4.tgz","fileCount":4,"integrity":"sha512-5X9E46QinCmfR3XyoXqyuld4rl4O/k49CGmI5UmQf9gkXe5rKq8jR2dl3Qbb6wd792boTlYn49GP5qI+99yUGQ==","signatures":[{"sig":"MEUCIQDMf9JYfRd1Ec6hhsgaJJSxXkuT/bBmnPM2gdCaQ7Wr6gIgeGz+nCip0t1xxYeM+tjCEyHi001/fAIQPjO9CYiZC5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40948650},"gitHead":"9cfcd32b76e52736841e5795800f72c973e16664","_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"repository":{"url":"git+https://github.com/buger/probe.git","type":"git"},"_npmVersion":"10.8.2","description":"Probe CLI binary for linux-x64","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/probe-linux-x64_1.0.0-rc4_1748526692955_0.1747161490404101","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc5":{"name":"@edmondfrank/probe-linux-x64","version":"1.0.0-rc5","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","_id":"@edmondfrank/probe-linux-x64@1.0.0-rc5","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"homepage":"https://github.com/buger/probe#readme","bugs":{"url":"https://github.com/buger/probe/issues"},"os":["linux"],"bin":{"probe":"probe"},"cpu":["x64"],"dist":{"shasum":"636dddd0f2028cae95ad78b706b35738089814e5","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-1.0.0-rc5.tgz","fileCount":4,"integrity":"sha512-8K0QTpUj8UCBWqwdTQnEh8oC0QIhPQXuEhCVyk4jjXYXVyFEDysg+bifqTDcHSo/x62gG/JIRdSt5ZIbxE9+aQ==","signatures":[{"sig":"MEYCIQDmHWqaKKs148XlECUcQsyDGgSqtEg+bsqpl2VEU8RtjQIhAJmYQ3CZh16zhdeyquYQb8feySb0xnmauycKOcKh+tq0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40924282},"gitHead":"5271eaa7c8c12f30a2b1f1195c3246923a835a5e","_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"repository":{"url":"git+https://github.com/buger/probe.git","type":"git"},"_npmVersion":"10.8.2","description":"Probe CLI binary for linux-x64","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/probe-linux-x64_1.0.0-rc5_1748574819354_0.327537633987","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc6":{"name":"@edmondfrank/probe-linux-x64","version":"1.0.0-rc6","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","_id":"@edmondfrank/probe-linux-x64@1.0.0-rc6","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"homepage":"https://github.com/buger/probe#readme","bugs":{"url":"https://github.com/buger/probe/issues"},"os":["linux"],"bin":{"probe":"probe"},"cpu":["x64"],"dist":{"shasum":"a50964b8b4d1a100f039c0571a2d7abb892bc77b","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-1.0.0-rc6.tgz","fileCount":4,"integrity":"sha512-kY8bjSIlCl+A+16Fe4N3yEppCO8AdWI6edIViAy+JsqpgzddNmjwc54fwvlFQb+Hk11X8XDMLwA5wMmRyuhw2Q==","signatures":[{"sig":"MEYCIQCIyQnzSQK/tw9riglzAmLix//C0dMM4qRdEffdw49g/AIhAI+p7BOb3XxDJULPJY/wQjVSM2Lt5IkubLIeuxoKwa4u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40924282},"gitHead":"de9d7bd23e9938a92d687d0cabd157b964d0a869","_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"repository":{"url":"git+https://github.com/buger/probe.git","type":"git"},"_npmVersion":"10.8.2","description":"Probe CLI binary for linux-x64","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/probe-linux-x64_1.0.0-rc6_1748580922102_0.4474624165516501","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc7":{"name":"@edmondfrank/probe-linux-x64","version":"1.0.0-rc7","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","_id":"@edmondfrank/probe-linux-x64@1.0.0-rc7","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"homepage":"https://github.com/buger/probe#readme","bugs":{"url":"https://github.com/buger/probe/issues"},"os":["linux"],"bin":{"probe":"probe"},"cpu":["x64"],"dist":{"shasum":"51dc9826f5ada784f31b3765d1ea6c9190031243","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-1.0.0-rc7.tgz","fileCount":4,"integrity":"sha512-h9lO6CezIJsc+BffS6X6z5bIvVlkPCFgU1/nf6+yUqmHHLC2p29vWPBoCtcVuW4OJACaKCGktIB1FkZqXfzF4A==","signatures":[{"sig":"MEYCIQCEczcEBNIIktWDr4XHtpYlXQaVvyCnb4GnLEGcH/Wc2AIhAMVsKujaDOVy2OTJbwmTCqtFGgpUnBqtb9c210u5t2U6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40948650},"gitHead":"1dc917bf16e685fb7c7a6eb4d57a1f4406686235","_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"repository":{"url":"git+https://github.com/buger/probe.git","type":"git"},"_npmVersion":"10.8.2","description":"Probe CLI binary for linux-x64","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/probe-linux-x64_1.0.0-rc7_1748583013928_0.8292382617283258","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-rc1":{"name":"@edmondfrank/probe-linux-x64","version":"0.7.0-rc1","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","_id":"@edmondfrank/probe-linux-x64@0.7.0-rc1","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"homepage":"https://github.com/buger/probe#readme","bugs":{"url":"https://github.com/buger/probe/issues"},"os":["linux"],"bin":{"probe":"probe"},"cpu":["x64"],"dist":{"shasum":"91add25446087f274b7d2735fb3a709346ec85e6","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-0.7.0-rc1.tgz","fileCount":4,"integrity":"sha512-oi5u+K260Jh5IMVeaCqG4Uo0Ktn65iLFoZskDe/ykmkEQ9iF5kKVkMcm1BNF2P83rjXO5UvO9OIi+c1d71ti8g==","signatures":[{"sig":"MEUCIDyqUKNzxAH78YgTowlAf42strEcuZCXxadBWwOLx1F7AiEAs3p6N3ZPmIlPw2KSFqqCpZ3SOmi+mN0wHc0q2wJGASE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44996242},"gitHead":"208e7d5501ba402869dd374d886e50025535addb","_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"repository":{"url":"git+https://github.com/buger/probe.git","type":"git"},"_npmVersion":"10.8.2","description":"Probe CLI binary for linux-x64","directories":{},"_nodeVersion":"20.19.4","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/probe-linux-x64_0.7.0-rc1_1755080380258_0.41387399003383885","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-rc1":{"name":"@edmondfrank/probe-linux-x64","version":"1.0.1-rc1","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","_id":"@edmondfrank/probe-linux-x64@1.0.1-rc1","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"homepage":"https://github.com/buger/probe#readme","bugs":{"url":"https://github.com/buger/probe/issues"},"os":["linux"],"bin":{"probe":"probe"},"cpu":["x64"],"dist":{"shasum":"877349f948fb249b894f988bf3c1047238897fea","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-1.0.1-rc1.tgz","fileCount":4,"integrity":"sha512-4QQ0SXpbXxsqnOOe3JL9rNRdQ3Trf4w0zJsvA/JQj+Jxe/v6rDg0fmnPzwaRAFPoNUbqcRj8daR9VTGUdZDBmQ==","signatures":[{"sig":"MEUCIAGYIke6qZpH3uNFycoD1K1fU2pDdCGD4Z4LnUDIdkO3AiEAz5Q/VFDYRbPhl8SppOjDkaFGnnxHhjWFPA/yKT+AMgs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44996242},"gitHead":"208e7d5501ba402869dd374d886e50025535addb","_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"repository":{"url":"git+https://github.com/buger/probe.git","type":"git"},"_npmVersion":"10.8.2","description":"Probe CLI binary for linux-x64","directories":{},"_nodeVersion":"20.19.4","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/probe-linux-x64_1.0.1-rc1_1755155389950_0.6572489385456923","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-rc2":{"name":"@edmondfrank/probe-linux-x64","version":"1.0.1-rc2","description":"Probe CLI binary for linux-x64","repository":{"type":"git","url":"git+https://github.com/buger/probe.git"},"keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"author":{"name":"buger"},"license":"ISC","bugs":{"url":"https://github.com/buger/probe/issues"},"homepage":"https://github.com/buger/probe#readme","os":["linux"],"cpu":["x64"],"bin":{"probe":"probe"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"702b7cb01a619841478548d69aef4c73bec5f88d","_id":"@edmondfrank/probe-linux-x64@1.0.1-rc2","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-Px2OHK1hRabDWlESdb3P371Ofc/+G1TufpZ0qoac2k/bRci5gYVq90axMHVZ0schl9r8U1FENvjgY/AodcFI6g==","shasum":"0aed51a329344252746b3db98e91f3e240826084","tarball":"https://registry.npmjs.org/@edmondfrank/probe-linux-x64/-/probe-linux-x64-1.0.1-rc2.tgz","fileCount":4,"unpackedSize":60528070,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGu41EQtAOYvz2Brl+k/Cr2+MhTx70ICpIje3bXC3UdGAiB2Puze80vo+v6oi9pIwUEP4DzuYBNak16Fy9ONvFJN5Q=="}]},"_npmUser":{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"},"directories":{},"maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/probe-linux-x64_1.0.1-rc2_1780384654996_0.06663441258852365"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-29T11:22:28.294Z","modified":"2026-06-02T07:17:35.431Z","1.0.0":"2025-05-29T11:22:28.671Z","1.0.0-rc2":"2025-05-29T11:36:45.066Z","1.0.0-rc3":"2025-05-29T13:19:48.760Z","1.0.0-rc4":"2025-05-29T13:51:33.235Z","1.0.0-rc5":"2025-05-30T03:13:39.684Z","1.0.0-rc6":"2025-05-30T04:55:22.380Z","1.0.0-rc7":"2025-05-30T05:30:14.223Z","0.7.0-rc1":"2025-08-13T10:19:40.497Z","1.0.1-rc1":"2025-08-14T07:09:50.203Z","1.0.1-rc2":"2026-06-02T07:17:35.325Z"},"bugs":{"url":"https://github.com/buger/probe/issues"},"author":{"name":"buger"},"license":"ISC","homepage":"https://github.com/buger/probe#readme","keywords":["probe","code-search","search","ast","code-analysis","ai","llm","tools"],"repository":{"type":"git","url":"git+https://github.com/buger/probe.git"},"description":"Probe CLI binary for linux-x64","maintainers":[{"name":"edmondfrank","email":"edmomdfrank@yahoo.com"}],"readme":"<p align=\"center\">\n  <img src=\"logo.png?2\" alt=\"Probe Logo\" width=\"400\">\n</p>\n\n# Probe\n\n**We read code 10x more than we write it.** Probe is a code and markdown context engine, with a built-in agent, made to work on enterprise-scale codebases.\n\nToday's AI coding tools use a caveman approach: grep some files, read random lines, hope for the best. It works on toy projects. It falls apart on real codebases.\n\n**Probe is a context engine built for reading and reasoning.** It treats your code as code—not text. AST parsing understands structure. Semantic search finds what matters. You get complete, meaningful context in a single call.\n\n**The Probe Agent** is purpose-built for code understanding. It knows how to wield the Probe engine expertly—searching, extracting, and reasoning across your entire codebase. Perfect for spec-driven development, code reviews, onboarding, and any task where understanding comes before writing.\n\n**One Probe call captures what takes other tools 10+ agentic loops**—deeper, cleaner, and far less noise.\n\n---\n\n## Table of Contents\n\n- [Why Probe?](#why-probe)\n- [Quick Start](#quick-start)\n- [Features](#features)\n- [Usage Modes](#usage-modes)\n  - [Probe Agent (MCP)](#probe-agent-mcp)\n  - [Raw MCP Tools](#raw-mcp-tools)\n  - [CLI Agent](#cli-agent)\n  - [Direct CLI Commands](#direct-cli-commands)\n  - [Node.js SDK](#nodejs-sdk)\n- [LLM Script](#llm-script)\n- [Installation](#installation)\n- [Supported Languages](#supported-languages)\n- [Documentation](#documentation)\n- [Environment Variables](#environment-variables)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Why Probe?\n\nMost code search tools fall into two camps: **text-based** (grep, ripgrep) or **embedding-based** (vector search requiring indexing and an embedding model). Probe takes a third path: **AST-aware structural search with zero setup**.\n\n| | grep/ripgrep | Embedding tools (grepai, Octocode) | Probe |\n|---|---|---|---|\n| **Setup time** | None | Minutes (indexing + embedding service) | None |\n| **Code understanding** | Text only | Text chunks (can split mid-function) | AST-aware (returns complete functions/classes) |\n| **Search method** | Regex | Vector similarity | Elasticsearch-style boolean queries + BM25 |\n| **Result quality** | Line fragments | ~512-char chunks | Complete semantic code blocks |\n| **Ranking** | None (line order) | Cosine similarity | BM25/TF-IDF/Hybrid with SIMD acceleration |\n| **External dependencies** | None | Embedding API (Ollama/OpenAI) | None |\n| **Token awareness** | No | Partial | Yes (`--max-tokens`, session dedup) |\n| **Works offline** | Yes | Only with local model | Always |\n| **AI agent integration** | None | MCP server | Full agent loop + MCP + Vercel AI SDK |\n\n### The key insight: AI agents don't need embedding search\n\nEmbedding-based tools solve vocabulary mismatch -- finding \"authentication\" when the code says `verify_credentials`. But when an AI agent is the consumer, **the LLM already handles this**:\n\n```\nUser: \"find the authentication logic\"\n  -> LLM generates: probe search \"verify_credentials OR authenticate OR login OR auth_handler\"\n  -> Probe returns complete AST blocks in milliseconds\n```\n\nThe LLM translates intent into precise boolean queries. Probe gives it a powerful query language (`AND`, `OR`, `+required`, `-excluded`, `\"exact phrases\"`, `ext:rs`, `lang:python`) purpose-built for this. Combined with session dedup, the agent can run 3-4 rapid searches and cover more ground than a single embedding query -- faster, deterministic, and with zero setup cost.\n\n---\n\n## Quick Start\n\n### Option 1: Probe Agent via MCP (Recommended)\n\nOur built-in agent natively integrates with Claude Code, using its authentication—no extra API keys needed.\n\nAdd to `~/.claude/claude_desktop_config.json`:\n```json\n{\n  \"mcpServers\": {\n    \"probe\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@probelabs/probe@latest\", \"agent\", \"--mcp\"]\n    }\n  }\n}\n```\n\nThe Probe Agent is purpose-built to read and reason about code. It piggybacks on Claude Code's auth (or Codex auth), or works with any model via your own API key (e.g., `GOOGLE_API_KEY`).\n\n### Option 2: Raw Probe Tools via MCP\n\nIf you prefer direct access to search/query/extract tools without the agent layer:\n\n```json\n{\n  \"mcpServers\": {\n    \"probe\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@probelabs/probe@latest\", \"mcp\"]\n    }\n  }\n}\n```\n\n### Option 3: Direct CLI (No MCP)\n\nUse Probe directly from your terminal—no AI editor required:\n\n```bash\n# Semantic search with Elasticsearch syntax\nnpx -y @probelabs/probe search \"authentication AND login\" ./src\n\n# Extract code block at line 42\nnpx -y @probelabs/probe extract src/main.rs:42\n\n# AST pattern matching\nnpx -y @probelabs/probe query \"fn $NAME($$$) -> Result<$RET>\" --language rust\n```\n\n### Option 4: CLI Agent\n\nAsk questions about any codebase directly from your terminal:\n\n```bash\n# One-shot question (works with any LLM provider)\nnpx -y @probelabs/probe@latest agent \"How is authentication implemented?\"\n\n# With code editing capabilities\nnpx -y @probelabs/probe@latest agent \"Refactor the login function\" --allow-edit\n```\n\n---\n\n## Features\n\n- **Code-Aware**: Tree-sitter AST parsing understands your code's actual structure\n- **Semantic Search**: Elasticsearch-style queries (`AND`, `OR`, `NOT`, phrases, filters)\n- **Complete Context**: Returns entire functions, classes, or structs -- not text chunks that break mid-function\n- **Zero Indexing**: Instant results on any codebase. No embedding models, no vector databases, no setup\n- **Deterministic**: Same query always returns the same results. No model variance, no stale indexes\n- **Fully Local**: Your code never leaves your machine. No API calls for search\n- **Blazing Fast**: SIMD-accelerated pattern matching + ripgrep scanning + rayon parallelism\n- **Smart Ranking**: BM25, TF-IDF, and hybrid algorithms with optional BERT reranking\n- **Token-Aware**: `--max-tokens` budget, session-based dedup to avoid repeating context\n- **Built-in Agent**: Multi-provider (Anthropic, OpenAI, Google, Bedrock) with retry, fallback, and context compaction\n- **Multi-Language**: Rust, Python, JavaScript, TypeScript, Go, C/C++, Java, Ruby, PHP, Swift, Solidity, Crystal, C#, and more\n\n---\n\n## Usage Modes\n\n### Probe Agent (MCP)\n\nThe recommended way to use Probe with AI editors. The Probe Agent is a specialized coding assistant that reasons about your code—not just pattern matches.\n\n```json\n{\n  \"mcpServers\": {\n    \"probe\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@probelabs/probe@latest\", \"agent\", \"--mcp\"]\n    }\n  }\n}\n```\n\n**Why use the agent?**\n- Purpose-built to understand and reason about code\n- Piggybacks on Claude Code / Codex authentication (or use your own API key)\n- Smarter multi-step reasoning for complex questions\n- Built-in code editing, task delegation, and more\n\n**Agent options:**\n\n| Option | Description |\n|--------|-------------|\n| `--path <dir>` | Search directory (default: current) |\n| `--provider <name>` | AI provider: `anthropic`, `openai`, `google` |\n| `--model <name>` | Override model name |\n| `--prompt <type>` | Persona: `code-explorer`, `engineer`, `code-review`, `architect` |\n| `--allow-edit` | Enable code modification |\n| `--enable-delegate` | Enable task delegation to subagents |\n| `--enable-bash` | Enable bash command execution |\n| `--max-iterations <n>` | Max tool iterations (default: 30) |\n\n---\n\n### Raw MCP Tools\n\nDirect access to Probe's search, query, and extract tools—without the agent layer. Use this when you want your AI editor to call Probe tools directly.\n\n```json\n{\n  \"mcpServers\": {\n    \"probe\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@probelabs/probe@latest\", \"mcp\"]\n    }\n  }\n}\n```\n\n**Available tools:**\n- `search` - Semantic code search with Elasticsearch-style queries\n- `query` - AST-based structural pattern matching\n- `extract` - Extract code blocks by line number or symbol name\n- `symbols` - List all symbols in a file (functions, classes, constants) with line numbers\n\n---\n\n### CLI Agent\n\nRun the Probe Agent directly from your terminal:\n\n```bash\n# One-shot question\nnpx -y @probelabs/probe@latest agent \"How does the ranking algorithm work?\"\n\n# Specify search path\nnpx -y @probelabs/probe@latest agent \"Find API endpoints\" --path ./src\n\n# Enable code editing\nnpx -y @probelabs/probe@latest agent \"Add error handling to login()\" --allow-edit\n\n# Use custom persona\nnpx -y @probelabs/probe@latest agent \"Review this code\" --prompt code-review\n```\n\n---\n\n### Direct CLI Commands\n\nFor scripting and direct code analysis.\n\n#### Search Command\n\n```bash\nprobe search <PATTERN> [PATH] [OPTIONS]\n```\n\n**Examples:**\n```bash\n# Basic search\nprobe search \"authentication\" ./src\n\n# Boolean operators (Elasticsearch syntax)\nprobe search \"error AND handling\" ./\nprobe search \"login OR auth\" ./src\nprobe search \"database NOT sqlite\" ./\n\n# Search hints (file filters)\nprobe search \"function AND ext:rs\" ./           # Only .rs files\nprobe search \"class AND file:src/**/*.py\" ./    # Python files in src/\nprobe search \"error AND dir:tests\" ./           # Files in tests/\n\n# Limit results for AI context windows\nprobe search \"API\" ./ --max-tokens 10000\n```\n\n**Key options:**\n\n| Option | Description |\n|--------|-------------|\n| `--max-tokens <n>` | Limit total tokens returned |\n| `--max-results <n>` | Limit number of results |\n| `--reranker <algo>` | Ranking: `bm25`, `tfidf`, `hybrid`, `hybrid2` |\n| `--allow-tests` | Include test files |\n| `--format <fmt>` | Output: `markdown`, `json`, `xml` |\n\n#### Extract Command\n\n```bash\nprobe extract <FILES> [OPTIONS]\n```\n\n**Examples:**\n```bash\n# Extract function at line 42\nprobe extract src/main.rs:42\n\n# Extract by symbol name\nprobe extract src/main.rs#authenticate\n\n# Extract line range\nprobe extract src/main.rs:10-50\n\n# From compiler output\ngo test | probe extract\n```\n\n#### Symbols Command\n\n```bash\nprobe symbols <FILES> [OPTIONS]\n```\n\n**Examples:**\n```bash\n# List symbols in a file\nprobe symbols src/main.rs\n\n# JSON output for programmatic use\nprobe symbols src/main.rs --format json\n\n# Multiple files\nprobe symbols src/main.rs src/lib.rs\n```\n\n#### Query Command (AST Patterns)\n\n```bash\nprobe query <PATTERN> [PATH] [OPTIONS]\n```\n\n**Examples:**\n```bash\n# Find all async functions in Rust\nprobe query \"async fn $NAME($$$)\" --language rust\n\n# Find React components\nprobe query \"function $NAME($$$) { return <$$$> }\" --language javascript\n\n# Find Python classes with specific method\nprobe query \"class $CLASS: def __init__($$$)\" --language python\n```\n\n---\n\n### Node.js SDK\n\nUse Probe programmatically in your applications.\n\n```javascript\nimport { ProbeAgent } from '@probelabs/probe/agent';\n\n// Create agent\nconst agent = new ProbeAgent({\n  path: './src',\n  provider: 'anthropic'\n});\n\nawait agent.initialize();\n\n// Ask questions\nconst response = await agent.answer('How does authentication work?');\nconsole.log(response);\n\n// Get token usage\nconsole.log(agent.getTokenUsage());\n```\n\n**Direct functions:**\n\n```javascript\nimport { search, extract, query, symbols } from '@probelabs/probe';\n\n// Semantic search\nconst results = await search({\n  query: 'authentication',\n  path: './src',\n  maxTokens: 10000\n});\n\n// Extract code\nconst code = await extract({\n  files: ['src/auth.ts:42'],\n  format: 'markdown'\n});\n\n// List symbols in a file\nconst fileSymbols = await symbols({\n  files: ['src/auth.ts']\n});\n\n// AST pattern query\nconst matches = await query({\n  pattern: 'async function $NAME($$$)',\n  path: './src',\n  language: 'typescript'\n});\n```\n\n**Vercel AI SDK integration:**\n\n```javascript\nimport { tools } from '@probelabs/probe';\n\nconst { searchTool, queryTool, extractTool } = tools;\n\n// Use with Vercel AI SDK\nconst result = await generateText({\n  model: anthropic('claude-sonnet-4-6'),\n  tools: {\n    search: searchTool({ defaultPath: './src' }),\n    query: queryTool({ defaultPath: './src' }),\n    extract: extractTool({ defaultPath: './src' })\n  },\n  prompt: 'Find authentication code'\n});\n```\n\n---\n\n## LLM Script\n\nProbe Agent can use the `execute_plan` tool to run deterministic, multi-step code analysis tasks. LLM Script is a sandboxed JavaScript DSL where the AI generates executable plans combining search, extraction, and LLM reasoning in a single pipeline.\n\n```javascript\n// AI-generated LLM Script example (await is auto-injected, don't write it)\nconst files = search(\"authentication login\")\nconst chunks = chunk(files)\nconst analysis = map(chunks, c => LLM(\"Summarize auth patterns\", c))\nreturn analysis.join(\"\\n\")\n```\n\n**Key features:**\n- **Agent integration** - Probe Agent calls `execute_plan` tool to run scripts\n- **Auto-await** - Async calls are automatically awaited (don't write `await`)\n- **All tools available** - `search()`, `query()`, `extract()`, `LLM()`, `map()`, `chunk()`, plus any MCP tools\n- **Sandboxed execution** - Safe, isolated JavaScript environment with timeout protection\n\nSee the full [LLM Script Documentation](./docs/llm-script.md) for syntax and examples.\n\n---\n\n## Installation\n\n### NPM (Recommended)\n\n```bash\nnpm install -g @probelabs/probe\n```\n\n### curl (macOS/Linux)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/probelabs/probe/main/install.sh | bash\n```\n\n### PowerShell (Windows)\n\n```powershell\niwr -useb https://raw.githubusercontent.com/probelabs/probe/main/install.ps1 | iex\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/probelabs/probe.git\ncd probe\ncargo build --release\ncargo install --path .\n```\n\n---\n\n## Supported Languages\n\n| Language | Extensions |\n|----------|------------|\n| Rust | `.rs` |\n| JavaScript/JSX | `.js`, `.jsx` |\n| TypeScript/TSX | `.ts`, `.tsx` |\n| Python | `.py` |\n| Go | `.go` |\n| C/C++ | `.c`, `.h`, `.cpp`, `.cc`, `.hpp` |\n| Java | `.java` |\n| Ruby | `.rb` |\n| PHP | `.php` |\n| Swift | `.swift` |\n| Solidity | `.sol` |\n| Crystal | `.cr` |\n| C# | `.cs` |\n| Markdown | `.md` |\n\n---\n\n## Documentation\n\nFull documentation available at [probelabs.com/probe](https://probelabs.com/probe) or browse locally in [`docs/`](./docs/).\n\n### Getting Started\n- [Quick Start](./docs/quick-start.md) - Get up and running in 5 minutes\n- [Installation](./docs/installation.md) - NPM, curl, Docker, and building from source\n- [Features Overview](./docs/features.md) - Core capabilities\n\n### Probe CLI\n- [Search Command](./docs/probe-cli/search.md) - Elasticsearch-style semantic search\n- [Extract Command](./docs/probe-cli/extract.md) - Extract code blocks with full AST context\n- [Symbols Command](./docs/probe-cli/symbols.md) - List all symbols in files with line numbers\n- [Query Command](./docs/probe-cli/query.md) - AST-based structural pattern matching\n- [CLI Reference](./docs/probe-cli/cli-reference.md) - Complete command-line reference\n\n### LSP & Indexing\n- [LSP Features](./docs/lsp-features.md) - What `--lsp` adds for semantic code intelligence\n- [LSP Quick Reference](./docs/lsp-quick-reference.md) - Day-to-day LSP command cheatsheet\n- [Indexing Overview](./docs/indexing-overview.md) - Project indexing concepts and workflow\n- [Indexing CLI Reference](./docs/indexing-cli-reference.md) - `probe lsp index*` command reference\n\nLSP capabilities include call hierarchy enrichment (`extract --lsp`), direct symbol operations (`probe lsp call definition|references|hover|...`), daemon diagnostics (`probe lsp logs --analyze`), and workspace indexing (`probe lsp index`, `probe lsp index-status`).\n\n### Probe Agent\n- [Agent Overview](./docs/probe-agent/overview.md) - What is Probe Agent and when to use it\n- [API Reference](./docs/probe-agent/sdk/api-reference.md) - ProbeAgent class documentation\n- [Node.js SDK](./docs/probe-agent/sdk/nodejs-sdk.md) - Full Node.js SDK reference\n- [MCP Integration](./docs/probe-agent/protocols/mcp-integration.md) - Editor integration guide\n- [LLM Script](./docs/llm-script.md) - Programmable orchestration DSL\n\n### Guides & Reference\n- [Query Patterns](./docs/guides/query-patterns.md) - Effective search strategies\n- [How Probe Compares](./docs/reference/comparison.md) - vs embedding search, knowledge graphs, LSP tools\n- [Architecture](./docs/reference/architecture.md) - System design and internals\n- [Environment Variables](./docs/reference/environment-variables.md) - All configuration options\n- [FAQ](./docs/reference/faq.md) - Frequently asked questions\n\n---\n\n## Environment Variables\n\n```bash\n# AI Provider Keys\nANTHROPIC_API_KEY=sk-ant-...\nOPENAI_API_KEY=sk-...\nGOOGLE_API_KEY=...\n\n# Provider Selection\nFORCE_PROVIDER=anthropic\nMODEL_NAME=claude-sonnet-4-6\n\n# Custom Endpoints\nANTHROPIC_API_URL=https://your-proxy.com\nOPENAI_API_URL=https://your-proxy.com\n\n# Debug\nDEBUG=1\n```\n\n---\n\n## Contributing\n\nWe welcome contributions! See our [Contributing Guide](https://github.com/probelabs/probe/blob/main/CONTRIBUTING.md).\n\nFor questions or support:\n- [GitHub Issues](https://github.com/probelabs/probe/issues)\n- [Discord Community](https://discord.gg/hBN4UsTZ)\n\n---\n\n## License\n\n---\n\nFor questions or contributions, please open an issue on [GitHub](https://github.com/probelabs/probe/issues) or join our [Discord community](https://discord.gg/hBN4UsTZ) for discussions and support. Happy coding—and searching!\n","readmeFilename":"README.md"}