API processor for simple and short macro instruction to automate PiKVM keyboard and mouse emulation. The easiest way to store and send input commands to PiKVM device.
flowchart LR
subgraph Requests
direction RL
grpc("`gRPC`")
openapi("`OpenAPI v3`")
end
subgraph PiKVM
direction TB
subgraph pikvm-api
direction RL
api1("`wss (websocket)`")
api2("`unix socket (kvmd.sock)`")
end
subgraph Docker
pikvm-automator("`pikvm-automator`")
end
end
subgraph Device
direction RL
sub1("`Keyboard`")
sub2("`Mouse`")
end
Requests -- macro --> Docker --> pikvm-api -- emulation --> Device
Run in container and connect to remote PiKVM device with default credentials:
docker run -it --rm \
-v $(pwd):/commands.yml \
-e PIKVM_ADDRESS=<IP:PORT or HOST> \
-e PIKVM_SOURCE=wss \
-e PIKVM_SKIP_TLS_VERIFY=true \
sealbro/pikvm-automatorRun in container on PiKVM device with default credentials:
docker run -it --rm \
-v $(pwd):/commands.yml \
-v /run/kvmd:/run/kvmd \
-e PIKVM_ADDRESS=/run/kvmd/kvmd.sock \
-e PIKVM_SOURCE=unix \
-e PIKVM_SKIP_TLS_VERIFY=true \
sealbro/pikvm-automator| Name | Description | Default |
|---|---|---|
PIKVM_ADDRESS |
PiKVM api address | required |
PIKVM_SOURCE |
API source wss or unix |
wss |
PIKVM_SKIP_TLS_VERIFY |
Skip TLS verify | false |
PIKVM_USERNAME |
PiKVM username | admin |
PIKVM_PASSWORD |
PiKVM password | admin |
COMMANDS_PATH |
Path with commands file | /commands.yml |
TEMPLATE_MAX_DEEP |
Max recursive replacement | 10 |
CALL_DEBOUNCE_SECONDS |
Next command cooldown | 2 |
GRPC_PASSTHROUGH_AUTH |
Passthrough PiKVM auth | true |
GRPC_PROTOCOL |
gRPC protocol | tcp |
GRPC_ADDRESS |
gRPC endpoint | 0.0.0.0:32023 |
GRPC_GATEWAY_ADDRESS |
openapi endpoint | 0.0.0.0:8032 |
PIKVM_ADDRESSis required/run/kvmd/kvmd.sockfor unix socket on device<IP:PORT or HOST>for remote connection
Example of commands.yml:
win_d:
id: win_d
description: Collapse/Expand all windows
expression: MetaLeft+KeyD
bios_enable_virtualization:
id: bios_enable_virtualization
description: Bios enable virtualization
expression: '@850''190|@left|700ms|@350''650|@left|700ms|@850''420|@left|300ms|End|50ms|Enter'
bios_save_exit:
id: bios_save_exit
description: Bios save configuration and exit
expression: F10|200ms|@850'770|@left
proxmox_mode:
id: proxmox_mode
description: Proxmox bios mode
expression: 2s|F2|5s|%bios_enable_virtualization%|1s|%bios_save_exit%id- unique identifierdescription- description of commandexpression- sequence of key pressesF1- press F1 key (more keys)|- splitter between commands+- press multiple keys at once- example
MetaLeft+KeyDforWin+D, holdMetaLeftand pressKeyDand release both
- example
@850'190- move mouse to x=850, y=190@left- press left mouse button700msor42s- delay 700ms or 42s%command_id%- execute another command, allowed use recursion but not more thanTEMPLATE_MAX_DEEPtimes