Files
saphid--frame-control/.claude/skills/steam-frame/SKILL.md
T
saphidandClaude Opus 5.5 10bf18fd50 Document the Frame's recovery images and what we learnt about the device
- docs/recovery-and-images.md: where Valve's Frame images are (not linked from
  the SteamOS download page), file names, sizes and our checksums, the GPT
  layout with exact start sectors, what's in rootfs-A (btrfs, SteamOS 0.3.0
  build 20260922.5152327, users, sudo and sshd config), extracting it, running
  it without the headset, and Valve/Collabora's Holo Core aarch64 preview.
- how-the-frame-works.md: correct the recovery image file names; add verified
  facts on the SSH server, tools on the image (no adb), Lepton instances as
  podman containers, going off the network when asleep, and the battery
  reading at full charge.
- ssh.md: pairing from an iPhone and why devkit RSA pairing doesn't fit it.
- open-questions.md, README.md and the steam-frame skill point to the new pages.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-27 17:25:01 +10:00

3.0 KiB

name, description
name description
steam-frame Operate the user's Valve Steam Frame headset from the Mac through this repo's helpers and field notes. Use for Steam Frame SSH, screen streaming, clipboard, file push, APK or Flatpak installs, launching apps on the headset, arranging floating windows or panels in VR space, or debugging SteamOS/gamescope/SteamVR on the Frame.

Steam Frame

SSH works through the frame alias (user steamos). The headset has to be awake for anything that touches its desktop or panels.

Start here

  1. Read docs/how-the-frame-works.md. It's the map: the layer cake (SteamVR → gamescope → nested Plasma), the verified facts, and debug recipes.
  2. Open the topic doc for the task:
Task Doc Script
Floating windows in the room, one panel per app docs/panels.md scripts/panel-on-frame.sh
First-time access, SSH keys docs/ssh.md scripts/connect.sh
See the Frame from the Mac, or the Mac inside the Frame docs/streaming.md scripts/run-on-frame.sh mac-screen
Files and clipboard docs/file-transfer.md scripts/push.sh, scripts/paste-to-frame.sh
Android apps (Lepton) docs/apks.md scripts/install-apk.sh
Reach the Frame off the home LAN (Tailscale) docs/tailscale.md scripts/tailscale-on-frame.sh
Install or buy Steam games, Frame ratings docs/steam-games.md ui/frame_steam.py
Flatpaks docs/streaming.md scripts/install-apps.sh
Launch an app inside the desktop panel the script's header comment scripts/run-on-frame.sh
Mac GUI over all of this README.md → Frame Control scripts/frame-ui.sh
iPhone/iPad app (server runs on the Frame, FRAME_LOCAL=1) docs/iphone.md ios/, ui/local-bin/ssh
Recovery images, factory reset, boot loops docs/recovery-and-images.md, docs/how-the-frame-works.md ~/Downloads/steam-frame-recovery/
Test without the headset (the Frame OS image's own sshd) tests/frame-container/README.md tests/frame-container/frame-image.sh
What's still unverified docs/open-questions.md —

Each script's usage is in its header comment. Read the header rather than running --help: paste-to-frame.sh, serve-bootstrap.sh and bootstrap-on-frame.sh act on any argument.

Ground rules

  • Label every claim verified (seen on the device, with the date and SteamOS build) or inferred. The docs use this convention. Keep it, and move items out of docs/open-questions.md once they're checked.
  • When you learn something new about the Frame, record it in docs/how-the-frame-works.md (or the topic doc) in the same change.
  • The Frame's rootfs is read-only and SteamOS updates replace it. Put changes in ~ (--user Flatpaks, ~/.config) rather than steamos-readonly disable.
  • sudo on the Frame asks for the user's Developer Mode password. Hand those steps to the user (open Terminal) and keep automation to non-sudo commands.
  • The Mac uses BSD userland and zsh (no timeout, use head -n).