Tavily Hikari
Tavily Hikari 是 Rust + Axum proxy,用于 Tavily MCP endpoint:它复用多 API key、匿名化上游请求、把完整 audit logs 写入 SQLite,并附带 React + Vite web console 做实时可视化。README.md 与 README.zh-CN.md 说明这个项目同时服务英文/中文维护入口。
- Rust web service
- MCP server
- Dockerized dev
- SQLite
- React app
- README content contract
- Service ports
- Worktree bootstrap
目录
技术栈
运行与交付
- CI 工作流
- ci.yml
- 能力标记
- cargo_toml
- docker_compose
- dockerfile
- github_actions
- package_json
- package_lock
依赖与工具
- package.json
- 开发依赖
- @commitlint/cli
- @commitlint/config-conventional
- @modelcontextprotocol/inspector
- @tavily/core
- commitlint-plugin-function-rules
- dprint
- 项目脚本
- test:tavily-http
配置与质量
- 配置文件
- .gitignore
- Cargo.toml
- docker-compose.yml
- dprint.json
- lefthook.yml
- package-lock.json
- package.json
- rust-toolchain.toml
其他信息
- Cargo
- Deps main
- async-stream
- axum
- base64
- bytes
{
"cargo": {
"deps_main": [
"async-stream",
"axum",
"base64",
"bytes",
"chrono",
"clap",
"dotenvy",
"futures-util",
"html-escape",
"nanoid",
"rand",
"reqwest",
"rust-mcp-schema",
"serde",
"serde_json",
"sha2",
"sqlx",
"thiserror",
"tokio",
"tower"
]
},
"ci_workflows": [
"ci.yml"
],
"configs_root": [
".gitignore",
"Cargo.toml",
"docker-compose.yml",
"dprint.json",
"lefthook.yml",
"package-lock.json",
"package.json",
"rust-toolchain.toml"
],
"markers_present": [
"cargo_toml",
"docker_compose",
"dockerfile",
"github_actions",
"package_json",
"package_lock"
],
"package_json": {
"deps_dev": [
"@commitlint/cli",
"@commitlint/config-conventional",
"@modelcontextprotocol/inspector",
"@tavily/core",
"commitlint-plugin-function-rules",
"dprint"
],
"scripts": [
"test:tavily-http"
]
}
}Purpose
Tavily Hikari 是 Rust + Axum proxy,用于 Tavily MCP endpoint:它复用多 API key、匿名化上游请求、把完整 audit logs 写入 SQLite,并附带 React + Vite web console 做实时可视化。README.md 与 README.zh-CN.md 说明这个项目同时服务英文/中文维护入口。
Taxonomy
- Tags: Rust web service, MCP server, Dockerized dev, SQLite, React app, README content contract, Service ports, Worktree bootstrap
- Why / evidence: 这些 tags 来自 checked-out repo 和 catalog record。主要证据包括
README.md、README.zh-CN.md、Cargo.toml、Dockerfile、docker-compose.yml、docs/high-anonymity-proxy.md、package.json、web/package.json,以及 worktree 相关的docs/specs/worktree-bootstrap-contract/SPEC.md、docs/specs/worktree-bootstrap-contract/IMPLEMENTATION.md、scripts/install-hooks.sh、scripts/worktree-bootstrap.sh、scripts/worktree-setup.sh与scripts/test-worktree-bootstrap.sh。Topic token 的大小写以对应技术/工作流的官方写法为准;slug 只作为稳定 ID,不直接充当项目标题。
Repository map
Cargo.toml是 Axum/MCP proxy 服务 manifest。src/保存 key pool、routing、audit、admin API 等 Rust 逻辑。web/是 React/Vite 控制台,作为 embedded admin UI 随服务发布。Dockerfile与docker-compose.yml提供 container deployment,compose 默认PROXY_PORT=8787、PROXY_DB_PATH=<runtime-data>/tavily_proxy.db。
Runtime and delivery
本地/部署都围绕 Rust service + SQLite。docker-compose.yml 暴露 8787:8787 并挂载 tavily-hikari-data;根 package.json 仅提供辅助测试脚本 test:tavily-http。环境变量 PROXY_BIND、PROXY_PORT、PROXY_DB_PATH、WEB_STATIC_DIR 是部署 contract。linked worktree 的入口由 scripts/install-hooks.sh 和 shared post-checkout 负责,首次 checkout 会 copy-missing root env、安装 root / web / docs-site 依赖并执行 cargo fetch --locked;需要严格修复时统一走 scripts/worktree-setup.sh,而不是拼接启动脚本。
Architecture notes
核心是 high-anonymity MCP forwarding:只转发 /mcp,敏感 headers 被剥离或重写;SQLite 维护 key affinity、last-used、exhausted 状态和 audit log;admin UI/API 负责 key 管理与可视化。MCP server Topic 是主语义,React UI 只是运营面。
Workflow and quality gates
.github/workflows/ci.yml 是当前 CI 入口。Dockerfile 使用 Rust builder + slim runtime,Compose 提供持久化卷。相比 label-driven release 项目,这里 release 机制更轻;验证重点应放在 Rust tests、HTTP/MCP proxy smoke、Docker compose 和 SQLite migration。
Reusable decisions
- 把 audit log 放 SQLite,适合单节点 key pool 代理。
- 高匿名 forwarding 要在 docs 中明确,不要让 admin UI 泄露上游 secret。
- Compose 的 env/volume 是部署记忆,Topic 中要保留。
- README 顶部的 Release、CI Pipeline、Rust badges 分别链接 GitHub Releases、
ci.yml的 main workflow 和rust-toolchain.toml;Badge 是可验证状态的紧凑入口,不替代产品说明或真实质量门禁(README.md、README.zh-CN.md、skills/style-playbook/references/data/projects/tavily-hikari.json)。 - 运行态恢复应拆成自动 best-effort 与手动 strict repair:自动路径不阻断 checkout,手动入口才聚合失败;
.env只 copy-missing,不覆盖 linked worktree 已有本地状态(docs/specs/worktree-bootstrap-contract/SPEC.md)。
Risks and open questions
- Tavily status code/limit 语义变更会影响 exhausted key 规则。
- MCP forwarding 安全边界不能被通用 proxy refactor 破坏。
- Docker Compose 端口 8787 是默认,不应在本地预览时不经租约直接占用。
Evidence index
README.mdREADME.zh-CN.mdCargo.tomlDockerfiledocker-compose.ymldocs/high-anonymity-proxy.mdpackage.jsonweb/package.json.github/workflows/ci.ymldocs/specs/worktree-bootstrap-contract/SPEC.mddocs/specs/worktree-bootstrap-contract/IMPLEMENTATION.mdscripts/install-hooks.shscripts/worktree-bootstrap.shscripts/worktree-setup.shscripts/test-worktree-bootstrap.sh
相关内容
Dockerized dev
主题Dockerized dev 标记 Dockerfile、Compose 或 container build 是本地开发、集成验证或部署交付的一等路径。它不表示“仓库里偶然有 Dockerfile”,而是 Docker 影响运行环境、数据卷、端口、build args、嵌入式前端产物或 release artifact。
Embedded admin UI
主题Embedded admin UI 表示 operator/admin UI 不是独立部署的前端产品,而是主服务交付物的一部分,通常由同一个 release binary、同一个镜像或同一个部署单元一起提供。这里的重点是交付和边界耦合,而不是框架选型。 这个 Topic 用来回答“控制台为什么要随服务一起发、一起验、一起部署”。
MCP server
主题MCP server 表示仓库主要交付一个 Model Context Protocol 服务面,供 agent/client 通过 MCP 调用工具、资源或相关能力。这里的重点不是“有 HTTP API”,而是协议层契约、工具语义和上游/下游映射。
React app
主题React app 标记 React 是主要用户界面、管理台、控制台或嵌入式操作面 runtime。这里关心的是 route、component tree、client state、表单流、dashboard 交互和前端构建后的真实运行边界,而不是“项目依赖里有 React”。 这个 Topic 用来回答“用户实际操作的是不是一个 React runtime,以及它在系统里承担什么职责”。
README content contract
主题README content contract 是面向项目入口文档的可审查规范:README 先让目标读者理解产品、边界和下一步,再提供可复现的 Quick Start、集成 contract、交付语义、文档真相源、许可证入口、有限产品 preview,以及有来源的 Logo 和 Badge 入口。
Rust web service
主题Rust web service 表示 Rust binary 承担长期运行的服务职责:提供 HTTP API、proxy、SSE、docs/data service、admin backend 或 ops daemon,并对外暴露稳定的网络、存储和部署边界。这里的关键词不是“Rust”,而是“服务进程”。 这个 Topic 不只是“语言是 Rust”。
Service ports
主题Service ports 表示端口号、bind 地址、dev/prod 暴露方式和多组件端口分工本身就是仓库的稳定 contract。它不是“服务都会有端口”这种空泛事实,而是说端口设计会直接影响本地预览、反向代理、权限边界、自动化脚本和故障排查。 这个 Topic 关注的是端口作为系统边界的那一面。
SQLite
主题SQLite 表示项目把 SQLite 作为默认持久层、ledger、audit log、content/settings store 或低运维 embedded database,并围绕它建立路径、schema、迁移、volume、备份和运行时 ownership 约定。它不是“依赖树里有 sqlite”这么宽,而是数据库文件本身已经成为系统 contract 的一部分。
Worktree bootstrap
主题Worktree bootstrap 表示仓库把 linked worktree 的“首次进入可开发状态”当成正式 contract 来维护,而不是依赖维护者记忆、散落且无统一入口的手工 checklist,或假定只有主工作区才值得被照顾。