> ## Documentation Index
> Fetch the complete documentation index at: https://docs.taho.is/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Layered TOML configuration system for customizing Lift's pipeline, tools, and behavior.

Lift uses a layered TOML configuration system. Each layer overrides the previous:

1. **Built-in defaults** — embedded in the binary from `lift.default.toml`
2. **User config** — `~/.taho/lift/lift.toml`
3. **System config** — `/etc/taho/lift/lift.toml`
4. **CLI flags** — highest priority

Run `lift --config` to see the resolved configuration with file status.

## Configuration files

Create `~/.taho/lift/lift.toml` to customize Lift behavior. All fields are optional — only specify what you want to override.

## Available settings

| Key                    | Type         | Default                            | Description                                       |
| ---------------------- | ------------ | ---------------------------------- | ------------------------------------------------- |
| `pipeline`             | string array | `["inky", "doc", "lint", "vibes"]` | Tools to run in the default pipeline              |
| `quiet`                | bool         | `false`                            | Suppress progress indicators                      |
| `script_dir`           | string       | `"scripts/mastodon"`               | Path to scripts directory                         |
| `use_external_scripts` | bool         | `false`                            | Use legacy bash scripts instead of internal tools |
| `main_branch`          | string       | `"main"`                           | Main branch name for VCS operations               |

### Tool-specific settings

| Key                    | Type         | Default                                                   | Description                                |
| ---------------------- | ------------ | --------------------------------------------------------- | ------------------------------------------ |
| `inky.task_prefix`     | string       | `"TAHO"`                                                  | Prefix for task numbers in commit messages |
| `lint.command`         | string       | `"cargo clippy --fix --allow-no-vcs"`                     | Lint command to execute                    |
| `lint.file_extensions` | string array | `[".rs", ".toml", ".lock"]`                               | File extensions that trigger linting       |
| `doc.paths`            | string array | `["README.md", "CLAUDE.md", ".mdx", ".feature", "docs/"]` | Documentation file paths to consider       |
| `pr.draft`             | bool         | `true`                                                    | Whether to create PRs as drafts            |

## Examples

Custom pipeline (run only lint and vibes by default):

```toml theme={"theme":{"light":"github-light","dark":"github-dark"}}
pipeline = ["lint", "vibes"]
```

Python project:

```toml theme={"theme":{"light":"github-light","dark":"github-dark"}}
[inky]
task_prefix = "PROJ"

[lint]
command = "ruff check --fix"
file_extensions = [".py", ".pyi"]

[doc]
paths = ["README.md", "docs/"]
```

Go project:

```toml theme={"theme":{"light":"github-light","dark":"github-dark"}}
main_branch = "develop"

[lint]
command = "go fmt ./..."
file_extensions = [".go"]
```

<Note>
  CLI flags always override file config. For example, `lift -m` overrides the `pipeline` setting to run only Inky for that invocation.
</Note>

## Commit tracking

Lift tracks which commits each tool has processed in `~/.taho/lift/`:

```
~/.taho/lift/ink    # Commits processed by Inky
~/.taho/lift/doc    # Commits processed by Doc
~/.taho/lift/lint   # Commits processed by Lint
~/.taho/lift/vibes  # Commits processed by Vibes
```

Tracking is VCS-agnostic and stores commit hashes regardless of backend.
