ventrox
Enables coding agents to log friction events (tried, failed, minutes lost) and allows reviewers to cluster, rank, and resolve these vents locally without network access.
README
Ventrox
A coding agent hits the same wall many times a day, and nobody sees it.
Ventrox adds one tool call to the agent: what it tried, what failed, minutes lost.
The agent cannot read vents back; the server stamps each with session, project, branch, and time.
A reviewer starts VENTROX_SECRET=$(ventrox grant) claude and lists vents grouped by rough similarity, ranked by count and minutes.
The wall that cost the most minutes comes first.
A few hundred lines of Python, one SQLite file in your home directory, two commands to install.
Nothing goes over the network, and nothing lands in your repo.
Clustering is TF-IDF on n-grams and misses synonyms; redaction is a regex list, best effort.
Limits: 20 vents per session, 5 per 10 minutes.
The idea comes from Lovable's vent tool and vent-widget.
Install
Install Ventrox as a global tool:
uv tool install git+https://github.com/Vetrox/ventrox.git
Or clone and install from the checkout:
git clone https://github.com/Vetrox/ventrox && cd ventrox && uv tool install .
Then run setup:
ventrox setup
Setup copies the ventrox-report and ventrox-review skills into ~/.claude/skills/.
It then registers the MCP server with claude mcp add --scope user ventrox -- ventrox.
Use
Reporter: the agent calls ventrox_vent with tried, failed, and minutes_lost.
It writes one vent per turn, and only after the same friction repeats (two failures or more than 10 minutes).
It corrects a vent in the same session with ventrox_edit.
The server accepts 20 vents per session and 5 vents per 10 minutes.
Reviewer: start a session with a single-use token:
VENTROX_SECRET=$(ventrox grant) claude
The token is single-use and valid for 10 minutes. The session then holds the reviewer tools. Call them in this order:
ventrox_reclustergroups open vents by vocabulary overlap.ventrox_clusterslists the groups ranked by open count, then minutes lost.ventrox_resolve_clustermarks a groupresolvedorwontfix.
Uninstall
ventrox setup --remove
uv tool uninstall ventrox
rm -r ~/.local/share/ventrox # deletes all vents
Tools
| Tool | Mode | Arguments | Returns |
|---|---|---|---|
ventrox_vent |
reporter | tried, failed, minutes_lost |
id, or error |
ventrox_edit |
reporter | id, plus any of tried, failed, minutes_lost |
ok |
ventrox_get |
reviewer | id |
the vent, or error |
ventrox_search |
reviewer | query, status (optional), limit (default 20, max 100) |
results, newest first |
ventrox_clusters |
reviewer | none | clusters ranked by open count, then minutes lost |
ventrox_recluster |
reviewer | none | clusters count, vents count |
ventrox_resolve |
reviewer | id, status (resolved or wontfix) |
ok |
ventrox_resolve_cluster |
reviewer | cluster_id, status (resolved or wontfix) |
ok, changed count |
Text fields hold 1 to 4000 characters. minutes_lost ranges from 0 to 1440.
Environment variables
| Variable | Purpose | Default |
|---|---|---|
VENTROX_HOME |
Data directory | unset |
VENTROX_SESSION |
Session ID | generated per process |
VENTROX_SECRET |
Grant token for a reviewer session; single-use, valid 10 minutes | unset |
VENTROX_EXAMPLES |
Path to a file with project examples | unset |
VENTROX_MAX_PER_SESSION |
Vents the server accepts per session | 20 |
VENTROX_MAX_PER_10MIN |
Vents the server accepts per 10 minutes | 5 |
Data location
The server picks the first of $VENTROX_HOME, $XDG_DATA_HOME/ventrox, and ~/.local/share/ventrox.
All vents live in vents.db in that directory.
The file is plain SQLite with no encryption; only file permissions protect it.
The server refuses to start when the data directory is inside a git worktree, and exits with code 2.
Skills
ventrox-report tells the agent when a friction counts as a vent and what the three fields must contain.
ventrox-review tells a reviewer to run recluster, clusters, then resolve.
ventrox setup installs both.
Project examples
Put a .ventrox.md file at the project root to add project-specific examples of good vents.
Set VENTROX_EXAMPLES to a file path to add examples for all projects.
The server appends both to the ventrox_vent tool description.
Develop
uv sync
uv run pytest
uv run ventrox
Non-goals
Ventrox does not sync to an issue tracker. It has no multi-user mode. It records no tool-call traces, only the three fields the agent writes. It opens no network connection.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。