ventLABSCO SUMMARY
Feedback that survives the session.
An agent that hits the same paper cut ten times normally leaves ten sentences in ten transcripts nobody reads. This turns each of those into a line in a JSONL file or a message in the channel where you would have wanted it. Note that the event id is a trace id, not a deduplication key — nothing stops an agent venting the same issue twice.
What it is
A small Rust STDIO server. When an agent hits blocked work, a repeated failure, a missing capability or a confusing workflow, it sends a short message to a channel; the server routes that channel to its configured sinks. The crate is vent-mcp and the binary it installs is named vent.
What you get
vent— send one piece of feedback to the default channel or a named one; the reply is an acknowledgement with an event idlist_channels— list the configured channels and their descriptions- A tool surface that shrinks itself: with only the default channel configured,
list_channelsis hidden andventaccepts nothing but a message - Sinks per channel — a local JSONL file, a webhook, or both at once
- Built-in webhook payload shapes for Slack, Discord, Microsoft Teams, Google Chat, Webex, Mattermost, IFTTT, Zapier, Make, n8n, Pipedream and Workato, plus a raw mode
- The same binary works from a shell, so you can file a vent by hand
Requirements
Rust 1.88 or newer and Cargo for cargo install vent-mcp, or a prebuilt archive from the releases page. Any MCP client that runs a local STDIO server — claude mcp add --transport stdio vent -- vent. A default config is written to ~/.config/vent-mcp/config.toml on first run with one channel and one JSONL sink; webhook sinks read their auth headers from environment variables you export before the client starts. MIT licensed.
Setup effort
Follow the published steps — cargo install vent-mcp
USE CASES
Catching the friction your agent keeps running into
Point the default channel at the JSONL sink and read the file weekly — the complaints are already written as actionable sentences.
Routing build and pipeline failures to the team chat
Add a second channel whose sinks are the log plus a Discord webhook, so blocked CI work shows up where someone will see it.
Keeping the tool surface minimal
Run with a single channel and the agent sees exactly one tool taking one argument — nothing to choose wrong.
2 tools
Listed in project docs. Your client may show a different list.
list_channelsBEFORE YOU INSTALL
What to know first
Tools you get
2 tools named in the project's documentation.
Requires
Rust 1.88 or newer and Cargo (or a prebuilt binary from GitHub Releases)
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
Prerequisites: Rust 1.88 or newer and Cargo, and an MCP client that can run a local STDIO server.
Install the vent binary from crates.io (or download a prebuilt archive from https://github.com/bnomei/vent-mcp/releases, extract it and put vent on your PATH):
cargo install vent-mcpRun vent list once to create the default config at ~/.config/vent-mcp/config.toml (or $XDG_CONFIG_HOME/vent-mcp/config.toml).
vent listRegister vent with your client as shown in the client tabs. Use an absolute path to vent if the client does not inherit your shell PATH.
MCP Clients
Codex
codex mcp add vent -- ventClaude Code
claude mcp add --transport stdio vent -- vent