Metadata-Version: 2.4
Name: tunacode-cli
Version: 0.1.61
Summary: Your agentic CLI developer.
Project-URL: Homepage, https://tunacode.xyz/
Project-URL: Repository, https://github.com/alchemiststudiosDOTai/tunacode
Project-URL: Issues, https://github.com/alchemiststudiosDOTai/tunacode/issues
Project-URL: Documentation, https://github.com/alchemiststudiosDOTai/tunacode#readme
Author-email: larock22 <noreply@github.com>
License: MIT
License-File: LICENSE
Keywords: agent,automation,cli,development
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
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
Classifier: Topic :: Utilities
Requires-Python: <3.14,>=3.11
Requires-Dist: click<8.2.0,>=8.1.0
Requires-Dist: defusedxml
Requires-Dist: html2text>=2024.2.26
Requires-Dist: httpx>=0.27.0
Requires-Dist: pathspec>=0.12.1
Requires-Dist: prompt-toolkit<4.0.0,>=3.0.52
Requires-Dist: pydantic-ai<2.0.0,>=1.18.0
Requires-Dist: pydantic<3.0.0,>=2.12.4
Requires-Dist: pygments<3.0.0,>=2.19.2
Requires-Dist: python-levenshtein>=0.21.0
Requires-Dist: rich<15.0.0,>=14.2.0
Requires-Dist: ruff>=0.14.0
Requires-Dist: tenacity>=8.0.0
Requires-Dist: textual-autocomplete>=4.0.6
Requires-Dist: textual<5.0.0,>=4.0.0
Requires-Dist: typer>=0.15.0
Provides-Extra: dev
Requires-Dist: autoflake>=2.0.0; extra == 'dev'
Requires-Dist: bandit; extra == 'dev'
Requires-Dist: build; extra == 'dev'
Requires-Dist: dead>=1.5.0; extra == 'dev'
Requires-Dist: deptry>=0.12.0; extra == 'dev'
Requires-Dist: grimp>=3.14; extra == 'dev'
Requires-Dist: hypothesis>=6.150.0; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: pylint>=4.0.4; extra == 'dev'
Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest-json-report>=1.5.0; extra == 'dev'
Requires-Dist: pytest-randomly>=3.15.0; extra == 'dev'
Requires-Dist: pytest-timeout>=2.3.1; extra == 'dev'
Requires-Dist: pytest>=9.0.1; extra == 'dev'
Requires-Dist: radon>=6.0.1; extra == 'dev'
Requires-Dist: ruff==0.14.9; extra == 'dev'
Requires-Dist: textual-dev; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Requires-Dist: unimport>=1.0.0; extra == 'dev'
Requires-Dist: vulture>=2.7; extra == 'dev'
Description-Content-Type: text/markdown

# tunacode-cli

<img src="docs/images/logo.jpeg" alt="tunacode logo" width="200"/>

[![PyPI version](https://badge.fury.io/py/tunacode-cli.svg)](https://badge.fury.io/py/tunacode-cli)
[![Downloads](https://pepy.tech/badge/tunacode-cli)](https://pepy.tech/project/tunacode-cli)
[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Discord Shield](https://discord.com/api/guilds/1447688577126367346/widget.png?style=shield)](https://discord.gg/TN7Fpynv6H)

A terminal-based AI coding agent with a NeXTSTEP-inspired interface.

> **Note:** Under active development - expect bugs.

## Features

- **Any model** - Works with any OpenAI-compatible API (Anthropic, OpenAI, Google, Ollama, vLLM, etc.)
- **File operations** - Read, write, update files with fuzzy matching for edits
- **Shell access** - Run bash commands with output capture
- **Code search** - Glob patterns and grep with ripgrep integration
- **Session persistence** - Resume previous conversations with `/resume`
- **LSP diagnostics** - Real-time code errors after file writes (Python, TypeScript, Go, Rust)
- **Themeable UI** - Multiple built-in themes

## Interface

![Agent Response Panel](docs/media/agent-response.png)
*Agent response with NeXTSTEP-style panels*

![Read File Tool](docs/media/read-file-tool.png)
*Tool output with syntax highlighting*

## Installation

### End Users

```bash
uv tool install tunacode-cli
```

Or with pip:
```bash
pip install tunacode-cli
```

### Developers (Fresh Clone)

```bash
git clone https://github.com/alchemiststudiosDOTai/tunacode.git
cd tunacode
make dev-setup
```

Or without make:
```bash
git clone https://github.com/alchemiststudiosDOTai/tunacode.git
cd tunacode
./scripts/dev-setup.sh
```

## Development

Common development tasks:

```bash
make dev-setup  # Full setup for fresh clone
make install    # Install/update dependencies
make run        # Run the development server
make test       # Run test suite
make lint       # Run linters
make clean      # Clean build artifacts
```

View technical debt:

```bash
uv run python scripts/todo_scanner.py --format text
```

## Quick Start

```bash
# Configure API key
tunacode --setup

# Start coding
tunacode
```

## Configuration

Set your API key as an environment variable:

```bash
export ANTHROPIC_API_KEY="your-key"
# or
export OPENAI_API_KEY="your-key"
```

Config file: `~/.config/tunacode.json`

For local models and advanced settings, see the [Configuration Guide](docs/configuration/README.md).

## Commands

| Command | Description |
|---------|-------------|
| `/help` | Show available commands |
| `/model` | Change AI model |
| `/clear` | Clear UI state (messages preserved) |
| `/theme` | Change UI theme |
| `/resume` | Load previous sessions |
| `/update` | Check for updates |
| `!<cmd>` | Run shell command |
| `exit` | Quit |

## Tools

The agent has access to:

| Tool | Description |
|------|-------------|
| `read_file` | Read file contents with line ranges |
| `write_file` | Create new files |
| `update_file` | Edit existing files with fuzzy matching |
| `bash` | Execute shell commands |
| `glob` | Find files by pattern |
| `grep` | Search file contents |
| `list_dir` | List directory tree |
| `web_fetch` | Fetch web page content |

## LSP Integration

Automatic code diagnostics when LSP servers are in PATH:

| Language | Server |
|----------|--------|
| Python | `ruff server` |
| TypeScript/JS | `typescript-language-server` |
| Go | `gopls` |
| Rust | `rust-analyzer` |

## Security

TunaCode has **full shell access** with no permission prompts. If you're concerned:
- Use git so you can revert changes
- Run in a container/sandbox

## Discord

[<img src="https://discord.com/api/guilds/1447688577126367346/widget.png?style=banner3" alt="Discord"/>](https://discord.gg/TN7Fpynv6H)

## License

MIT
