Skynet
🔺 What is Skynet
Skynet is a lightweight command line interface for LLMs to control real robots and drones using Bash.
It can run entirely on your own machine, or can be configured to run using remote services.
Skynet provides an MCP host that calls a model server such as Docker Model Runner to allow Large Language Models (LLM), Small Language Models (SLM), and Tiny Language Models (TLM), to control physical devices that provide an MCP server interface. See ROBOTS.md for some known devices with MCP servers.
It supports multiple step interactions when using models such as Qwen 2.5 Instruct. See MODELS.md for some models that are known to support multistep actions.
🔺 How Skynet works
Skynet is written in Bash using Osprey.
Architecture
flowchart TD
subgraph Skynet
A(["Chat interface"])
A <---> C["Chat completions"]
A <---> T["Tool calls"]
C <--> T
end
subgraph "Docker Model Runner"
M["Qwen 2.5"]
end
subgraph "MCP Server 1"
D["Drone"]
end
subgraph "MCP Server 2"
R["Robot"]
end
C <-- http --> M
T <-- http --> D
T <-- http --> R
User flow
sequenceDiagram
actor Human
actor Skynet
actor Model
actor MCP Server
actor Robot
loop entering commands
Human->>Skynet: type command
Skynet->>Model: send message
Model->>Skynet: send response
loop while tool calls needed
Skynet->>MCP Server: call tool
MCP Server-->>Robot: call device API
Robot-->>MCP Server: device API result
MCP Server->>Skynet: send results from tool
Skynet->>Skynet: add results to message history
Skynet->>Model: send updated message
Model->>Skynet: send response
end
break no tool calls needed
Skynet->>Human: display result
end
end
🔺 Installing Skynet
See INSTALL.md for information on how to install Skynet.
🔺 Running Skynet
$ ./skynet.sh -h Usage: ./skynet.sh [OPTIONS] Options: -h, --help Display this help message -v, --version Display version -d, --debug Enable debug mode -m, --model Model to use -p, --pull-model Pull latest model -s, --model-server Model server to use -i, --instructions System instructions to use -t, --temperature Temperature for model -r, --robot-server Robot servers to use
You must have any robot MCP servers already running in order to run Skynet. See ROBOTS.md for a list of some known physical devices with MCP server interfaces.
Then run the skynet.sh command, including any flags that may be needed.
Additional command options
You can set the following flags or environment variables to change Skynet.
🔺 -d, --debug
Set debug mode. Defaults to false
🔺 -m, --model
Set the model to use. Defaults to ai/qwen2.5:latest
🔺 -p, --pull-model
Should Docker Model Runner pull the latest model? Defaults to true
🔺 -s, --model-server
Model server to use. Defaults to Docker Model Runner http://localhost:12434/engines/llama.cpp/v1
🔺 -i, --instructions or SYSTEM_INSTRUCTION
System instructions to use. Defaults to:
You are a robot.
You have tools that actually call devices in the physical world that you are connected to.
Use your tools to respond to human requests.
Keep your responses short and to the point.
🔺 -t, --temperature
Set the temperature for the model. Defaults to 0.0
🔺 -r, --robot-server
Set the MCP server to use. Allows multiple addresses separated by comma. Note that tool names must be unique per MCP server. Defaults to http://localhost:9090
🔺 OSPREY_INSTALL
Env var to set the directory in which to find Osprey. Defaults to your same directory as Skynet.
🔺 Warning
You know the legends. Usage of this software is at your own risk.
