Releases: theuselessai/plit-gw
Releases · theuselessai/plit-gw
v0.3.2
What's Changed
- Refactored README for standalone gateway crate
- Added Library Usage section (
plit_gw::run().await) - Added Ecosystem links (plit CLI, Pipelit)
- Updated crates.io badge and metadata
- Fixed Codecov slug after repo rename
Full Changelog: https://github.com/theuselessai/plit-gw/commits/v0.3.2
v0.2.0 — CLI Tool & Foundation
msg-gateway v0.2.0
Second release — introduces the gw-cli command-line client, Cargo workspace restructure, and major feature additions across the gateway.
Binaries
| Binary | Size | Description |
|---|---|---|
gw-server |
13M | Gateway server (renamed from msg-gateway) |
gw-cli |
6.6M | CLI client for chat, admin, and agent integration |
Highlights
gw-cli — New CLI Tool
- Interactive chat REPL (
gw-cli chat) with WebSocket streaming - One-shot send (
gw-cli send) — pipe-friendly, reads from stdin or--text - WebSocket listener (
gw-cli listen) — streams JSONL for agents and scripts - Credential management (
gw-cli credentials list/create/activate/deactivate) - Health check (
gw-cli health) — exit code 0/1 for scripting - TTY-aware output: human-readable on terminal, JSON when piped
- Environment variable support:
GATEWAY_URL,GATEWAY_TOKEN,GATEWAY_ADMIN_TOKEN
CEL-Based Guardrails
- Inbound message filtering with CEL expressions
- Hot-reload: rule changes apply without restart
- Actions:
block(reject with 403) orlog(audit only) - XDG-compliant config path resolution
OpenCode Backend (Built-in)
- REST + SSE integration with session management
- File attachment support and long response handling
- Fire-and-forget with SSE response delivery
Named Backends with Per-Credential Routing
- Multiple backend instances (e.g. separate Pipelit + OpenCode)
- Each credential routes to a specific named backend
- External backend subprocess protocol
Other Improvements
- Cargo workspace restructure (
gw-server+gw-cli) - File upload API with multipart support
- Message format redesign:
files[],extra_data,reply_to_message_id - E2E test framework with Cucumber-JS (19+ scenarios)
- External backend adapter subprocess protocol
- Comprehensive documentation updates
Upgrade Notes
- Binary renamed:
msg-gateway→gw-server - Config route fields changed:
workflow_id/trigger_id→workflow_slug/trigger_node_id(to match Pipelit API) - New config fields:
guardrails_dir,backends_dir,backend_port_range
Full Changelog
v0.1.0 - Initial Release
msg-gateway v0.1.0
First public release of msg-gateway, a standalone Rust message gateway that bridges user-facing communication protocols to backend agent protocols.
Features
Core Gateway
- HTTP server with Axum framework
- Config hot reload with file watcher
- Health monitoring with emergency mode and message buffering
- File caching for inbound/outbound attachments
Protocol Adapters
- Generic (built-in): REST + WebSocket for custom integrations
- Telegram (external): Python adapter with subprocess management
- External adapter architecture for Discord, Slack, Email (extensible)
Backend Protocols
- Pipelit: Webhook + callback pattern
- OpenCode: REST + SSE polling
Admin API
- CRUD operations for credentials
- Activate/deactivate credentials
- Health status monitoring
CI/CD
- GitHub Actions: lint, test, build
- Code coverage with cargo-llvm-cov + Codecov (~80%)
- AI code review with Anthropic Claude
Configuration
Uses JSON config with ${ENV_VAR} syntax for secrets:
{
"gateway": {
"listen": "0.0.0.0:8080",
"admin_token": "${ADMIN_TOKEN}"
},
"auth": {
"send_token": "${SEND_TOKEN}"
},
"credentials": {}
}Documentation
See docs/dev-plans/ for design documents and development plans.