Metadata-Version: 2.4
Name: amx-cli
Version: 0.12.0
Summary: Agentic Metadata Extractor — AI-powered CLI to infer and manage database metadata
Author: Omer Yasir Kucuk
License: Apache-2.0
Project-URL: Homepage, https://github.com/omeryasirkucuk/amx
Project-URL: Documentation, https://omeryasirkucuk.github.io/amx-docs/
Project-URL: Repository, https://github.com/omeryasirkucuk/amx
Project-URL: Issues, https://github.com/omeryasirkucuk/amx/issues
Project-URL: Changelog, https://github.com/omeryasirkucuk/amx/blob/main/CHANGELOG.md
Keywords: metadata,database,documentation,llm,rag,data-catalog,agentic,cli
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Documentation
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=8.1
Requires-Dist: rich>=13.0
Requires-Dist: prompt_toolkit>=3.0.40
Requires-Dist: sqlalchemy>=2.0
Requires-Dist: pandas>=2.0
Requires-Dist: chromadb>=0.5
Requires-Dist: langchain>=0.3
Requires-Dist: langchain-community>=0.3
Requires-Dist: langchain-text-splitters>=0.3
Requires-Dist: tiktoken>=0.7
Requires-Dist: openai>=1.0
Requires-Dist: anthropic>=0.30
Requires-Dist: google-generativeai>=0.7
Requires-Dist: litellm>=1.83.7
Requires-Dist: pyyaml>=6.0
Requires-Dist: python-dotenv>=1.0
Requires-Dist: tqdm>=4.66
Requires-Dist: unstructured>=0.15
Requires-Dist: python-magic>=0.4
Requires-Dist: pypdf>=4.0
Requires-Dist: openpyxl>=3.1
Requires-Dist: python-docx>=1.1
Requires-Dist: gitpython>=3.1
Requires-Dist: boto3>=1.34
Requires-Dist: requests>=2.31
Requires-Dist: google-api-python-client>=2.0
Requires-Dist: google-auth>=2.0
Requires-Dist: msal>=1.24
Requires-Dist: keyring>=24.0
Provides-Extra: code-intel
Requires-Dist: sqlglot>=24.0; extra == "code-intel"
Provides-Extra: local-embeddings
Requires-Dist: sentence-transformers>=3.0; extra == "local-embeddings"
Provides-Extra: postgresql
Requires-Dist: psycopg2-binary>=2.9; extra == "postgresql"
Provides-Extra: snowflake
Requires-Dist: snowflake-sqlalchemy>=1.6; extra == "snowflake"
Requires-Dist: snowflake-connector-python>=3.6; extra == "snowflake"
Provides-Extra: databricks
Requires-Dist: databricks-sqlalchemy>=1.0; extra == "databricks"
Requires-Dist: databricks-sql-connector>=3.0; extra == "databricks"
Provides-Extra: bigquery
Requires-Dist: sqlalchemy-bigquery>=1.9; extra == "bigquery"
Requires-Dist: google-cloud-bigquery>=3.13; extra == "bigquery"
Provides-Extra: mysql
Requires-Dist: pymysql>=1.1; extra == "mysql"
Requires-Dist: cryptography>=42.0; extra == "mysql"
Provides-Extra: oracle
Requires-Dist: oracledb>=2.0; extra == "oracle"
Provides-Extra: mssql
Requires-Dist: pyodbc>=5.0; extra == "mssql"
Provides-Extra: redshift
Requires-Dist: redshift_connector>=2.1; extra == "redshift"
Requires-Dist: sqlalchemy-redshift>=0.8; extra == "redshift"
Provides-Extra: clickhouse
Requires-Dist: clickhouse-connect>=0.7; extra == "clickhouse"
Requires-Dist: clickhouse-sqlalchemy>=0.3; extra == "clickhouse"
Provides-Extra: duckdb
Requires-Dist: duckdb-engine>=0.13; extra == "duckdb"
Requires-Dist: duckdb>=1.0; extra == "duckdb"
Provides-Extra: all
Requires-Dist: psycopg2-binary>=2.9; extra == "all"
Requires-Dist: snowflake-sqlalchemy>=1.6; extra == "all"
Requires-Dist: snowflake-connector-python>=3.6; extra == "all"
Requires-Dist: databricks-sqlalchemy>=1.0; extra == "all"
Requires-Dist: databricks-sql-connector>=3.0; extra == "all"
Requires-Dist: sqlalchemy-bigquery>=1.9; extra == "all"
Requires-Dist: google-cloud-bigquery>=3.13; extra == "all"
Requires-Dist: pymysql>=1.1; extra == "all"
Requires-Dist: cryptography>=42.0; extra == "all"
Requires-Dist: oracledb>=2.0; extra == "all"
Requires-Dist: pyodbc>=5.0; extra == "all"
Requires-Dist: redshift_connector>=2.1; extra == "all"
Requires-Dist: sqlalchemy-redshift>=0.8; extra == "all"
Requires-Dist: clickhouse-connect>=0.7; extra == "all"
Requires-Dist: clickhouse-sqlalchemy>=0.3; extra == "all"
Requires-Dist: duckdb-engine>=0.13; extra == "all"
Requires-Dist: duckdb>=1.0; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-cov>=5.0; extra == "dev"
Requires-Dist: ruff>=0.6; extra == "dev"
Requires-Dist: mypy>=1.10; extra == "dev"
Requires-Dist: pre-commit>=3.7; extra == "dev"
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"
Dynamic: license-file

<p align="center">
  <img src="https://raw.githubusercontent.com/omeryasirkucuk/amx/main/docs/assets/amx-banner.png" alt="AMX — Agentic Metadata Extractor" width="760">
</p>

<p align="center">
  <strong>Stop staring at <code>transactions.posting NUMBER(8)</code> wondering what it means.</strong>
</p>

<p align="center">
  AI-powered guidance and reference for data analysts, data engineers,<br>
  and catalog owners working with undocumented database schemas.
</p>

<p align="center">
  <a href="https://omeryasirkucuk.github.io/amx-docs/"><strong>Documentation</strong></a>
  ·
  <a href="https://omeryasirkucuk.github.io/amx-docs/getting-started/quickstart/">Quickstart</a>
  ·
  <a href="https://github.com/omeryasirkucuk/amx/blob/main/CHANGELOG.md">Changelog</a>
  ·
  <a href="https://github.com/omeryasirkucuk/amx/issues">Issues</a>
</p>

---

AMX walks your database, reads your documentation and codebase, then **drafts a description for every table, view, and column** — with confidence scores and a human review before anything lands in the live database. Three independent sub-agents (Profile, RAG, Code) gather evidence, an orchestrator merges and ranks them, you accept / edit / skip, and AMX writes approved descriptions back as native `COMMENT` statements on the engine.

Five minutes from `pip install` to your first reviewed description. **Ten supported database backends, seven LLM providers.**

## Install

```bash
pip install amx-cli
```

The PyPI distribution is `amx-cli`; the import package is `amx` (`import amx`). Requires Python 3.10+. See the [installation guide](https://omeryasirkucuk.github.io/amx-docs/getting-started/installation/) for prerequisites, source builds, and where AMX writes config / history / logs.

## Quick start

```bash
amx                       # open the interactive session (the AMX REPL)
/setup                    # one-time wizard: DB profile + LLM profile
/connect                  # sanity-check the active connection
/run core.transactions          # generate suggestions, review, accept
/apply                    # write approved descriptions back to the database
```

`/run` without an argument opens a scope picker (Database / Schema / Asset). `/run-apply` short-circuits review-and-apply when you already trust the model. If anything misbehaves, `amx doctor` runs from any shell — even when AMX itself can't start — and prints actionable hints next to each ✗.

The full guided walkthrough is at the [5-minute quickstart](https://omeryasirkucuk.github.io/amx-docs/getting-started/quickstart/) and [first-run walkthrough](https://omeryasirkucuk.github.io/amx-docs/getting-started/first-run/).

## What you get

Cryptic identifier in:

```
core.transactions.posting   NUMBER(8) NULL
```

Reviewed description out:

```
Posting date. The accounting period this transaction lands in, encoded
as YYYYMMDD. Distinct from the system-level effective date (eff_dt)
that records when the row physically arrived in the warehouse.

  confidence: high · logprob: 0.91 · sources: code (3 refs), docs, db profile
```

Every column gets up to N ranked alternatives, every suggestion is grounded in evidence (db profile, code references, doc snippets), and every approval is recorded in local run history that you can re-evaluate later with `/history review`.

## Supported database backends

PostgreSQL · Snowflake · Databricks (Unity Catalog) · BigQuery · MySQL / MariaDB · Oracle · SQL Server · Redshift · ClickHouse · DuckDB

Per-backend setup, connection details, and the capability matrix live in the [Backends section](https://omeryasirkucuk.github.io/amx-docs/backends/).

## Supported LLM providers

OpenAI · Anthropic · Google Gemini · DeepSeek · OpenRouter · Ollama · vLLM / LM Studio · any OpenAI-compatible endpoint

Provider-specific guides (including OpenAI / Anthropic Batch mode and local-model setups) live in the [LLM providers section](https://omeryasirkucuk.github.io/amx-docs/llm-providers/).

## Documentation

Full user, operator, and contributor docs live at **[omeryasirkucuk.github.io/amx-docs](https://omeryasirkucuk.github.io/amx-docs/)** — concepts, the slash-command map, configuration, data sources, collaboration, troubleshooting, and the [Python API](https://omeryasirkucuk.github.io/amx-docs/api/reference/) for headless use. Release notes are in [`CHANGELOG.md`](https://github.com/omeryasirkucuk/amx/blob/main/CHANGELOG.md) and on the [GitHub Releases page](https://github.com/omeryasirkucuk/amx/releases).

## Contributing & support

- [Contributing guide](https://github.com/omeryasirkucuk/amx/blob/main/CONTRIBUTING.md) — development setup, branching, commit format, release process
- [Security policy](https://github.com/omeryasirkucuk/amx/blob/main/SECURITY.md) — how to report a vulnerability
- [Open an issue](https://github.com/omeryasirkucuk/amx/issues) — bugs, questions, feature requests

## License

Apache-2.0 — see [`LICENSE`](https://github.com/omeryasirkucuk/amx/blob/main/LICENSE).
