汽车旅馆
本地 OpenTeleometry 摄入 + TUI 浏览器用于开发, 由 SQLite (英语). 将您的应用程序的 OTLP/ HTTP 导入到本地的汽车旅馆服务器 并调试实时证据——来自终端,内置网络 UI,或直接取自AI编码代理.
对于代理商:安装汽车旅馆调试技能
motel 教授克洛德密码 OpenCode的伴奏技巧,
光标、 Codex 和 40 + 其他代理 如何调试运行时的证据
通过查询汽车旅馆的本地OTLP商店。 安装一次,任何未来
项目中的代理会话将知道如何使用它.
# Project-local (adds to .claude/skills, .agents/skills, etc.)
npx skills add aryasaatvik/motel --skill motel-debug
# Or globally, for every project
npx skills add aryasaatvik/motel --skill motel-debug -g
见全能在 skills/motel-debug/SKILL.md。 。 。 .
对人类:安装和运行TUI
汽车旅馆在npm上发行 @aryasaatvik/motel二进制是一个 Bun
剧本,所以Bun一定在你身上 PATH 运行时间 :
# one-off (no install)
bunx @aryasaatvik/motel
# or install globally
bun add -g @aryasaatvik/motel
motel
# npm also works (Bun still required to run it)
npm install -g @aryasaatvik/motel
没有邦?
curl -fsSL https://bun.sh/install | bash -s "bun-v1.4.4"
motel 启动本地 OTLP 摄入服务器
http://127.0.0.1:27686 并发射TUI. 新闻 ? 一次进去
键盘作弊表,或 c 复制粘贴准备设置指令
用于任何您想要跟踪的效果/OTEL应用程序.
所需经费: 阿宝 匹配 package.json engines.bun (单位:千美元)>=1.4.4) (中文(简体) ).
macOS 服务从维护的退出
每个用户的发射代理
~/.bun/bin/bun ~/.bun/bin/motel server。用于保持核对
安装、准备和链接合并 dev 安装前退出
服务:
bun install --frozen-lockfile
bun run web:build
bun link
motel service install
此服务路径不会发现 npm- global 或任意 PATH
可执行文件 . motel service install 验证两个稳定的 Bun bin 路径
写入或装入发射代理。 重新运行它留下一个等效的加载
服务不变并加载当前相同的定义
已经卸下.
保留设置( MOTEL_OTEL_RETENTION_* 财务报告和审定财务报表
MOTEL_OTEL_MAX_DB_SIZE_MB 变量)在安装环境中设置为
写入发射代理。 替换保存已安装的保留值
安装环境没有设置,以及 motel service status 报告
与已安装的值不同的请求值为
EnvironmentVariables.<name> 漂移 :
MOTEL_OTEL_MAX_DB_SIZE_MB=4096 motel service install --replace
您的应用程序如何连接
一旦汽车旅馆开业,请将您的应用程序的 OTLP/HTTP 出口商指向这些 本地端点 :
http://127.0.0.1:27686/v1/traces
http://127.0.0.1:27686/v1/logs
Motel将一切保存在一个机器全球本地SQLite数据库中
${XDG_STATE_HOME:-~/.local/state}/motel/telemetry.sqlite一个管理
守护进程在本地项目中共享 。 无多克,无云帐.
该店默认保留了7天的遥测,目标为1GB
使用边框背景批次的活数据上限。 保存最近的数据时
最古老的完成的痕迹和日志先被取出。 配置策略
与 MOTEL_OTEL_RETENTION_HOURS, (中文(简体) ), MOTEL_OTEL_MAX_DB_SIZE_MB, (中文(简体) ),
MOTEL_OTEL_RETENTION_TRACE_BATCH, (中文(简体) ), MOTEL_OTEL_RETENTION_ROW_BATCH, (中文(简体) ),
MOTEL_OTEL_RETENTION_LOG_BATCH,以及
MOTEL_OTEL_RETENTION_INTERVAL_SECONDS。 。 。 .
未创建的现有数据库
增量自动真空在启动时永远不会默写; 删除页面
重新使用,但缩小这样的历史文件需要明确的离线
SQL 点 VACUUM 由用户选择.
配置
装入的过程 src/config.ts 解析一个基础 URL,顺序为 :
MOTEL_OTEL_BASE_URL, (中文(简体) ), MOTEL_OTEL_QUERY_URL, (中文(简体) ), MOTEL_OTEL_COLLECTOR_URL, (中文(简体) ),
接下来 http://127.0.0.1:27686。查询 URL 是该基础 URL。 主机是
MOTEL_OTEL_HOST,或基址主机名。 端口为 MOTEL_OTEL_PORT 何时
它是一个正整数,否则就是基准 URL 端口,否则就是80。 追踪
和日志导出者 URL 默认为该基数 v1/traces 财务报告和审定财务报表 v1/logs。 。 。 .
motel start,而TUI发射的守护进程,则构建收听地址
从 MOTEL_OTEL_BASE_URL,则 MOTEL_OTEL_QUERY_URL,则
http://127.0.0.1:27686. 缺失的港口变为27686个. 产入的服务器
接收该收听地址作为其基础 URL,查询 URL,主机,端口,以及
出口国 URL( 听取源头加 /v1/traces 财务报告和审定财务报表 /v1/logs) (中文(简体) ). 这个
数据库文件分别解决 : MOTEL_OTEL_DB_PATH,或
telemetry.sqlite 在运行时目录中.
整数设置将空白的,非数字的,非正值视为未设置.
MOTEL_OTEL_QUERY_CAPACITY 上限为64和
MOTEL_OTEL_QUERY_DEADLINE_MS 在三万块.
| 变量 | 默认 | 它会做什么 |
|---|---|---|
MOTEL_OTEL_BASE_URL | http://127.0.0.1:27686 | 解析了基础 URL并查询 URL. 以上倒数第一选择. |
MOTEL_OTEL_QUERY_URL | 未设定 | 基准 URL 当 MOTEL_OTEL_BASE_URL 未设定。 查询 URL 等于 已解决的基址 . |
MOTEL_OTEL_COLLECTOR_URL | 未设定 | 只有当上面两个URL都未被设置时,才建立基础 URL 。 管理中的守护进程未使用 . |
MOTEL_OTEL_HOST | 基础 URL 主机名( R)127.0.0.1(中文(简体) ) | 主机名 服务器绑定 . |
MOTEL_OTEL_PORT | 基准 URL 端口( R)27686(中文(简体) ) | 端入服务器绑定 . src/config.ts 当 URL 没有端口时使用 80; 管理守护进程使用 27686. |
MOTEL_OTEL_SERVICE_NAME | motel-otel-tui | 汽车旅馆自己的出口商和CLI默认服务上的名字. 一个非空白值也是TUI的初始服务. 布兰克保留了记忆中的TUI服务. |
MOTEL_OTEL_ENABLED | false | 从TUI和CLI出口汽车旅馆自己的痕迹和日志. 白兰地, 0, (中文(简体) ), false, (中文(简体) ), no,以及 off 关闭; 任何其他值打开. |
MOTEL_OTEL_EXPORTER_URL | 基础 URL + /v1/traces | 在那些自出口的岗位上. |
MOTEL_OTEL_LOGS_EXPORTER_URL | 基础 URL + /v1/logs | 那边有自出品记录. |
MOTEL_RUNTIME_DIR | ${XDG_STATE_HOME:-~/.local/state}/motel | 状态目录:默认数据库,守护进程日志,锁定和实例注册. |
MOTEL_OTEL_DB_PATH | $MOTEL_RUNTIME_DIR/telemetry.sqlite | SQLite 文件 (中文(简体) ). 每台机器一个共享数据库,除非设置此数据库 . |
MOTEL_URL | 未设定 | MCP客户端的基础URL. 设定时,发现使用它而不是实例登记. |
MOTEL_OTEL_TRACE_LOOKBACK_MINUTES | 1440 | 年龄窗口,在几分钟内, 用于服务发现 和存储查询, 忽略回放。 HTTP 列表和搜索路径发送自己的 lookback (默认为60分,最高为1440分). |
MOTEL_OTEL_TRACE_LIMIT | 100 | 追踪 TUI 和 CLI 追踪命令, 省略一个限制 。 HTTP 列表路由自发 limit。 。 。 . |
MOTEL_OTEL_LOG_LIMIT | 80 | TUI服务日志的日志计数,TUI追踪日志,以及CLI日志命令. HTTP 日志路径自发 limit。 。 。 . |
MOTEL_OTEL_QUERY_CAPACITY | 8 (最多64个) | 每次运行时未完成的只读查询 。 过载为 HTTP 503 QUERY_OVERLOADED。 。 。 . |
MOTEL_OTEL_QUERY_DEADLINE_MS | 5000 (最多300 000美元) | 一个只读查询的队列加启动截止日期 。 过期为 HTTP 504 QUERY_DEADLINE。 。 。 . |
MOTEL_OTEL_RETENTION_HOURS | 168 | 对已完成的痕迹和原木进行年龄限制. |
MOTEL_OTEL_MAX_DB_SIZE_MB | 1024 | MB 中的活动数据目标 : (page_count - freelist_count) * page_size。不是硬文件大小的盖. |
MOTEL_OTEL_RETENTION_TRACE_BATCH | 100 | 完成的痕迹标记每个清理通道. |
MOTEL_OTEL_RETENTION_ROW_BATCH | 1000 | 每个清理通道删除行,分出痕迹和日志. 捆起行数,不是一地大小. |
MOTEL_OTEL_RETENTION_LOG_BATCH | 5000 | 每个清理通道标记的日志. |
MOTEL_OTEL_RETENTION_INTERVAL_SECONDS | 10 | 闲取清净通后延. 清理工作仍在取得进展,等待100毫秒. |
代理连接方式
特工与 motel-debug 已安装的技能将自动使用
汽车旅馆的HTTP API。 完整的 OpenAPI 光谱在
http://127.0.0.1:27686/openapi.json -关键终点是:
GET /api/health liveness check
GET /api/services services reporting telemetry
GET /api/traces?service=<service> recent traces for a service
GET /api/traces/<trace-id> full trace tree
GET /api/spans/<span-id> single span + logs
GET /api/logs?service=<service> recent logs
GET /api/traces/search?... structured trace search
GET /api/logs/search?... structured log search
GET /api/ai/calls AI SDK call inspector
TUI 密钥
?键盘作弊表j编号 :k或者说↑编号 :↓——移动选择enter编号 :esc- 钻入/后出(跟踪-瀑布-跨度细节)[编号 :]——开关服务tab切换服务日志/- 过滤器痕迹s周期类型(最近) 出错t--周期主题c——复制另一应用程序的粘贴准备设置指令o——在浏览器中打开所选的跟踪q——退出
隐私说明
汽车旅馆是本地开发工具 但你的应用可以发出敏感的信号 遥测. 相关日志可能包括秘密、标志或PII,如果您 app登录它们;AI调用痕迹可能包含全部即时内容并 响应文本。 将本地 SQLite 商店视为敏感开发 数据当指汽车旅馆 真正的工作量.
摄取准备
GET /api/health 报告处理身份和活性. GET /api/readiness 报告已缓存
不查询 SQLite 或加入摄取队列的写入诊断 。 它返回 HTTP
200块 ready,503用于 starting, (中文(简体) ), overloaded,或 failed。 。 。 . motel status 包括这个
当守护进程支持它时快照; 旧服务器仍然兼容 .
overloaded 表示等待请求至少5秒或至少64个请求
成绩突出。 这是一个压力信号,而不是重新启动一个共享守护进程的指示.
浪费时间并不意味着失败. failed 需要操作员
检查。 未完成的计数/字节描述等待呼叫者,而非持久排队的数据;
客户端取消无法取消 SQLite 承诺 。 空探测器不推进 lastCommitAt。 。 。 .
维护报告其最近的运行、持续时间和结果,没有遥测有效载荷.
运行 bun scripts/bench-shared-daemon.ts 或增加
--1gib 代表能力简介。 创建和移除自己的数据库,
包括一个持有的阅读器,以及报告要求的延迟百分位数、故障和数据库/WAL大小.
它们从未将共享的机器全球数据库作为基准.
同时期开始在原子上发布完整的共享锁. 确保行动维持生命
摄入缓慢时守护进程; 明确的操作员恢复仍然可以通过 motel restart。 。 。 .
无法读取的锁或中断的 Stale-lock 恢复失败并报告检查路径.
当维修作业重叠时,准备状态显示在完成作业之前运行时间最早的状态.
保留标记在去除所依赖行之前完成了痕迹和过期日志. 公开查询
结果隐藏了整个标记的痕迹,包括相关的日志,同时有限定的清理收益.
标记在重启时持续。 作为驱逐的一部分,有标记的痕迹的抵达被丢弃
而不计为插入的记录;一旦清理完成,后期导出可能会再创建该跟踪.
未选择活动跟踪 。 SQLite表是内部存储;直接的SQL消费者应该
使用该 retained_spans, (中文(简体) ), retained_logs,以及 retained_trace_summaries 查看此可见规则.
MOTEL_OTEL_RETENTION_ROW_BATCH 每个清理批次默认为 1000 个逻辑行, 分拆
痕迹和日志。 它约束了行中枢,而不是一个遥测场的大小. 清理产量
批次间100 ms在进展时,然后返回所配置的闲置间隔.
例行检查站使用PASSIVE,报告忙碌/机身清点情况;实际开垦
被搁置的读者被推迟。 配置的数据库目标和WAL大小限制不是硬盖.
现有无主属性/ FTS 条目用有边框的密钥集扫描进行修复; 正常摄入
维护用于索引清理的反向 FTS 映射.
查询一次使用一个只读的子进程, FIFO 录取上限为8个未完成
默认请求( e)MOTEL_OTEL_QUERY_CAPACITY,最多64个). 五秒期限包括:
队列和启动时间( t)MOTEL_OTEL_QUERY_DEADLINE_MS,最高为3000. 超载返回 HTTP 503
与 code: "QUERY_OVERLOADED"; 过期返回 504 与 code: "QUERY_DEADLINE"; 进程失败
返回 503 与 code: "QUERY_UNAVAILABLE"。成功的响应形状保持不变.
取消或到期执行查询终止其只读进程并等待退出 在发送下一个查询之前。 SQLite 运行在进程内部的线程中, 所以是一个 IPC 拥有者 如果守护进程或TUI死亡,断开也可以终止它. 摄取自有分作一工. HTTP闲置超时超过查询截止日期5秒. TUI 刷新飞行中的份额 负载、 过时的选项丢弃结果, 以及两个键的正面值按顺序排列 .