llm-expose
Here's a plain English summary of the "llm-expose" agent: What it does: llm-expose lets you connect powerful AI assistants (like ChatGPT) to popular messaging apps like Telegram and Discord. It essentially creates a bridge so people can chat with AI directly within those platforms. What problem it solves: It makes AI more accessible and convenient. Instead of needing a separate website or app to use AI, you can interact with it naturally within the messaging apps you already use every day. Who would use it: Businesses, teams, or individuals who want to easily integrate AI into their communication workflows. For example, a customer support team could use it to automatically answer common questions, or a project team could
README
<div align="center">
<img width="550" alt="LLM Expose Logo" src="https://i.imgur.com/8VzDDfH.png">
[](https://www.python.org/downloads/)
[](https://www.python.org/)
[](LICENSE)
[](https://github.com/edo0xff/llm-expose/actions/workflows/test.yml)
[](https://edo0xff.github.io/llm-expose)
**Expose LLM-powered assistants through messaging platforms such as Telegram and Discord**
🤖 ← 🐈 ← 🌐 ← 📱 ← 🧙♂️
</div>
---

`llm-expose` gives you a channel-first CLI workflow: configure providers, attach channels, control pairings, and optionally integrate MCP servers for tool-aware completions.
## Features
- Multi-channel support (Telegram and Discord).
- LiteLLM provider support for broad model compatibility.
- Local OpenAI-compatible endpoint support.
- MCP server integration for tool-aware responses.
- Pairing-based access control per channel.
- CLI-first setup and operations.
## Installation
### Quick Install (One-Liner)
**Linux & macOS:**
```bash
curl -fsSL https://raw.githubusercontent.com/edo0xff/llm-expose/main/scripts/install.sh | bash
```
**Windows (PowerShell as Administrator):**
```powershell
powershell -ExecutionPolicy Bypass -Command "iex (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/edo0xff/llm-expose/main/scripts/install-windows.ps1')"
```
### From PyPI
```bash
pip install llm-expose
```
### From source
```bash
git clone https://github.com/edo0xff/llm-expose.git
cd llm-expose
pip install -e .
```
### Development install
```bash
pip install -e '.[dev]'
```
> See [scripts/README.md](scripts/README.md) for detailed installation instructions and troubleshooting.
## Quick Start
`llm-expose` is interactive by default, which is usually the fastest path for humans.
Use `--no-input` for headless automation and add `-y` when the command can require confirmation.
1. Configure a model:
```bash
llm-expose add model
```
2. Configure a channel (interactive):
```bash
llm-expose add channel
```
3. Pair an allowed user/chat ID:
```bash
llm-expose add pair 123456789 --channel my-telegram
```
4. Start the channel runtime:
```bash
llm-expose start
```
Headless equivalent (CI/scripts):
```bash
llm-expose add model --name gpt4o-mini --provider openai --model-id gpt-4o-mini -y --no-input
llm-expose add channel --name my-telegram --client-type telegram --bot-token "123456789:AAExampleTelegramToken" --model-name gpt4o-mini -y --no-input
llm-expose add pair 123456789 --channel my-telegram --no-input
llm-expose start --channel my-telegram -y --no-input
```
If you are unsure about available options, run:
```bash
llm-expose --help
llm-expose add --help
llm-expose start --help
```
## Pairing Model
Incoming chat/channel IDs must be explicitly paired before the service replies.
When an unpaired ID sends a message, the service returns:
`This instance is not paired. Run llm-expose add pair <channel-id>`
Pairings are stored per channel configuration.
Common pairing commands:
- `llm-expose add pair <id> --channel <channel-name>`
- `llm-expose list pairs`
- `llm-expose list pairs --channel <channel-name>`
- `llm-expose delete pair <id> --channel <channel-name>`
## Configuration Workflow
`llm-expose` currently uses CLI commands to persist configuration (models, channels, and MCP settings).
Recommended setup order:
1. Add one or more models (`llm-expose add model ...`).
2. Add one or more channels (`llm-expose add channel ...`).
3. Add optional MCP servers (`llm-expose add mcp ...`).
4. Pair allowed IDs (`llm-expose add pair ...`).
5. Run exposure service (`llm-expose start ...`).
## Development
Run quality checks:
```bash
ruff check .
black --check .
mypy llm_expose
pytest
```
## Roadmap
- PyPI release automation.
- Hosted docs site with architecture and API references.
- More channel adapters and provider presets.
## Contributing
See `CONTRIBUTING.md`.
## License
MIT. See `LICENSE`.
PUBLIC HISTORY
IDENTITY
Identity inferred from code signals. No PROVENANCE.yml found.
Is this yours? Claim it →METADATA
README BADGE
Add to your README:
