Linux设备远程控制平台

sctl是一个AI原生的Linux设备远程控制平台,提供命令执行、文件操作、持久会话、GPS/LTE遥测等功能,适用于服务器管理、嵌入式开发和边缘计算场景。

  • by gawd-ai
  • Rust
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 gawd-ai/sctl

使用说明

sctl

Shell Control, pronounced "scuttle".
AI remote control plane for Linux devices, infrastructure, and edge compute.
Give agents authenticated access to commands, persistent shell sessions, files, playbooks, GPS/LTE telemetry, and web terminals through MCP, HTTP/WebSocket APIs, or sctlin.


安全警告: sctl使经过身份验证的客户端能够在目标系统上执行命令、写入和删除文件、管理shell会话以及运行playbook。仅在您控制的系统上运行它,使用强大的API密钥,限制网络暴露,并在授予AI访问权限之前查看命令和行动手册。


为什么选择sctl?

sctl的存在是为了使AI代理在聊天窗口之外变得有用。第一个目标可以是您自己的计算机、实验室机器、服务器或VPS。同样的控制模型扩展到Linux主机机架、嵌入式开发板、通信和网络硬件、无人机、机器人以及远程或基于空间的AI计算,其中shell访问是操作层。

sctl不为机器人、无人机或航天器提供特定领域的控制逻辑。它是Linux目标的一个小型、可审计的控制界面:命令、文件、会话、剧本、遥测和中继访问以AI代理可以在操作员控制下安全使用的形式公开。

  • AI原生控制界面 --将命令执行、文件操作、健康检查、GPS、活动日志和剧本作为MCP工具公开。
  • 持久的互动会议 --保持shell在目标上运行,重新连接后重放丢失的输出,并支持完整的PTY工作流。
  • 远程优先联网 --在不更改客户端代码的情况下,为LTE/5G/CGNAT设备使用直接LAN URL或内置中继。
  • 人类/人工智能共享控制 --web UI和AI代理之间的手动会话,具有每个会话的AI权限和可见的工作状态。
  • 可组合UI和API --使用 sctlin 作为独立应用程序,将其嵌入为Svelte 5组件库,或直接通过HTTP/WebSocket集成。

sctl适用于何处

  • 您自己的机器或实验室计算机 --基本情况是本地的:运行sctl,连接一个兼容MCP的代理,让它在您的监督下检查、构建、测试或修复系统。
  • 服务器、虚拟专用服务器和云基础设施 --通过相同的MCP工具、REST API、WebSocket会话和剧本来操作Linux主机。
  • 数据中心和多设备操作 --从一个MCP服务器管理命名设备,保持持久会话活动,并使用操作手册进行可重复的操作检查。
  • 硬件开发工作台 --将AI控制引入到板、网关、调制解调器和原型中,其中有用的接口仍然是shell、文件系统、串行相邻工具或设备遥测。
  • 通信和网络设备 --支持OpenWrt和其他基于Linux的路由器、LTE网关以及可能位于CGNAT后面的远程网络设备。
  • 机器人、无人机和边缘系统 --为代理提供一种受控的方式来检查和操作基于Linux的计算模块,而无需替换特定于域的飞行、自主或控制软件。
  • 基于空间的人工智能计算 --将相同的中继、可重放会话、遥测和剧本模型应用于远程计算,在远程计算中,链路可能会延迟、间歇或无法到达入站。

示例工作流

检查并修复远程Linux主机

Ask: "Check why site-3 is slow."
Agent: device_exec -> device_file_read -> pb_linux-health-check
Result: load, logs, disk state, config, and remediation steps are gathered from the host.

在LTE背后引入嵌入式硬件

Device: outbound tunnel over LTE/5G to a public relay
Agent: device_health -> device_gps -> pb_openwrt-diagnostics
Result: the board can be inspected and recovered without inbound network access.

持续的人工/人工智能切换

session_start    { persistent: true, pty: true, name: "field-debug" }
session_exec     { command: "make test" }
session_allow_ai { allowed: false }  # human takes over in sctlin
session_attach   { session_id: "...", since: 0 }  # agent replays missed output

相同的工具,直接或中继

{
  "devices": {
    "office-router": { "url": "http://192.168.1.1:1337", "api_key": "..." },
    "lte-gateway": { "url": "https://relay.example.com/d/SCTL-0042", "api_key": "..." }
  },
  "default_device": "office-router"
}

建筑

┌──────────────┐   stdio/MCP    ┌──────────────┐   HTTP/WS    ┌──────────────┐
│  AI Agent    │ <------------> │  mcp-sctl    │ <----------> │ sctl device  │
│ MCP client   │  JSON-RPC 2.0  │ multi-device │              │ Linux shell  │
└──────────────┘                │ local buffer │              └──────────────┘
                                └──────┬───────┘
                                       │
                         HTTP/WS       │       WS tunnel
┌──────────────┐ <---------------------┘  ┌──────────────┐
│   sctlin     │                           │ sctl relay   │
│ web terminal │ <-----------------------> │ CGNAT/LTE    │
└──────────────┘                           └──────────────┘
组件 它的作用
sctl 用于执行、会话、文件、活动、剧本、GPS和LTE的设备端服务器
通信提供商 针对硬件链路的特定C-ABI插件,如当前的Quectel LTE/GNSS提供商
mcp-sctl 将AI工具调用映射到sctl HTTP/WebSocket API的MCP代理
sctlin Svelte 5网络终端和组件库
sctl继电器 无法接受入站连接的设备的反向隧道模式

0.5.0亮点

  • 统一误差模型 -稳定的API错误代码和生成的用于客户端一致性的TypeScript绑定。
  • 持续的PTY会话 --可重放输出缓冲区、调整大小支持、进程组信号和会话日志。
  • 行动手册API和MCP工具 --带有通过REST公开的类型化参数的Markdown剧本 pb_* MCP工具。
  • CGNAT/LTE中继 --出站设备注册、代理REST/WS会话、心跳指标和重新连接处理。
  • 外部通信提供商 --GPS/LTE遥测、频带控制和链路恢复通过特定目标的共享库插件运行,因此中继/VPS安装不携带调制解调器代码。
  • sctlin网络用户界面 --终端、多服务器仪表板、活动历史、剧本、文件工具和可嵌入的小部件。

快速开始

代理客户

git clone https://github.com/gawd-ai/sctl.git && cd sctl

# Build everything, start the dev stack, and register detected MCP clients
chmod +x rundev.sh
./rundev.sh

这是基本情况:您自己的计算机成为第一个受控目标。该脚本构建服务器+MCP代理,在本地启动sctl,并注册 mcp-sctl 检测到MCP兼容代理客户端。启动一个新的代理会话,它可以在您的监督下执行命令、管理会话和操作机器。

支持的代理设置路径:

客户端 命令
自动检测已安装的客户端 ./rundev.sh agents
克劳德代码 ./rundev.sh claude
Codex CLI ./rundev.sh codex
爱马仕 ./rundev.sh hermes
OpenCode ./rundev.sh opencode
OpenClaw ./rundev.sh openclaw
Grok Build/通用MCP ./rundev.sh grok
纳米爪/通用MCP ./rundev.sh nanoclaw

Web用户界面: http://localhost:5170/sctlin.

地方开发港口

rundev.sh 探针 http://127.0.0.1:1337/api/health 在启动时。如果一个健康的sctl服务器已经在那里监听,它会连接到该实例,而不是启动一个无法绑定端口的副本 stop,它只终止它启动的进程。

默认本地端口:

  • sctl服务器: 127.0.0.1:1337
  • sctlin Vite用户界面: http://localhost:5170/sctlin

手动设置

1.启动服务器 在目标设备上:

cd server && cargo build --release
SCTL_API_KEY=your-secret-key ./target/release/sctl
# Listening on 0.0.0.0:1337

2.注册MCP代理 与您的代理客户:

cd mcp && cargo build --release

# Example: any client that accepts a stdio MCP command can launch:
./target/release/mcp-sctl --config ../mcp/devices.example.json

3.使用它。 让您的代理在您的设备上运行命令。它将使用 device_exec, session_start,以及通过MCP连接时自动使用的其他工具。

MCP能力

当通过连接时 mcp-sctl,代理商获得以下工具:

  • 设备发现、运行状况、信息、命令执行和活动历史。
  • 原子文件读/写/删除操作。
  • 持久会话生命周期、原始终端输入、信号、调整大小、附加和等待助手。
  • AI协作控制,例如 session_allow_ai 和 session_ai_status.
  • 剧本CRUD和自动生成 pb_* 来自设备存储的Markdown游戏本的工具。

看 mcp/README.md 获取完整的工具目录和配置格式。

文档

文档 描述
指南 部署、中继设置、剧本、GPS/LTE、人工智能协作、故障排除
MCP自述文件 MCP配置、完整的工具目录、多设备行为
服务器README HTTP API、WebSocket协议、TOML配置、中继API
Web自述文件 sctlin包API,组件,小部件,集成示例
服务器配置 完整的TOML配置参考
MCP配置 多设备JSON配置示例
安全策略 漏洞报告和支持的版本
安全审查 安全设计说明和已知限制
更新日志 发布历史
贡献 开发设置和指南

需求

  • 锈蚀1.82+ (rustup.rs)
  • 码头工人 (通过交叉编译 交叉,可选)
  • Node.js 20+ (对于sctlin web UI,可选)
  • 目标设备:任何具有以下功能的Linux系统 /bin/sh

许可证

GNU通用公共许可证v3.0 --版权所有(c)2025亚历山大·格雷尼尔