Metadata-Version: 2.5
Name: attocode
Version: 0.2.30
Summary: Production AI coding agent
Project-URL: Homepage, https://github.com/eren23/attocode
Project-URL: Repository, https://github.com/eren23/attocode
Project-URL: Bug Tracker, https://github.com/eren23/attocode/issues
Project-URL: Changelog, https://github.com/eren23/attocode/blob/main/CHANGELOG.md
Author: eren23
License-Expression: LicenseRef-Attocode
License-File: LICENSE
Keywords: ai,cli,coding-agent,developer-tools,llm,mcp,tui
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Code Generators
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: aiosqlite>=0.20.0
Requires-Dist: attocode-code-intel<0.2,>=0.1.0
Requires-Dist: click>=8.1.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: matplotlib>=3.10.8
Requires-Dist: mcp<2,>=1.26
Requires-Dist: numpy>=2.4.2
Requires-Dist: pathspec>=0.12.0
Requires-Dist: psutil>=6.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0.0
Requires-Dist: structlog>=24.1
Requires-Dist: tenacity>=9.0
Requires-Dist: textual>=1.0.0
Requires-Dist: tiktoken>=0.7.0
Requires-Dist: tomli-w>=1.0
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.40; extra == 'anthropic'
Provides-Extra: code-intel
Requires-Dist: fastapi>=0.115; extra == 'code-intel'
Requires-Dist: networkx>=3.0; extra == 'code-intel'
Requires-Dist: python-multipart>=0.0.18; extra == 'code-intel'
Requires-Dist: uvicorn[standard]>=0.34; extra == 'code-intel'
Provides-Extra: dev
Requires-Dist: ast-grep-cli>=0.42; extra == 'dev'
Requires-Dist: bcrypt>=4.0; extra == 'dev'
Requires-Dist: bump-my-version>=0.28; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.14; extra == 'dev'
Requires-Dist: pytest-textual-snapshot>=1.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: python-jose[cryptography]>=3.3; extra == 'dev'
Requires-Dist: respx>=0.22; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Requires-Dist: sqlalchemy[asyncio]>=2.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
Requires-Dist: mkdocs>=1.6; extra == 'docs'
Requires-Dist: pymdown-extensions>=10.0; extra == 'docs'
Provides-Extra: full
Requires-Dist: anthropic>=0.40; extra == 'full'
Requires-Dist: fastapi>=0.115; extra == 'full'
Requires-Dist: networkx>=3.0; extra == 'full'
Requires-Dist: openai>=1.50; extra == 'full'
Requires-Dist: python-multipart>=0.0.18; extra == 'full'
Requires-Dist: sentence-transformers>=3.0; extra == 'full'
Requires-Dist: tree-sitter-bash; extra == 'full'
Requires-Dist: tree-sitter-c; extra == 'full'
Requires-Dist: tree-sitter-c-sharp; extra == 'full'
Requires-Dist: tree-sitter-cpp; extra == 'full'
Requires-Dist: tree-sitter-css; extra == 'full'
Requires-Dist: tree-sitter-elixir; extra == 'full'
Requires-Dist: tree-sitter-go; extra == 'full'
Requires-Dist: tree-sitter-hcl; extra == 'full'
Requires-Dist: tree-sitter-html; extra == 'full'
Requires-Dist: tree-sitter-java; extra == 'full'
Requires-Dist: tree-sitter-javascript; extra == 'full'
Requires-Dist: tree-sitter-json; extra == 'full'
Requires-Dist: tree-sitter-kotlin; extra == 'full'
Requires-Dist: tree-sitter-lua; extra == 'full'
Requires-Dist: tree-sitter-php; extra == 'full'
Requires-Dist: tree-sitter-python; extra == 'full'
Requires-Dist: tree-sitter-ruby; extra == 'full'
Requires-Dist: tree-sitter-rust; extra == 'full'
Requires-Dist: tree-sitter-scala; extra == 'full'
Requires-Dist: tree-sitter-swift; extra == 'full'
Requires-Dist: tree-sitter-toml; extra == 'full'
Requires-Dist: tree-sitter-yaml; extra == 'full'
Requires-Dist: tree-sitter-zig; extra == 'full'
Requires-Dist: tree-sitter<0.26,>=0.23; extra == 'full'
Requires-Dist: uvicorn[standard]>=0.34; extra == 'full'
Requires-Dist: watchfiles>=1.0; extra == 'full'
Provides-Extra: graph
Requires-Dist: networkx>=3.0; extra == 'graph'
Provides-Extra: openai
Requires-Dist: openai>=1.50; extra == 'openai'
Provides-Extra: semantic
Requires-Dist: sentence-transformers>=3.0; extra == 'semantic'
Provides-Extra: semantic-nomic
Requires-Dist: einops; extra == 'semantic-nomic'
Requires-Dist: sentence-transformers>=3.0; extra == 'semantic-nomic'
Provides-Extra: service
Requires-Dist: alembic>=1.14; extra == 'service'
Requires-Dist: arq>=0.26; extra == 'service'
Requires-Dist: asyncpg>=0.30; extra == 'service'
Requires-Dist: bcrypt>=4.0; extra == 'service'
Requires-Dist: cryptography>=41.0; extra == 'service'
Requires-Dist: fastapi>=0.115; extra == 'service'
Requires-Dist: httpx-oauth>=0.15; extra == 'service'
Requires-Dist: networkx>=3.0; extra == 'service'
Requires-Dist: pgvector>=0.3; extra == 'service'
Requires-Dist: pydantic-settings>=2.0; extra == 'service'
Requires-Dist: pygit2>=1.14; extra == 'service'
Requires-Dist: python-jose[cryptography]>=3.3; extra == 'service'
Requires-Dist: python-multipart>=0.0.18; extra == 'service'
Requires-Dist: redis[hiredis]>=5.0; extra == 'service'
Requires-Dist: sqlalchemy[asyncio]>=2.0; extra == 'service'
Requires-Dist: uvicorn[standard]>=0.34; extra == 'service'
Provides-Extra: tree-sitter
Requires-Dist: tree-sitter-bash; extra == 'tree-sitter'
Requires-Dist: tree-sitter-c; extra == 'tree-sitter'
Requires-Dist: tree-sitter-c-sharp; extra == 'tree-sitter'
Requires-Dist: tree-sitter-cpp; extra == 'tree-sitter'
Requires-Dist: tree-sitter-css; extra == 'tree-sitter'
Requires-Dist: tree-sitter-elixir; extra == 'tree-sitter'
Requires-Dist: tree-sitter-go; extra == 'tree-sitter'
Requires-Dist: tree-sitter-hcl; extra == 'tree-sitter'
Requires-Dist: tree-sitter-html; extra == 'tree-sitter'
Requires-Dist: tree-sitter-java; extra == 'tree-sitter'
Requires-Dist: tree-sitter-javascript; extra == 'tree-sitter'
Requires-Dist: tree-sitter-json; extra == 'tree-sitter'
Requires-Dist: tree-sitter-kotlin; extra == 'tree-sitter'
Requires-Dist: tree-sitter-lua; extra == 'tree-sitter'
Requires-Dist: tree-sitter-php; extra == 'tree-sitter'
Requires-Dist: tree-sitter-python; extra == 'tree-sitter'
Requires-Dist: tree-sitter-ruby; extra == 'tree-sitter'
Requires-Dist: tree-sitter-rust; extra == 'tree-sitter'
Requires-Dist: tree-sitter-scala; extra == 'tree-sitter'
Requires-Dist: tree-sitter-swift; extra == 'tree-sitter'
Requires-Dist: tree-sitter-toml; extra == 'tree-sitter'
Requires-Dist: tree-sitter-yaml; extra == 'tree-sitter'
Requires-Dist: tree-sitter-zig; extra == 'tree-sitter'
Requires-Dist: tree-sitter<0.26,>=0.23; extra == 'tree-sitter'
Provides-Extra: tree-sitter-all
Requires-Dist: tree-sitter-language-pack>=0.6; extra == 'tree-sitter-all'
Provides-Extra: watch
Requires-Dist: watchfiles>=1.0; extra == 'watch'
Description-Content-Type: text/markdown

# Attocode Intelligence

Codebase understanding for **Codex, Claude Code, Cursor, and other MCP clients**. Run it on your working tree, or connect a team to a self-hosted service that analyzes committed repositories.

The intelligence engine now lives in `packages/code-intel` and ships as **`attocode-code-intel`**, independently of the legacy coding agent. AST navigation and keyword search need no model API key. Local embedding search, graph analysis, and team hosting are optional extras.

## Get started from this checkout

Requires Python 3.12+ and Git.

```sh
uv tool install ./packages/code-intel
cd /path/to/your/project
attocode-code-intel init --client all
attocode-code-intel doctor --client codex
```

Use `--client claude` or `--client cursor` to configure one client. `init` installs the MCP connection and managed agent instructions, preserving unrelated configuration. Restart your agent after installation. Project-level Codex configuration requires a trusted project; Claude Code may ask you to enable the project MCP server.

For an installation shared across repositories:

```sh
attocode-code-intel init --global --client codex
attocode-code-intel doctor --global --client codex --project /path/to/repo
```

Global servers select the explicit `workspace`, an advertised MCP root, or the repository containing their working directory. If a client supplies multiple roots, the agent must select one. Cursor's automatic instruction file is project-scoped even when its server connection is global; run `init --client cursor` in each project where you want those rules.

After publishing the standalone distribution, the installation command will be `uv tool install attocode-code-intel`. The source installation above works before that release.

## Everyday use

Ask your agent to start with `bootstrap(task_hint="what you are changing")`. It receives relevant code, structure, recalled knowledge, and index coverage within a token budget. Follow with symbol search, references, dependencies, impact analysis, and test suggestions. `review_change` reports structured findings and identifies failed analysis passes.

Local file watchers and per-operation filesystem checks pick up edits, new files, deletions, and import-only changes. `notify_file_changed` is also available. Learnings persist in the existing `.attocode/cache/memory.db`, so different agents can reuse them. Use `record_learning`, `recall`, `update_learning`, and `learning_feedback` to maintain knowledge.

New installations use the compact **daily** tool profile. `init --profile full` exposes the complete local catalog, including rules and security analysis, history, architecture, retrieval pins, snapshots, overlays, and cache maintenance. Direct server invocations default to `full` for compatibility. `capabilities` reports the actual catalog and optional enhancements.

## Teams and remote agents

[Self-hosting and migration](docs/intelligence.md) covers PostgreSQL, Redis, workers, authentication, and the dashboard. Native Streamable HTTP MCP is served at `/mcp/`. The dashboard provides connection snippets and knowledge editing.

```sh
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. Shared knowledge is stored in PostgreSQL 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:

```sh
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.

## Package and development

| Component | Location | Status |
|---|---|---|
| Intelligence engine, MCP, REST, workers | `packages/code-intel/src/attocode_intel` | Active product |
| Dashboard | `frontend` | Active product |
| Agent, TUI, swarm | `src/attocode`, `src/attoswarm` | Frozen legacy |
| Old intelligence imports | `attocode.code_intel`, selected context modules | Compatibility aliases |

```sh
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
```

The standalone workflow tests Python 3.12/3.13, real stdio and HTTP MCP, repository isolation, PostgreSQL knowledge operations, budgets, and wheel independence. Releases use `intel-v*` tags; the legacy agent keeps its separate release workflow.

[Product and operations guide](docs/intelligence.md) · [Generated tool catalog](docs/intelligence-tools.md) · [Legacy agent documentation](docs/legacy-agent.md) · [MIT license](LICENSE)
