attocode-code-intel
Local code search and navigation for coding agents and for people. It runs as an MCP server for Codex, Claude Code, Cursor and other MCP clients, and as a command in your terminal. It needs no model, no API key and no network.
Status: beta. We measured the search quality (see What we measured). We have not shown that it makes agents faster or more accurate.
Quickstart
You need Python 3.12 or later and Git.
uv tool install attocode-code-intel
cd /path/to/your/project
attocode-code-intel init
Then restart your agent. init configures Codex, Claude Code and Cursor. Use --client claude, --client codex or --client cursor for one client. Codex needs a trusted project for a project configuration. Claude Code can ask you to enable the project MCP server.
To check the setup, run attocode-code-intel doctor. It starts the configured server, calls two tools and shows the result for each client.
For other clients (VS Code, Zed, Windsurf, Claude Desktop and more), run attocode-code-intel install <target>. attocode-code-intel commands lists the targets.
To use the latest source, install from a clone of this repository: uv tool install /path/to/attocode/packages/code-intel.
What your agent gets
Version 0.1.7 also provides changes and trace commands: investigate a diff,
follow source-backed caller paths, export JSON/Markdown, and check or refresh saved
evidence. MCP equivalents change_context and trace_flow are local full-profile
tools. Version 0.1.8 adds exact file/symbol selection and bounded changed-class
summaries, with --class-mode expand for class-wide callers. Version 0.1.9 keeps
Python docstrings and parameter types, and lists impact results nearest first.
Version 0.1.10 shows the best test hit second for "tested" searches, and counts
Swift Tests/ folders as tests. Version 0.1.11 counts more test file names as
tests, such as _test.dart and Perl .t scripts and t/ modules. See the change investigation guide.
The agent sees 16 tools (the daily profile):
| Use | Tools |
|---|---|
| Find code | semantic_search, fast_search, search_symbols, bootstrap, relevant_context |
| Read a symbol | inspect_symbol, symbols, cross_references, call_graph |
| See structure | dependencies, explore_codebase, project_summary |
| Plan a change | impact_analysis, suggest_tests, review_change |
| Check the server | capabilities |
- When the agent knows a symbol,
inspect_symbol(symbol_name="...", task_hint="...")gives the definition, the source, the references and candidate tests in one call. - In an unfamiliar repository,
bootstrap(task_hint="...")finds the relevant code and gives a map. impact_analysisandsuggest_testshelp plan the checks for a change.
For all tools (about 140: rules, security scans, history, snapshots and more), add --profile full to init. The tool catalog lists them. The search details page describes ranking, the response format and the experimental rerankers.
For an experimental local seven-tool surface (0.1.5 or later), use
init --profile lean and restart your client. It advertises bootstrap,
search_symbols, inspect_symbol, semantic_search, impact_analysis,
suggest_tests and capabilities, with conditional routing instructions
and 2,000-token responses. Without file watching, notify_file_changed
is an eighth tool. Advanced tools require a full-profile session.
This opt-in profile has no demonstrated completion benefit; see the
completed pilot.
Commands for people
Run these in your project:
attocode-code-intel query "parse config" # search the code with its own words
attocode-code-intel symbols src/app.py # the symbols of a file
attocode-code-intel symbols --search greet # find a symbol by name
attocode-code-intel impact src/app.py # the files that a change can affect
attocode-code-intel deps src/app.py # what a file imports, and what imports it
attocode-code-intel hotspots # the files with the most risk or complexity
Search matches the words of the code and its paths. It does not use embeddings unless you install the semantic extra.
What we measured
- Search. We ran the 560 issues of Loc-Bench V1, with the full issue as the query. For 53.2% of them, the first five files held all files of the fix (file Acc@5 0.532). On a mix of 10 public benchmarks, file Acc@5 was 0.425. See the first-stage results and the matrix results.
- Agents. In four studies, Claude Code (Sonnet 5.5) named the files to edit for an issue. The server did not raise file Acc@5. Each run with the server cost 1.4 to 2.1 times as much. When the agent could choose, it seldom called the server. See the agent pilot and study R3.
The R6 review study found no demonstrated review benefit. The completed R7 repair pilot also found no demonstrated benefit; its reviewed decision is to stop expansion.
Limits and troubleshooting
- First search. The first tool call starts the index build. A search waits up to 15 seconds for the index. On a large repository, a search can report that the index is warming. Then search again. An empty result during warm-up does not prove that the code is absent.
- Index location. The index is in
.attocode/in your project. When the server makes that folder, it adds a.gitignore, so the index stays out of commits. - What the index reads. The server reads at most 50,000 files and skips files over 1 MB. It skips files that
.gitignoreignores, and folders that start with a dot. It also skips folders nameddist,build,out,output,target,env,tmp,vendororcoverage, and binary, media and lock files. If a build-named folder contains real source, explicitly re-include it with a root.gitignoreentry such as!dist/; discovery and edit refresh honor that override. - Languages. The base install parses Bash, C, C#, C++, CSS, Elixir, Go, HCL, HTML, Java, JavaScript, JSON, Kotlin, Lua, PHP, Python, Ruby, Rust, Scala, Swift, TOML, TypeScript, YAML and Zig. Optional grammars are loaded only when already installed or cached; installing the
tree-sitter-allextra does not trigger grammar downloads during navigation. A slow grammar falls back after a 100 ms parse budget. Static imports and references are partial evidence, not compiler/type resolution. - Test paths. Search and test suggestions recognize conventional test folders and filenames, plus supported Kotlin/Android source sets directly under
src(for examplecommonTest,jvmTest,androidHostTestandandroidDeviceTest). Helpers in those sets count as test code even without a test filename. Custom target or flavor names are not inferred from aTestsuffix alone. Short queries explicitly asking for tests put recognized test files first, preserving order within each group; longer issue descriptions keep source-first behavior. Suggestions can include helpers; verify the actual runnable tests. - Remove the setup. Run
attocode-code-intel init --remove. It restores an entry that existed beforeinit. - Server does not answer. Run
attocode-code-intel doctor. If a client shows "not configured", runinitfor it. After a change, restart the agent. In Claude Code,/mcpshows the server state. - HTTP server.
attocode-code-intel --transport httpneeds thehttpextra. It serves only this computer unless you setATTOCODE_API_KEY.
For one installation for all repositories, use init --global. A global server works on the repository of its working directory, or on the workspace that a tool call names.
Teams and remote agents
Self-hosting and migration covers PostgreSQL, Redis, workers, authentication, and the dashboard. The service serves native Streamable HTTP MCP at /mcp/. The dashboard provides connection snippets and knowledge editing.
attocode-code-intel init --client all --server https://intel.example.com --repo REPOSITORY_UUID
attocode-code-intel doctor --client codex --remote
Set ATTOCODE_API_KEY in the agent's environment. Use intelligence:read for analysis and add intelligence:write for knowledge changes. Every repository operation checks membership and scope before using cached analysis. Results identify repository, source, commit, index coverage, and truncation. PostgreSQL stores shared knowledge with authorship, revision, and file anchors.
Local and remote entries coexist. Remote calls analyze committed branches or explicit revisions. Local edits remain local. To copy a particular learning to your team, review and run an explicit share:
attocode-code-intel share --project . --learning 12 --server https://intel.example.com --repo REPOSITORY_UUID --dry-run
attocode-code-intel share --project . --learning 12 --server https://intel.example.com --repo REPOSITORY_UUID
cross_repo_search searches explicitly selected authorized repositories and retains provenance on each result.
Development
The package is in packages/code-intel of the attocode repository.
uv sync --extra dev --extra code-intel
uv run pytest -c packages/code-intel/pyproject.toml --confcutdir=packages/code-intel/tests packages/code-intel/tests
uv build --package attocode-code-intel
For routine work, use .venv/bin/python -m eval.quality quick (two minutes)
or local (ten minutes). They isolate scratch and caches in a monitored 5 GiB
workspace and report incomplete runs separately from passes. The
quality guide covers pinned multi-language
workflow checks, storage inventory, cleanup and optional CPU cloud batches.
Releases use intel-v* tags (release guide).
Product and operations guide · Tool catalog · Search details · Changelog · MIT license
Metadata
Release files for attocode-code-intel 0.1.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| attocode_code_intel-0.1.11.tar.gz | 8.2 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| attocode_code_intel-0.1.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.2 MB
Release files / attocode_code_intel-0.1.11.tar.gz
| Download URL | attocode_code_intel-0.1.11.tar.gz |
|---|---|
| Size | 8.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ebf636c241e1f75a670e4b83b6d5a64dc18dc6c6139bd2718ff0028f2b3562d5
|
|
BLAKE2b-256 checksum How to use checksums |
f64d1e35173f8b874baaf9584cee19105b123b36b77045e73ec018227ce34df2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / attocode_code_intel-0.1.11-py3-none-any.whl
| Download URL | attocode_code_intel-0.1.11-py3-none-any.whl |
|---|---|
| Size | 943.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
271aa8c623f7c413d2877142f6e7af0a492ca9c17aa6e9c122a351cc43e05b1c
|
|
BLAKE2b-256 checksum How to use checksums |
ffe359a8d35b8fce4572f00955f539f737a63dc670acaa420953f6a3291cfc00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logSecurity for attocode-code-intel 0.1.11
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for attocode_code_intel-0.1.11.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.