Content
# LFM2.5 — On-Device AI Chat & MCP Server
Run [Liquid AI's LFM2.5-1.2B-Instruct](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-MLX-8bit) model locally on your Mac with a beautiful chat interface and MCP integration for tools like Claude Desktop, Cursor, and OpenClaw.
<div align="center">
**~120 tok/s on Apple Silicon** · **~480 tok/s across 4 Macs** · **1.5 GB RAM** · **100% Private & Offline**
</div>
## ✨ Features
- 🖥️ **Beautiful Chat UI** — Dark-themed, responsive chat interface with markdown rendering, code highlighting, and real-time performance metrics
- ⚡ **MLX Acceleration** — Runs natively on Apple Silicon via MLX with 8-bit quantization
- 🔌 **MCP Server** — Expose LFM2.5 as tools for Claude Desktop, Cursor, OpenClaw, and any MCP-compatible client
- 🔀 **Multi-Mac Cluster** — Distribute inference across multiple M4 Macs with automatic load balancing and failover
- 📊 **Live Stats** — Token count, generation speed (tok/s), and response time displayed in real-time
- 🎯 **Quick Prompts** — Pre-built prompts for common tasks (CRISPR explanation, code architecture, creative writing, data analysis)
## 🏗️ Architecture
```
Single-Mac Mode:
Client → MLX Server (:8080)
Cluster Mode (4× throughput):
Client → Cluster LB (:5200) → Mac 1 MLX (:8080)
→ Mac 2 MLX (:8080)
→ Mac 3 MLX (:8080)
→ Mac 4 MLX (:8080)
```
## 🚀 Quick Start
### Prerequisites
- macOS with Apple Silicon (M1/M2/M3/M4)
- Python 3.10+
- [MLX](https://github.com/ml-explore/mlx) and [mlx-lm](https://github.com/ml-explore/mlx-examples/tree/main/llms)
### 1. Install
```bash
# Clone the repo
git clone https://github.com/WispAyr/LFM2.5-local.git
cd LFM2.5-local
# Install MLX dependencies (if needed)
pip install mlx-lm
# Install MCP dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
### 2. Run
```bash
# Just the MLX server + chat UI
./start_server.sh
# MLX + MCP server (for Claude Desktop, Cursor, OpenClaw)
./start_server.sh --mcp
# Everything (MLX + MCP + web UI)
./start_server.sh --all
# Multi-Mac cluster (MLX + Load Balancer + MCP + web UI)
./start_server.sh --cluster
```
### 3. Open
| Service | URL | Description |
|---------|-----|-------------|
| Chat UI | http://localhost:3000 | Web chat interface |
| MLX API | http://localhost:8080/v1 | OpenAI-compatible API |
| Cluster LB | http://localhost:5200/v1 | Load-balanced API (cluster mode) |
| Cluster Status | http://localhost:5200/cluster/status | Live node health |
| MCP Server | http://localhost:5100/mcp | MCP protocol endpoint |
## 🔌 MCP Integration
The MCP server exposes LFM2.5 as tools that any MCP-compatible client can call.
### Tools
| Tool | Description |
|------|-------------|
| `chat` | General-purpose chat — questions, reasoning, writing |
| `summarize` | Summarize text with configurable length |
| `analyze_code` | Code review, bug detection, suggestions |
| `translate` | Translate text to any language |
### Resources
| URI | Description |
|-----|-------------|
| `lfm25://model/info` | Model architecture, specs, capabilities |
| `lfm25://server/status` | Live MLX server connection status |
### Prompts
| Prompt | Description |
|--------|-------------|
| `code_review` | Structured code review template |
| `explain_concept` | ELI5-style concept explanation |
### Connect to Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"lfm25": {
"command": "/path/to/LFM2.5-local/.venv/bin/python3",
"args": ["/path/to/LFM2.5-local/mcp_server.py"]
}
}
}
```
### Connect to Cursor
Settings → MCP Servers → Add and paste the same config.
### Connect to OpenClaw
Point to `http://localhost:5100/mcp` as an MCP server endpoint.
## 📁 Project Structure
```
├── index.html # Chat web UI (single-file, no build step)
├── mcp_server.py # FastMCP server with tools, resources, prompts
├── cluster.py # Multi-Mac cluster load balancer
├── cluster_config.json # Cluster node configuration
├── server.py # Web UI proxy server (serves static + proxies API)
├── mcp_config.json # MCP config template for Claude Desktop / Cursor
├── start_server.sh # Launcher script (--mcp, --all, --cluster flags)
├── demo_lfm25.py # Python demo script
└── requirements.txt # Python dependencies
```
## 🔀 Multi-Mac Cluster
Distribute inference across multiple M4 Macs for **~480 tok/s combined throughput** and automatic failover.
### Setup
**1. On each Mac**, start the MLX server:
```bash
pip install mlx-lm
python3 -m mlx_lm.server --model LiquidAI/LFM2.5-1.2B-Instruct-MLX-8bit --port 8080 --host 0.0.0.0
```
**2. Edit `cluster_config.json`** on your primary Mac with each node's IP:
```json
{
"nodes": [
{"name": "Mac-1", "host": "192.168.1.10", "port": 8080, "weight": 1},
{"name": "Mac-2", "host": "192.168.1.11", "port": 8080, "weight": 1},
{"name": "Mac-3", "host": "192.168.1.12", "port": 8080, "weight": 1},
{"name": "Mac-4", "host": "192.168.1.13", "port": 8080, "weight": 1}
]
}
```
**3. Start the cluster:**
```bash
./start_server.sh --cluster
```
### Features
- **Least-loaded routing** for POST requests, round-robin for GETs
- **Health checking** every 5 seconds with automatic failover
- **SSE streaming** passthrough for real-time token generation
- **Node weights** for prioritizing faster Macs
- **Status dashboard** at `/cluster/status` with per-node metrics
## 🧠 About LFM2.5
LFM2.5 is **not a Transformer**. It's a hybrid architecture from [Liquid AI](https://liquid.ai) combining:
- **10× Gated Short Convolution** layers — fast sequential processing
- **6× Grouped Query Attention** layers — selective attention
This gives it a unique performance profile: extremely fast inference (~120+ tok/s on M-series Macs) with a small 1.17B parameter footprint.
| Spec | Value |
|------|-------|
| Parameters | 1.17B |
| Layers | 16 |
| Context | 32K tokens |
| Vocab | 65,536 |
| Training | 28T tokens |
| Quantization | 8-bit (MLX) |
## 📄 License
MIT
## 🔗 Links
- [Liquid AI](https://liquid.ai)
- [LFM2.5 on HuggingFace](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-MLX-8bit)
- [LFM2.5 Paper](https://arxiv.org/abs/2412.04332)
- [MLX](https://github.com/ml-explore/mlx)
- [FastMCP](https://gofastmcp.com)
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
markitdown
Python tool for converting files and office documents to Markdown.
OpenAI Whisper
OpenAI Whisper MCP Server - 基于本地 Whisper CLI 的离线语音识别与翻译,无需 API Key,支持...
oh-my-opencode
Background agents · Curated agents like oracle, librarians, frontend...
claude-flow
Claude-Flow v2.7.0 is an enterprise AI orchestration platform.
ai-engineering-from-scratch
Learn it. Build it. Ship it for others. The most comprehensive open-source...
chatbox
User-friendly Desktop Client App for AI Models/LLMs (GPT, Claude, Gemini, Ollama...)