Vexa
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Beschreibung vom Entwickler (englisches Original)
Local-first MCP server for your own LINE and Telegram chats. Data stays on your machine.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Der Entwickler hat in der Registry keine Installationsangaben gemacht. Sieh dir unten die README des Entwicklers an.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 6. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto echoedinvoker bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.0) kam vor 3 Monaten in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code.
In derselben Kategorie: Vexa, emailmd, MCP WhatsApp Cloud
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.
MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
Local-first personal chat data layer daemon. Connects IM platforms (v0.1: LINE) via child-process adapters, stores messages to JSONL + SQLite/FTS5, exposes MCP tools for AI clients.
chatmux is the core. Platforms plug in below it, consumers sit above it, and both sides of that boundary live in their own repos:
| Repo | Role |
|---|---|
| chatmux (this one) | Core daemon: storage, safety rail, MCP server, LINE adapter |
| chatmux-adapter-telegram | Second platform adapter (Telegram, MTProto user session) |
| chat.nvim | Reference consumer: read and reply to chats inside Neovim |
Adapters speak the adapter protocol; consumers speak MCP. Either side can be replaced without touching the other.
git clone https://github.com/echoedinvoker/chatmux.git
cd chatmux bun install
With no adapters.json, bun run start launches the LINE adapter, which means step 3 puts your LINE account on the line — read Account Risk Warning before you run it. If you would rather look around first, start with no adapter at all:
mkdir -p ~/.local/share/chatmux
cat > ~/.local/share/chatmux/adapters.json <<'JSON' { "adapters": [], "mcp": { "port": 7717 } } JSON bun run start
The daemon comes up with storage and the full MCP interface — you can initialize, list tools, and read resources. There is simply no chat data behind them until an adapter is connected. Set CHATMUX_DATA_DIR to keep this trial run out of your real data directory:
CHATMUX_DATA_DIR=/tmp/chatmux-trial bun run start
Each entry in adapters takes platform, a command string, and an args array (plus optional cwd and env):
{ "platform": "telegram", "command": "python", "args": ["-m", "chatmux_adapter_telegram"] }
For Telegram, follow the setup in chatmux-adapter-telegram — it has its own credentials and login flow, and does not involve LINE.
bun run start
Register the daemon's MCP endpoint with Claude Code:
claude mcp add --transport http chatmux http://127.0.0.1:7717/mcp
claude mcp list # chatmux: ... - ✔ Connected
The daemon listens on two transports at once: a TCP port on `127.0.0.1` (default 7717) for standard MCP clients like Claude Code, and a unix socket for same-host sidecar consumers like chat.nvim. Use the TCP url for Claude Code — the MCP spec only defines stdio and streamable HTTP transports, so no MCP client accepts a unix socket path.
Port is configurable via CHATMUX_MCP_PORT, or mcp.port in adapters.json; set it to 0 to disable the TCP listener. See docs/mcp-interface.md.
LINE adapter ←── stdio JSON-RPC ──→ core daemon ←── MCP Streamable HTTP ──→ Claude Code
(Node+tsx) (child process) (Bun) (127.0.0.1 TCP / unix) (MCP client) ├─ SafetyRail ├─ Storage (JSONL → SQLite/FTS5) ├─ Adapter Runner └─ MCP Server
| Tool | Description |
|---|---|
list_chats | List chats with last message preview, search, pagination |
read_messages | Read messages from a chat, paginated by timestamp |
read_events | Tail the event log from an opaque cursor — resumable, survives backfill reordering, and re-delivers a message when it is edited or retracted |
search_messages | Full-text search (CJK supported via FTS5 trigram + LIKE fallback) |
send_message | Send message through SafetyRail (rate-limited, error-tracked) |
get_media | Local file path for a message's image or sticker; downloads and caches on first call |
probe_latest | Diagnostic, read-only: ask the adapter for a chat's newest N messages without landing them |
get_status | System status: adapter connection + storage stats |
| URI | Description |
|---|---|
chat://chats | All chat list |
chat://chats/{id}/messages | Recent messages for a chat |
chat://chats/{id}/info | Chat details with members |
chat://status | System status |
Core exposes primitives, not policy. Anything that decides *what matters* — which chats are worth surfacing, where a notification goes, when to stay quiet — belongs in a consumer, on the far side of the MCP boundary.
examples/notifier/ is a working reference: it tails the event log with a persisted cursor and hands each message to a hook you fill in. Its mcp-client.ts uses raw fetch rather than the TypeScript SDK, so it doubles as a wire-protocol reference for consumers in any language.
cp config/chatmux.service ~/.config/systemd/user/
systemctl --user daemon-reload systemctl --user enable --now chatmux
Edit WorkingDirectory to point at your clone before copying it.
The unit ships Restart=always, not on-failure. A chat backend is supposed to be there all day, and there are three ways it can stop being there — it crashes, something sends it a signal, or it exits cleanly — of which on-failure only recovers from the first. systemctl --user stop still stops it: a stop you asked for is not a failure, under either setting.
⚠️ **If you are on an older unit with
Restart=on-failure,kill -TERMwill not bring
it back — and that is not a missing restart policy.** systemd counts SIGTERM, SIGHUP,
SIGINT and SIGPIPE as an intended stop, so
on-failureleaves the service sitting in
inactiveafter any of them. Onlykill -9(SIGKILL) counts as a failure there.
With the
Restart=alwaysthis unit now ships, TERM comes back too — measured
2026-08-02:
kill -TERM $MainPIDmovedNRestarts1 → 2 and produced a newMainPID
within the 10s
RestartSec. That makes TERM the useful test:kill -9restarts under
*either* setting, so it cannot tell you which one is in effect. If you want to confirm
alwaysis live, send TERM and watchsystemctl --user show chatmux -p MainPID,NRestarts
change.
StartLimitIntervalSec=300 / StartLimitBurst=5 cap a crash loop: five starts inside five minutes and systemd stops trying, leaving the unit failed for you to look at rather than restarting into the same wall forever. Clear it with systemctl --user reset-failed chatmux.
A systemd user service is the intended way to run chatmux. If you want it in a container instead, deploy/container/ is a reference that builds and answers — not an official image, and it runs zero adapters, because adapters hold logged-in sessions and a container you rebuild is the wrong home for those.
The one thing you cannot skip is CHATMUX_MCP_HOST. The daemon binds 127.0.0.1 by default, which inside a container is the container's own loopback — a published port then maps to a socket nobody is listening on, and every connection is refused while the logs look perfectly healthy. Read deploy/container/README.md before assuming your port mapping is broken.
bun run dev # Start with --watch (auto-reload)
bun test # Run all tests bun run start # Start daemon
See docs/ for detailed architecture and protocol documentation.
Known and accepted, with what would make each worth revisiting.
chat://chats is hard-coded to that limit. Consumers can detect an overflow by comparing the total field against what arrived, so it will not bite you without saying so. Worth raising once a vault approaches ~500 chats, or the first time that completeness check fires.supported_events for this one. Worth fixing as soon as any consumer does branch on it, or once that product question gets an answer.This project uses @evex/linejs, an unofficial LINE client library. Using unofficial APIs may violate LINE's Terms of Service. Your LINE account may be restricted, suspended, or permanently banned. Use at your own risk.
The IOSIPAD device slot is used to avoid interfering with your phone's LINE app, but LINE may change their multi-device policy at any time.
This software is provided "as is", without warranty of any kind. The author is not responsible for any consequences of using this software, including but not limited to account restrictions, data loss, or violations of third-party terms of service.
This is a personal tool for personal use. Do not use it for spam, harassment, unauthorized access to others' messages, or any illegal activity.
chatmux stores decrypted message content in plaintext on your local machine:
~/.local/share/chatmux/events.jsonl — all events (append-only)~/.local/share/chatmux/chatmux.db — SQLite database with messages, contacts, chats~/.local/share/chatmux/adapters/line/auth.json — LINE auth token~/.local/share/chatmux/adapters/line/storage.json — E2EE key storageThese files are protected by filesystem permissions (o
Nur der Anfang wird gezeigt; den Rest findest du im Repo