Metadata-Version: 2.4
Name: ai-tell
Version: 0.1.0
Summary: Local-first CLI for reviewing AI-edited or AI-written text.
Project-URL: Homepage, https://github.com/yaoandy107/ai-tell
Project-URL: Repository, https://github.com/yaoandy107/ai-tell
Author: yaoandy107
License-Expression: MIT
License-File: LICENSE
Keywords: ai-detection,ai-text,cli,huggingface,local-first
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Text Processing :: Linguistic
Requires-Python: <3.14,>=3.11
Requires-Dist: bitsandbytes>=0.49.0
Requires-Dist: emoji>=2.15.0
Requires-Dist: huggingface-hub>=0.36.0
Requires-Dist: pathspec>=0.12.1
Requires-Dist: peft>=0.18.0
Requires-Dist: rich>=14.0.0
Requires-Dist: safetensors>=0.6.0
Requires-Dist: torch>=2.6.0
Requires-Dist: transformers>=5.5.0
Requires-Dist: typer>=0.20.0
Description-Content-Type: text/markdown

# ai-tell

[![CI](https://github.com/yaoandy107/ai-tell/actions/workflows/ci.yml/badge.svg)](https://github.com/yaoandy107/ai-tell/actions/workflows/ci.yml)

Local-first CLI that flags AI-written or AI-edited passages in your `.txt`,
`.md`, and `.mdx` files. It runs entirely on your machine — file content never
leaves it.

```sh
uv tool install ai-tell
aitell setup        # one-time: pick a model and download
aitell scan docs
```

![aitell scanning a folder](docs/demo.svg)

Each passage is grouped as likely human, AI-edited, or AI-written — never a
percentage, because the score is a severity signal, not a probability of AI
authorship. Treat it as an estimate, not proof.

## Usage

```sh
aitell scan                      # scan the current directory
aitell scan docs report.md       # scan folders and files
cat draft.md | aitell scan -     # scan piped text
aitell scan docs --json          # machine-readable output
aitell scan docs --fail-on high  # CI: exit non-zero if a file looks AI-written
```

## Models

Pick one with `aitell setup`, or per run with `--model`:

| Model | `--model` | Size | Access |
| --- | --- | --- | --- |
| Greyscope Qwen3.5 | `greyscope-qwen` | 4B | none |
| Pangram EditLens RoBERTa | `editlens-roberta` | 0.4B | account + Pangram approval |
| Pangram EditLens Llama 3.2 | `editlens-llama` | 3B | account + Pangram + Meta Llama |

The EditLens models need a free Hugging Face account and owner approval;
Greyscope is public, so it needs neither. Larger models are slower and use more
memory.
