sctl
Shell Control — pronounced "scuttle" (yes, the Rustacean pun is intended).
Give AI agents hands-on access to Linux devices — routers, servers, IoT, VMs — across any network.
Execute commands, manage persistent shell sessions, transfer files, run playbooks, track GPS and LTE — via MCP, HTTP/WebSocket API, or web terminal UI.
______________________________________________________________________
警告:SCTL是一个非常强大的工具,强大的力量意味着巨大的责任。如果不谨慎使用,这种工具可能会很危险,并造成破坏和完全毁灭。作者和GAWD对任何结果不承担任何责任。
______________________________________________________________________
sctl能做什么?
AI对远程路由器进行故障排除
你让克劳德检查一下为什么设备速度慢。AI呼叫 device_exec 要检查负载,请使用以下命令读取日志 device_file_read,发现配置错误并运行 pb_openwrt-health-check 验证修复——所有这些都在CGNAT后面的设备上,通过隧道中继访问。
You: "The router at site-3 feels sluggish. Can you check it out?"
Claude: I'll check site-3. Let me start with system health.
[calls device_exec on site-3: "uptime && free -m"]
Load average is 4.2 on a 2-core device, and memory is at 93%.
[calls device_exec: "ps aux --sort=-%mem | head -5"]
dnsmasq is using 180MB — that's abnormal. Let me check its config.
[calls device_file_read: "/etc/config/dhcp"]
The DNS cache size is set to 50000 — way too high for 256MB RAM.
[calls device_file_write: updates cachesize to 1000]
[calls device_exec: "/etc/init.d/dnsmasq restart"]
[calls pb_openwrt-health-check]
Fixed. dnsmasq had a 50K entry DNS cache consuming most of RAM.
Cache is now 1000 entries, memory usage dropped to 41%.会话在网络故障中幸存下来
在设备上启动持久PTY会话。你的WiFi下降了。你的笔记本电脑睡着了。几个小时后,重新连接——会话仍在运行,每个字节的输出都在等待您。
# Session starts, runs a long build
-> session.start {persistent: true, pty: true, name: "build"}
session.exec {command: "make -j4"}
session.attach {session_id: "abc-123", since: 0}
│ │ HTTP │ (device) │
│ AI Agent │ JSON-RPC 2.0 │ mcp-sctl │ │ │
│ │ │ Multi-device │ +WS │ Linux / ARM / │
└────────────────┘ │ Local buffers │ │ RISC-V / x86 │
└────────────────┘ └────────────────┘
│
┌────────────────┐ HTTP + WS │ ┌────────────────┐
│ sctlin │ │ NAT traversal │
│ files, etc. │ │ for CGNAT │
└────────────────┘ └────────────────┘| 组件 | 它的作用 |
|---|---|
| sctl | 目标设备上的轻量级服务器——exec、会话、文件、GPS、LTE |
| mcp-sctl | 机器上的MCP代理-将AI工具调用转换为API请求 |
| sctlin | Svelte 5 web终端——可嵌入组件库或独立应用 |
| sctl继电器 | 中继模式下的二进制文件相同——CGNAT/LTE设备的反向隧道 |
关键能力
- 持续会话 --shell可以在断开连接、环形缓冲区中的输出缓冲区、重新连接和赶上零丢失时幸存下来
- 完全PTY支持 --运行vim、htop、docker——任何需要真正终端的东西
- 多设备车队 --使用热可重新加载配置从一个MCP服务器管理多个设备
- 反向隧道 --内置LTE/5G/CGNAT设备的NAT穿越,具有心跳、襟翼检测和自动重新连接功能
- 剧本 --带有类型化参数的markdown脚本,作为MCP工具自动发现
- GPS和LTE监控 --来自Quectel调制解调器的位置跟踪和信号度量,具有自主看门狗恢复功能
- 人工智能协作 --会话级AI/人工切换,web UI中的实时工作状态
- 安全第一 --恒定时间身份验证、路径遍历预防、进程隔离、原子写入
快速开始
选项1:克劳德代码(推荐)
git clone https://github.com/gawd-ai/sctl.git && cd sctl
# Build everything and start the dev stack
chmod +x rundev.sh
./rundev.sh这将构建服务器+MCP代理,在本地启动sctl,并将其注册到Claude Code。打开一个新的Claude Code对话,你的AI现在可以执行命令、管理会话和操作你的机器。
选项2:手动设置
1.启动服务器 在目标设备上:
cd server && cargo build --release
SCTL_API_KEY=your-secret-key ./target/release/sctl
# Listening on 0.0.0.0:13372.启动MCP代理 在您的开发机器上:
cd mcp && cargo build --release
export SCTL_URL=http://your-device:1337
export SCTL_API_KEY=your-secret-key
claude mcp add sctl -- ./target/release/mcp-sctl3.使用它。 让Claude在您的设备上运行命令——它将使用 device_exec, session_start,以及其他自动工具。
MCP工具参考
当通过MCP连接时,AI代理可以获得以下工具:
| 工具 | 说明 |
|---|---|
device_list | 列出已配置的设备 |
device_health | 检查设备是否处于活动状态 |
device_info | 系统信息(主机名、CPU、内存、磁盘、网络) |
device_exec | 执行shell命令 |
device_exec_batch | 按顺序执行多个命令 |
device_file_read | 读取文件或列出目录 |
device_file_write | 以原子方式写入文件 |
device_file_delete | 删除文件 |
device_activity | 读取活动日志(exec、文件I/O、会话) |
device_gps | GPS位置数据(定位、历史、状态) |
session_start | 启动持久交互式shell(可选PTY) |
session_exec | 在会话中运行命令 |
session_send | 发送原始输入(箭头键、Ctrl序列) |
session_read | 读取缓冲输出 |
session_exec_wait | 在一次调用中执行并等待完成 |
session_signal | 发送POSIX信号(信号情报、信号期限等) |
session_kill | 终止会话 |
session_list | 列出活动会话 |
session_attach | 重新附加到现有的持久会话 |
session_resize | 调整PTY端子尺寸 |
session_rename | 重命名会话 |
session_allow_ai | 切换AI输入权限(人工/AI切换) |
session_ai_status | 报告AI工作状态以获得UI反馈 |
playbook_list | 列出设备存储的剧本 |
playbook_get | 阅读剧本 |
playbook_put | 创建/更新/删除剧本 |
pb_* | 从剧本中自动生成的工具(例如。 pb_linux-health-check) |
文档
| 文档 | 描述 |
|---|---|
| 指南 | 在这里开始 --部署、隧道设置、剧本、GPS/LTE、人工智能协作、故障排除 |
| 服务器README | 完整的API参考,WebSocket协议,TOML配置 |
| MCP自述文件 | MCP工具目录、多设备配置、架构 |
| Web自述文件 | 组件库API、小部件、集成示例 |
| 服务器配置 | 完整的TOML配置参考 |
| MCP配置 | 多设备JSON配置示例 |
| 安全审查 | 安全审计和已知限制 |
| 更新日志 | 发布历史 |
| 贡献 | 开发设置和指南 |
需求
许可证
GNU通用公共许可证v3.0 --版权所有(c)2025亚历山大·格雷尼尔
