An open API service indexing awesome lists of open source software.

https://github.com/hrygo/hotplex

HotPlex — Unified access layer for AI Coding Agent.
https://github.com/hrygo/hotplex

aep ai-agent claude-code feishu gateway go openclaw opencode slack websocket

Last synced: 18 days ago
JSON representation

HotPlex — Unified access layer for AI Coding Agent.

Awesome Lists containing this project

README

          

HotPlex Gateway


The Unified Bridge for AI Coding Agents


A high-performance Go gateway providing a single WebSocket interface

to access any AI Coding Agent across Web, Slack, and Feishu.


简体中文 | English


CI
Version
License
Go
AEP v1
Stars

---

## ✨ Core Capabilities

- 🌐 **Universal Agent Gateway** — Abstract any AI Coding Agent protocol into a unified AEP v1 (Agent Exchange Protocol) WebSocket interface for consistent streaming and interaction.
- 📱 **Cross-Platform Delivery** — **"Write Once, Deploy Anywhere"**. Bridge agents to Web, Slack (Socket Mode), and Feishu (WebSocket) with zero code changes.
- 🛠️ **Multi-Modal Interaction** — Native Speech-to-Text (SenseVoice) and **Edge-TTS Voice Reply** support for a complete voice-in, voice-out development workflow.
- 🤖 **Deep Personality Injection** — Dynamic **B/C dual-channel** injection: **B-channel** (SOUL/AGENTS/SKILLS) for directives and **C-channel** (USER/MEMORY) for context.
- 🧠 **Brain Orchestration Core** — New `internal/brain` layer for LLM-based summarization, intent routing, and safety guarding, decoupling complex AI logic.
- 🛡️ **Meta-Cognition Hardening** — Constitutional **META-COGNITION** promoted to the top of B-channel with built-in **XML Sanitizer** to block prompt injection.
- 🌐 **Embedded Web Chat** — A single binary serves both the API/WebSocket gateway and a premium Next.js-based web chat interface out of the box.
- 🛡️ **Enterprise-Grade Security** — JWT ES256 authentication, SSRF protection, and **Windows File-Based Injection** to bypass cmd.exe escaping traps.
- 📊 **End-to-End Observability** — Native Prometheus metrics, OpenTelemetry tracing, and structured JSON logging for full auditability.
- ⏰ **AI-Native Cron Scheduler** — Agents autonomously create scheduled tasks from natural language (e.g., "remind me in 30 minutes"), with lifecycle management (`max_runs`, `expires_at`), automatic result delivery, and embedded skill manual.
- 🛠️ **Self-contained CLI** — `gateway`, `service`, `slack`, `cron`, `update`, `config`, `dev`, `onboard`, `doctor`, `security`, `status` in a single binary
- 🌍 **Multi-language SDKs** — Go, TypeScript, Python, Java clients ready to use

## ⚡ Quick Start

> **AI Agents:** Read https://github.com/hrygo/hotplex/blob/main/INSTALL.md and complete the HotPlex installation and configuration

### Install

**macOS / Linux (one-click binary):**

```bash
curl -fsSL https://raw.githubusercontent.com/hrygo/hotplex/main/scripts/install.sh | bash -s -- --latest
```

**Windows (PowerShell 5.1+):**

```powershell
Invoke-WebRequest -Uri https://raw.githubusercontent.com/hrygo/hotplex/main/scripts/install.ps1 -OutFile install.ps1
.\install.ps1 -Latest
```

**From source (requires Go 1.26+, pnpm, Node.js 22+):**

```bash
git clone https://github.com/hrygo/hotplex.git
cd hotplex
make quickstart
```

> **Tip (Claude Code):** After cloning, use `/hotplex-setup` for interactive environment setup and `.env` configuration.

**Docker (Experimental):**

```bash
cp configs/env.example .env # edit with your API keys
docker compose up -d
```

### Configure

```bash
# Interactive setup wizard
hotplex onboard

# Or auto-generate all configs:
hotplex onboard --non-interactive --enable-slack --enable-feishu
```

### Run

```bash
# Development mode (foreground)
make dev

# Production mode (background daemon)
hotplex gateway start -d

# Stop / restart
hotplex gateway stop
hotplex gateway restart -d
```

### Install as System Service

```bash
hotplex service install # user-level (no root)
sudo hotplex service install --level system # system-wide
hotplex service start
hotplex service status
hotplex service logs -f

# Uninstall
hotplex service uninstall
```

Supports **systemd** (Linux), **launchd** (macOS), and **Windows SCM**.

### Services

| Service | Address | Note |
| :------------------ | :----------------------- | :------------------------------------- |
| Gateway (WebSocket) | `ws://localhost:8888/ws` | Main protocol endpoint |
| Admin API | `http://localhost:9999` | Management & Statistics |
| Web Chat UI | `http://localhost:8888` | **Embedded SPA** (served from Gateway) |
| Dev Web Chat | `http://localhost:3000` | Next.js Dev Server (`make dev`) |

## 🏗️ Architecture

HotPlex sits between frontend clients and backend AI coding agents, featuring a built-in **Meta-Cognition Core** that abstracts protocol differences into a unified **AEP v1** WebSocket layer.

```
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Web UI │ │ Slack │ │ Feishu │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
└──────────────┼──────────────┘

┌─────┴─────┐
│ HotPlex │
│ Gateway │
└─────┬─────┘

┌──────────┴──────────┐
│ │
┌─────┴─────┐ ┌────┴──────┐
│ Claude │ │ OpenCode │
│ Code │ │ Server │
└───────────┘ └───────────┘
```

## 🔗 SDKs & Libraries

| Language | Path | Features |
| :------------: | :----------------------------------------------------------- | :---------------------------------------------------- |
| **Go** | [`client/`](client/) | Full-featured, channel-based events, production-grade |
| **TypeScript** | [`examples/typescript-client/`](examples/typescript-client/) | Streaming, multi-turn chat, React compatible |
| **Python** | [`examples/python-client/`](examples/python-client/) | Asyncio, session resume, CLI ready |
| **Java** | [`examples/java-client/`](examples/java-client/) | Enterprise AEP v1 implementation |

### Connect with Go SDK

```go
package main

import (
"context"
"fmt"
client "github.com/hrygo/hotplex/client"
)

func main() {
c, err := client.New(context.Background(),
client.URL("ws://localhost:8888/ws"),
client.WorkerType("claude_code"),
client.APIKey(""),
)
if err != nil {
panic(err)
}
defer c.Close()

c.SendInput(context.Background(), "Explain HotPlex architecture")

for env := range c.Events() {
if data, ok := env.AsMessageDeltaData(); ok {
fmt.Print(data.Content)
}
}
}
```

## 🛠️ Configuration

| Key | Default | Description |
| :-------------------------- | :--------------------------- | :--------------------------------------------- |
| `agent_config.enabled` | `true` | Enable agent personality/context injection |
| `tts.enabled` | `true` | Enable Edge-TTS voice reply (voice-in → voice-out) |
| `brain.enabled` | `false` | Enable Brain LLM orchestration (requires key) |
| `webchat.enabled` | `true` | Serve embedded webchat SPA from gateway |
| `worker.auto_retry.enabled` | `true` | Intelligent LLM retry with exponential backoff |
| `gateway.addr` | `localhost:8888` | WebSocket gateway address |
| `admin.addr` | `localhost:9999` | Admin API address |
| `db.path` | `~/.hotplex/data/hotplex.db` | SQLite database path |
| `log.level` | `info` | Log level: debug, info, warn, error |

> [!TIP]
> See [Config Reference](docs/management/Config-Reference.md) for the full list of environment variables and YAML settings.

## 📖 Documentation

| Area | Guide |
| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Getting Started** | [Quick Start](docs/User-Manual.md) · [Reference Manual](docs/Reference-Manual.md) · [Whitepaper](docs/Product-Whitepaper.md) |
| **Protocol** | [AEP v1 Specification](docs/architecture/AEP-v1-Protocol.md) |
| **Architecture** | [Gateway Design](docs/architecture/Worker-Gateway-Design.md) · [Agent Config Design](docs/architecture/Agent-Config-Design.md) · [Meta-Cognition Design](internal/agentconfig/META-COGNITION.md) |
| **Security** | [Authentication](docs/security/Security-Authentication.md) · [SSRF Protection](docs/security/SSRF-Protection.md) |
| **Operations** | [Admin API](docs/management/Admin-API-Design.md) · [Observability](docs/management/Observability-Design.md) · [Testing](docs/testing/Testing-Strategy.md) |

## 👥 Contributing

We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.

1. Fork the repository
2. Create your feature branch (`git checkout -b feat/AmazingFeature`)
3. Commit with conventional messages (`git commit -m 'feat: add AmazingFeature'`)
4. Push to the branch (`git push origin feat/AmazingFeature`)
5. Open a Pull Request

> [!NOTE]
> All build/test/lint operations must use `make` targets. See `make help` for the full list.

## 🛡️ Security

If you discover a security vulnerability, please do NOT open a public issue. Report it via [SECURITY.md](SECURITY.md) or contact maintainers directly.

## 📜 License

Distributed under the [Apache License 2.0](LICENSE).