# Installation Guide

Complete installation instructions for SmartTools.

## Quick Install

```bash
git clone https://gitea.brrd.tech/rob/SmartTools.git
cd SmartTools
pip install -e .
export PATH="$HOME/.local/bin:$PATH"
smarttools providers install
```

## Detailed Installation

### Step 1: Install Python 3.10+

**Ubuntu/Debian:**
```bash
sudo apt update
sudo apt install python3 python3-pip
```

**macOS:**
```bash
brew install python@3.11
```

**Verify:**
```bash
python3 --version  # Should be 3.10 or higher
```

### Step 2: Install SmartTools

```bash
git clone https://gitea.brrd.tech/rob/SmartTools.git
cd SmartTools
pip install -e .
```

**With TUI and development dependencies:**
```bash
pip install -e ".[dev]"
```

### Step 3: Configure PATH

SmartTools creates executable wrappers in `~/.local/bin/`. Add this to your shell config:

**Bash (~/.bashrc):**
```bash
export PATH="$HOME/.local/bin:$PATH"
```

**Zsh (~/.zshrc):**
```bash
export PATH="$HOME/.local/bin:$PATH"
```

**Fish (~/.config/fish/config.fish):**
```fish
set -gx PATH $HOME/.local/bin $PATH
```

Then reload:
```bash
source ~/.bashrc  # or restart terminal
```

### Step 4: Install an AI Provider

You need at least one AI CLI tool. The easiest way is the interactive installer:

```bash
smarttools providers install
```

This guides you through installing and authenticating providers.

#### Manual Installation

**OpenCode (free tier available):**
```bash
curl -fsSL https://opencode.ai/install | bash
source ~/.bashrc  # or start new shell
opencode  # Opens browser for sign-in
```

**Claude CLI (pay-per-use):**
```bash
npm install -g @anthropic-ai/claude-code
claude  # Opens browser for sign-in
```

**Codex (pay-per-use):**
```bash
npm install -g @openai/codex
codex  # Opens browser for sign-in
```

**Gemini (free tier available):**
```bash
npm install -g @google/gemini-cli
gemini  # Opens browser for Google sign-in
```

**Ollama (free, runs locally):**
```bash
curl -fsSL https://ollama.ai/install.sh | bash
ollama pull llama3
smarttools providers add ollama "ollama run llama3" -d "Local Llama 3"
```

See [PROVIDERS.md](PROVIDERS.md) for full provider setup instructions.

### Step 5: Verify Installation

```bash
# Check SmartTools is installed
smarttools --version

# List configured providers
smarttools providers list

# Check which providers are available
smarttools providers check

# Test with mock provider (no AI needed)
echo "hello world" | smarttools run --provider mock
```

### Step 6: Create Wrapper Scripts

After installation or any Python environment change:

```bash
smarttools refresh
```

This creates executable scripts in `~/.local/bin/` for all your tools.

## Installing Example Tools

### Quick Install (All 28 Tools)

```bash
python examples/install.py
smarttools refresh
```

### Manual Install

Copy individual tool configs to `~/.smarttools/<toolname>/config.yaml`.

See [EXAMPLES.md](EXAMPLES.md) for all tool configurations.

## Troubleshooting

### "smarttools: command not found"

PATH is not configured. Add to your shell config:
```bash
export PATH="$HOME/.local/bin:$PATH"
```

### "Provider 'X' not found"

1. Check provider is installed: `which claude` or `which opencode`
2. Check provider is configured: `smarttools providers`
3. Add missing provider: `smarttools providers add`

### "Permission denied" on tool execution

Refresh wrapper scripts:
```bash
smarttools refresh
```

### TUI doesn't start / looks broken

Install urwid:
```bash
pip install urwid
```

Ensure your terminal supports mouse (most modern terminals do).

### Tools work with `smarttools run` but not directly

The wrapper scripts may be outdated. Refresh them:
```bash
smarttools refresh
```

### Python version mismatch

If you have multiple Python versions, ensure SmartTools uses the right one:
```bash
python3.11 -m pip install smarttools
```

## Uninstalling

```bash
# Remove package
pip uninstall smarttools

# Remove config and tools (optional)
rm -rf ~/.smarttools

# Remove wrapper scripts (optional)
rm ~/.local/bin/{summarize,translate,fix-grammar,...}
```

## Upgrading

```bash
pip install --upgrade smarttools
smarttools refresh
```

## Directory Structure

After installation:

```
~/.smarttools/
├── providers.yaml          # Provider configurations
├── summarize/
│   └── config.yaml         # Tool config
├── translate/
│   ├── config.yaml
│   └── prompt.txt          # External prompt file (optional)
└── ...

~/.local/bin/
├── smarttools              # Main command
├── summarize               # Tool wrapper script
├── translate               # Tool wrapper script
└── ...
```

## Next Steps

1. [Set up providers](PROVIDERS.md)
2. [Browse example tools](EXAMPLES.md)
3. Run `smarttools ui` to create your first tool
