Skip to content

Shells-com/shells-go

Repository files navigation

Shells™ Go Client

A cross-platform desktop client for remotely accessing Shells™ virtual desktop instances.

Requirements

A Shells™ account is required to use this application. You can create an account at shells.com.

Features

  • Remote desktop access to your Shells™ virtual machines
  • Cross-platform support (Linux, macOS, Windows)
  • SPICE protocol for high-performance display, keyboard, and mouse input
  • Audio support via PortAudio and Opus codec
  • Clipboard sharing between local and remote systems
  • OAuth2 authentication with QR code support for thin clients

Building

Prerequisites

  • Go 1.24 or later
  • CGO enabled (required for audio and graphics dependencies)

Linux

Install the required development packages:

# Debian/Ubuntu
sudo apt-get install libgl1-mesa-dev libxcursor-dev libxrandr-dev \
    libxinerama-dev libxi-dev libxxf86vm-dev libasound2-dev pkg-config

# Fedora
sudo dnf install mesa-libGL-devel libXcursor-devel libXrandr-devel \
    libXinerama-devel libXi-devel libXxf86vm-devel alsa-lib-devel pkgconfig

macOS

Xcode command line tools are required:

xcode-select --install

Windows

MSYS2 with MinGW64 toolchain is recommended for building on Windows.

Build

go build -v .

Static Linking (PortAudio / Opus)

For producing portable binaries with statically linked audio libraries, add the following to go.mod:

replace github.com/gordonklaus/portaudio => github.com/KarpelesLab/static-portaudio v0.6.190600
replace github.com/hraban/opus => github.com/KarpelesLab/static-opus v0.9.152

Environment Variables

  • SHELLS_FULLSCREEN=WIDTHxHEIGHT - Start in fullscreen mode with specified resolution (e.g., 1920x1080)
  • SHELLS_LOGIN=thin - Use QR code login flow for thin client deployments

Claude Computer Use Integration

The client includes an integration with Claude Computer Use, exposing the remote desktop to Claude over a local HTTP API. This lets Claude see the screen and drive mouse/keyboard input on the remote machine.

Features

  • Claude can see the remote desktop screen via screenshots
  • Claude can control mouse movement and clicks
  • Claude can send keyboard input
  • Simple HTTP API for Claude to interact with the remote desktop
  • Toggle to enable/disable Claude Computer Use

API Endpoints

  • GET /api/v1/status - Get the current status of Claude Computer Use
  • GET /api/v1/screenshot - Get a screenshot of the current desktop
  • POST /api/v1/control - Send control commands to the remote desktop

The API binds to 127.0.0.1:8080 by default.

License

This software is proprietary to Shells™. See shells.com for terms of service.

About

Shells client written in Go

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors