Metadata-Version: 2.4
Name: cutback
Version: 0.1.0.dev1
Summary: Independent, evidence-aware AI application cost observation and optimization
Project-URL: Homepage, https://github.com/CutbackAI/cutback
Project-URL: Repository, https://github.com/CutbackAI/cutback
Project-URL: Issues, https://github.com/CutbackAI/cutback/issues
Project-URL: Documentation, https://github.com/CutbackAI/cutback/tree/main/docs
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: Console
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
Requires-Python: >=3.11
Requires-Dist: pathspec<2,>=1
Requires-Dist: pydantic<3,>=2.10.6
Requires-Dist: pyyaml<7,>=6
Requires-Dist: typer<1,>=0.20
Provides-Extra: anthropic
Requires-Dist: anthropic==2.3.0; extra == 'anthropic'
Requires-Dist: httpx<1,>=0.28; extra == 'anthropic'
Requires-Dist: opentelemetry-api<2,>=1.38; extra == 'anthropic'
Provides-Extra: eval
Requires-Dist: cryptography<51,>=50; extra == 'eval'
Requires-Dist: jsonschema<5,>=4.25; extra == 'eval'
Provides-Extra: instrumentation
Requires-Dist: httpx<1,>=0.28; extra == 'instrumentation'
Requires-Dist: opentelemetry-api<2,>=1.38; extra == 'instrumentation'
Provides-Extra: openai
Requires-Dist: httpx<1,>=0.28; extra == 'openai'
Requires-Dist: openai==2.29.0; extra == 'openai'
Requires-Dist: opentelemetry-api<2,>=1.38; extra == 'openai'
Provides-Extra: server
Requires-Dist: alembic<2,>=1.17; extra == 'server'
Requires-Dist: cryptography<51,>=50; extra == 'server'
Requires-Dist: fastapi<1,>=0.120; extra == 'server'
Requires-Dist: jsonschema<5,>=4.25; extra == 'server'
Requires-Dist: psycopg[binary]<4,>=3.2; extra == 'server'
Requires-Dist: sqlalchemy<3,>=2.0.44; extra == 'server'
Requires-Dist: uvicorn<1,>=0.38; extra == 'server'
Provides-Extra: storage
Requires-Dist: boto3>=1.43.118; extra == 'storage'
Description-Content-Type: text/markdown

# Cutback

Cut your AI costs. Keep your quality.

Cutback discovers AI calls, observes supported runtime usage, evaluates authorized alternatives, and prepares reviewable changes. Apache-2.0 includes the CLI, collector, PostgreSQL, worker, encrypted datasets and React dashboard. No corporate account or hosted service is required.

**Pre-alpha, not production validated.** Tests use synthetic provider responses. Real pilot traffic, representative quality validation, paid requests and production deployment remain explicit approval gates. See [progress](docs/progress.md) and [limitations](docs/limitations.md).

```sh
python -m pip install --pre cutback
cutback doctor --json
cutback scan /path/to/python/project --json
cutback opportunities --target /path/to/python/project
```

Scanning is offline and never executes the application. Historical tokens, spend, latency and quality remain unknown from source alone. Lower prices establish a candidate, not preserved quality or realized savings.

```sh
uv sync --locked --all-extras --dev
uv run python infra/compose/prepare.py
docker compose -f infra/compose/docker-compose.yml up -d --build
uv run python scripts/demo.py
uv run cutback dashboard --local
```

The demo uses synthetic inference and an actual local collector/database. Dashboard credentials are separate control keys held only in browser memory. Read [deployment](docs/deployment.md), [evaluation](docs/evaluation.md), [provider compatibility](docs/providers.md), and [agent setup](docs/agent-integration.md).

Extras: `cutback[openai]`, `[anthropic]`, `[instrumentation]`, `[server]`, `[eval]`, `[storage]`. The scanner core contains no SDK, server or GPU dependencies. No calls home, implicit paid inference, automatic production patches or traffic changes.

Watch or reproduce the [synthetic demo](docs/demo.md). Its data is explicitly labeled; it is not a customer benchmark.
