Metadata-Version: 2.4
Name: merlya
Version: 0.5.6
Summary: Merlya - AI-powered infrastructure assistant
Author-email: Cedric <cedric@example.com>
License: MIT
License-File: LICENSE
Keywords: ai,automation,devops,infrastructure,ssh
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.11
Requires-Dist: aiosqlite>=0.21
Requires-Dist: anthropic>=0.75
Requires-Dist: asyncssh>=2.21
Requires-Dist: ddgs>=9.9
Requires-Dist: httpx>=0.28
Requires-Dist: huggingface-hub>=0.26
Requires-Dist: keyring>=25.5
Requires-Dist: keyrings-alt>=5.0; sys_platform == 'linux'
Requires-Dist: loguru>=0.7
Requires-Dist: numpy>=1.26
Requires-Dist: openai>=1.50
Requires-Dist: prompt-toolkit>=3.0
Requires-Dist: psutil>=6.1
Requires-Dist: pydantic-ai>=1.26
Requires-Dist: pydantic>=2.10
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=14.0
Requires-Dist: secretstorage>=3.3; sys_platform == 'linux'
Provides-Extra: all
Requires-Dist: onnxruntime>=1.19; extra == 'all'
Requires-Dist: tokenizers>=0.20; extra == 'all'
Provides-Extra: dev
Requires-Dist: mypy>=1.13; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest-cov>=6.0; extra == 'dev'
Requires-Dist: pytest>=8.3; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
Provides-Extra: router
Requires-Dist: onnxruntime>=1.19; extra == 'router'
Requires-Dist: tokenizers>=0.20; extra == 'router'
Description-Content-Type: text/markdown

<p align="center">
  <img src="https://merlya.fr/static/media/logo.41177386c9cd7ecf8aaa.png" alt="Merlya Logo" width="120">
</p>

<h1 align="center">Merlya</h1>

<p align="center">
  <strong>AI-powered infrastructure assistant</strong>
</p>

<p align="center">
  <a href="https://pypi.org/project/merlya/"><img src="https://img.shields.io/pypi/v/merlya?color=%2340C4E0" alt="PyPI"></a>
  <a href="https://pypi.org/project/merlya/"><img src="https://img.shields.io/pypi/pyversions/merlya" alt="Python"></a>
  <a href="https://pypi.org/project/merlya/"><img src="https://img.shields.io/pypi/dm/merlya" alt="Downloads"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT%20%2B%20Commons%20Clause-blue" alt="License"></a>
</p>

<p align="center">
  <img src="https://img.shields.io/badge/code%20style-ruff-000000" alt="Ruff">
  <img src="https://img.shields.io/badge/type%20checked-mypy-blue" alt="mypy">
</p>

## Features

- Natural language infrastructure management
- SSH connection pooling with security hardening
- Host inventory management
- Health checks and monitoring
- Multi-language support (EN, FR)

## Installation

```bash
pip install -e ".[dev]"
```

### Optional extras

- Local intent router (ONNX): `pip install -e ".[router]"` (requires Python ≤ 3.13 while onnxruntime wheels land for 3.14).

## Usage

```bash
merlya
```

## Configuration notes

- API keys & keyring: Merlya stores provider keys in the system keyring (fallback in-memory if unavailable). Ensure `keyring` (and its backend on Linux) is installed in the same Python env.
- Router fallback model: default fallback is `openrouter:google/gemini-2.0-flash-lite-001`. Override with `MERLYA_ROUTER_FALLBACK=<provider:model>` or via the setup wizard.
- Local intent router (ONNX): if the ONNX model/tokenizer are missing, Merlya downloads them at first use. Without onnxruntime/tokenizers the router falls back to pattern matching and LLM routing.

## Development

```bash
# Run tests
pytest tests/ -v

# Lint
ruff check merlya/

# Type check
mypy merlya/
```

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines.

## Issues & Feedback

Report bugs and request features on [GitHub Issues](https://github.com/m-kis/merlya/issues).

## License

[MIT](LICENSE)
