sdev

command module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2026 License: MIT Imports: 30 Imported by: 0

README

sdev

An unofficial command line alternative to the SteamOS Devkit Client, for Steam Deck and Steam Frame.

  • Compatible. It uses the official client's key and device tools, so a device works with both.
  • Easy to install. One binary, with no ssh, rsync or Python needed on the host.
  • Agent-native. No GUI and no prompts on the host, plain exit codes, and a Claude Code plugin that teaches an agent to use it.

Not affiliated with or endorsed by Valve. Steam and related marks are trademarks of Valve Corporation.

Install

go install github.com/neguse/sdev@latest

For Claude Code, the repository is also a plugin with a skill that drives the CLI:

/plugin install sdev --marketplace neguse/sdev

Usage

# Send dist/game, add it to Steam, stop the previous run and launch.
sdev deploy 192.168.1.20 --dir dist/game --gameid game --kill game --run -- run.sh

# ARM64 title on Steam Frame.
sdev deploy 192.168.1.21 --dir dist/game --gameid game \
  --set steam_play=0 --set compat_tool=SteamLinuxRuntime_4-arm64 -- run.sh

# Save the current screen. On Steam Frame, VR must be active.
sdev shot 192.168.1.20 out.png

# Device and Steam state, as JSON.
sdev status 192.168.1.20

# Anything else runs on the device, and its exit code comes back.
sdev shell 192.168.1.20 'pgrep -x game'

sdev help lists every command. For work that reaches outside the CLI, the skill tells an agent what to do.

Supported

Confirmed working on a real Steam Deck: history, pair, deploy, run, ls, rm, status, shot, logs, shell, pull, push, perf overlay, gpu-trace, renderdoc-server, flags, controller --appid, restart, session, client.

The first connection to a device asks for approval on the device. The key is the one the official SteamOS Devkit Client uses, so a device paired with either tool works with both.

Game IDs follow the official client's rule, ^[A-Za-z_][A-Za-z0-9_.]+$, and may not be a name it reserves for sideloaded Steam clients. Words after -- reach the game as given; there is no shell expansion. --run reports that Steam took the request, not that the game started. To set environment variables, export them in the launch script: Steam on Steam Deck did not pass on ones set through the devkit tools.

deploy deletes files on the device that are not in --dir. Files with the same size and mtime are skipped. Every file is sent as executable, like the official client does.

Third-party code

devkit-utils/ is copied unchanged from SteamOS Devkit Client (client/devkit-utils, commit e091c17), MIT licensed: see devkit-utils/LICENSE. sdev embeds it and installs it on the device when it needs it. sdev licenses prints the licenses of everything in the binary.

Documentation

Overview

Command sdev sends builds to SteamOS devices in developer mode.

Directories

Path Synopsis
tools
genlicenses command
Command genlicenses writes the notices of everything compiled into sdev.
Command genlicenses writes the notices of everything compiled into sdev.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL