Metadata-Version: 2.4
Name: infinidev
Version: 0.14.4
Summary: A terminal-based AI programming tool using agent loops.
Project-URL: Homepage, https://github.com/Infinibay/infinidev
Project-URL: Repository, https://github.com/Infinibay/infinidev.git
Project-URL: Issues, https://github.com/Infinibay/infinidev/issues
Author-email: Andres Borek <andres@infinibay.net>
License-Expression: MIT
License-File: LICENSE.md
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development
Requires-Python: >=3.11
Requires-Dist: chromadb>=1.1.0
Requires-Dist: click>=8.1.7
Requires-Dist: duckduckgo-search>=8.1.0
Requires-Dist: httpx>=0.28.0
Requires-Dist: langdetect>=1.0.9
Requires-Dist: litellm!=1.82.7,!=1.82.8,>=1.81.0
Requires-Dist: numpy>=2.0.0
Requires-Dist: ollama>=0.6.0
Requires-Dist: pillow>=10.0.0
Requires-Dist: prompt-toolkit>=3.0.43
Requires-Dist: pydantic-settings>=2.10.0
Requires-Dist: pydantic>=2.11.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: textual>=8.1.1
Requires-Dist: tokenizers>=0.22.0
Requires-Dist: trafilatura>=2.0.0
Requires-Dist: tree-sitter-bash>=0.23.0
Requires-Dist: tree-sitter-c-sharp>=0.23.1
Requires-Dist: tree-sitter-c>=0.24.1
Requires-Dist: tree-sitter-css>=0.23.0
Requires-Dist: tree-sitter-go>=0.23.0
Requires-Dist: tree-sitter-html>=0.23.0
Requires-Dist: tree-sitter-java>=0.23.0
Requires-Dist: tree-sitter-javascript>=0.23.0
Requires-Dist: tree-sitter-json>=0.24.0
Requires-Dist: tree-sitter-kotlin>=1.1.0
Requires-Dist: tree-sitter-markdown>=0.3.0
Requires-Dist: tree-sitter-php>=0.24.1
Requires-Dist: tree-sitter-python>=0.23.0
Requires-Dist: tree-sitter-regex>=0.24.0
Requires-Dist: tree-sitter-ruby>=0.23.1
Requires-Dist: tree-sitter-rust>=0.23.0
Requires-Dist: tree-sitter-toml>=0.6.0
Requires-Dist: tree-sitter-typescript>=0.23.2
Requires-Dist: tree-sitter-xml>=0.7.0
Requires-Dist: tree-sitter-yaml>=0.6.0
Requires-Dist: tree-sitter>=0.23.0
Requires-Dist: watchfiles>=0.24.0
Requires-Dist: wordfreq>=3.1.1
Requires-Dist: yappi>=1.6.0
Provides-Extra: cuda
Requires-Dist: cupy-cuda12x>=13.0.0; extra == 'cuda'
Provides-Extra: finetune
Requires-Dist: accelerate<2,>=1.10; extra == 'finetune'
Requires-Dist: bitsandbytes<1,>=0.46; (platform_system == 'Linux' and platform_machine == 'x86_64') and extra == 'finetune'
Requires-Dist: ctranslate2<5,>=4.6; extra == 'finetune'
Requires-Dist: datasets<4.4,>4.1; extra == 'finetune'
Requires-Dist: deepspeed<1,>=0.17; (platform_system == 'Linux') and extra == 'finetune'
Requires-Dist: peft<1,>=0.17; extra == 'finetune'
Requires-Dist: sacremoses<1,>=0.1; extra == 'finetune'
Requires-Dist: sentencepiece<1,>=0.2; extra == 'finetune'
Requires-Dist: torch<3,>=2.7; extra == 'finetune'
Requires-Dist: transformers<5,>=4.57.1; extra == 'finetune'
Provides-Extra: finetune-unsloth
Requires-Dist: datasets<4.4,>4.1; extra == 'finetune-unsloth'
Requires-Dist: torch<3,>=2.7; extra == 'finetune-unsloth'
Requires-Dist: transformers<5,>=4.57.1; extra == 'finetune-unsloth'
Requires-Dist: trl<2,>=0.24; extra == 'finetune-unsloth'
Requires-Dist: unsloth<2027,>=2026.3.17; (platform_system == 'Linux' and platform_machine == 'x86_64') and extra == 'finetune-unsloth'
Provides-Extra: mnn
Requires-Dist: mnn>=3.5.0; extra == 'mnn'
Requires-Dist: transformers<5,>=4.40; extra == 'mnn'
Description-Content-Type: text/markdown

# Infinidev

[![PyPI](https://img.shields.io/pypi/v/infinidev.svg)](https://pypi.org/project/infinidev/)
[![Python](https://img.shields.io/pypi/pyversions/infinidev.svg)](https://pypi.org/project/infinidev/)
[![Tests](https://github.com/Infinibay/infinidev/actions/workflows/tests.yml/badge.svg)](https://github.com/Infinibay/infinidev/actions/workflows/tests.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE.md)

Infinidev is an autonomous AI coding agent for the terminal. It can inspect a
repository, plan changes, edit code, run commands and tests, review its work,
and keep project knowledge across sessions.

It works with hosted models through LiteLLM and with local models through
[Ollama](https://ollama.com).

![Infinidev TUI](https://raw.githubusercontent.com/Infinibay/infinidev/main/public/screenshot.png)

## Install

Python 3.11 or newer is required. The recommended installation uses
[uv](https://docs.astral.sh/uv/), which keeps Infinidev in an isolated tool
environment:

```bash
uv tool install infinidev
```

Upgrade later with:

```bash
uv tool upgrade infinidev
```

You can also install it with pipx:

```bash
pipx install infinidev
```

## Start

Run Infinidev from the project you want it to work on:

```bash
cd path/to/your/project
infinidev
```

Use `/models manage` to choose a provider and model, or `/settings` to edit the
project configuration. By default, Infinidev expects Ollama at
`http://localhost:11434`.

Useful command-line modes:

```bash
infinidev --no-tui                 # text-only interface
infinidev -p "explain this repo"   # one prompt, then exit
infinidev --continue               # resume the latest local session
infinidev --resume                 # choose a previous session
```

## What it includes

- A live terminal UI with task progress, diffs, files, logs, and context usage.
- Plan-execute-summarize and staged execution for long, multi-step tasks.
- File, shell, Git, web, code-intelligence, knowledge, and image tools.
- Persistent, searchable working memory with recoverable tool evidence.
- Model capability detection and native or text-based tool calling.
- MCP server support; Ken is used for semantic project context when available.
- Permission checks, deterministic completion gates, tests, and post-change review.
- Image attachments, terminal image viewing, and opt-in image generation.

## Essential commands

| Command | Purpose |
| --- | --- |
| `/help` | Show commands and keybindings |
| `/models manage` | Choose the active provider and model |
| `/settings` | View or change project settings |
| `/engine` | Select the task execution engine |
| `/plan <task>` | Review a plan before execution |
| `/mcp` | Show MCP server health |
| `/findings` | Browse saved project knowledge |
| `/reindex` | Rebuild the local code index |
| `/clear` | Clear the transcript |
| `/exit` | Quit |

## How it works

```text
request
  -> read-only chat agent
  -> planner (when code work is needed)
  -> plan-execute-summarize loop
  -> tests and objective checks
  -> review
  -> result
```

Infinidev stores settings, history, logs, and its SQLite knowledge database in
`.infinidev/` inside the current project. Environment variables use the
`INFINIDEV_` prefix. Secrets and generated runtime state should not be committed.

## Development

```bash
git clone https://github.com/Infinibay/infinidev.git
cd infinidev
uv sync
uv run pytest
uv run infinidev
```

Architecture and subsystem documentation live in [`docs/`](docs/). Contributor
guidance is in [`AGENTS.md`](AGENTS.md).

## License

Infinidev is available under the [MIT License](LICENSE.md).
