AGENTS / GITHUB / llm-expose
githubinferredactive

llm-expose

provenance:github:edo0xff/llm-expose
WHAT THIS AGENT DOES

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

View Source ↗First seen 1mo agoNot yet hireable
README
<div align="center">

<img width="550" alt="LLM Expose Logo" src="https://i.imgur.com/8VzDDfH.png">

[![Python 3.11+](https://img.shields.io/badge/Python-3.11%2B-blue?logo=python&logoColor=white)](https://www.python.org/downloads/)
[![Language: Python](https://img.shields.io/badge/Language-Python-3776ab?logo=python&logoColor=white)](https://www.python.org/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![Tests](https://img.shields.io/github/actions/workflow/status/edo0xff/llm-expose/test.yml?label=Tests&logo=github)](https://github.com/edo0xff/llm-expose/actions/workflows/test.yml)
[![Docs](https://img.shields.io/badge/Docs-Live-brightgreen?logo=readthedocs)](https://edo0xff.github.io/llm-expose)

**Expose LLM-powered assistants through messaging platforms such as Telegram and Discord**

🤖 ← 🐈 ← 🌐 ← 📱 ← 🧙‍♂️
</div>

---

![Screenshot](https://i.imgur.com/6nizPQE.png)

`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

First discoveredMar 21, 2026

IDENTITY

inferred

Identity inferred from code signals. No PROVENANCE.yml found.

Is this yours? Claim it →

METADATA

platformgithub
first seenMar 7, 2026
last updatedMar 13, 2026
last crawled19 days ago
version

README BADGE

Add to your README:

![Provenance](https://getprovenance.dev/api/badge?id=provenance:github:edo0xff/llm-expose)