shellin-core

module
v0.1.4 Latest Latest
Warning

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

Go to latest
Published: May 6, 2026 License: AGPL-3.0

README

Shellin Core

What Is Shellin?

Shellin lets you use an existing desktop terminal from an iPhone or iPad. The desktop runs the shellin CLI, which owns the local PTY. The iOS app connects to that session over WebRTC DataChannels and exchanges terminal input/output, not a remote desktop video stream.

This repository is the public Go core used by the Shellin CLI and hosted service. It contains the shared protocol messages, grant-token validation, signaling WebSocket handling, TURN response filtering, demo control-plane state, CLI update verification, and release provenance code.

The production app, website, billing code, subscription reconciliation, deployment assets, and persistent stores live outside this repository.

Build And Test

This module targets Go 1.24.2.

go test ./...
go test -race ./...
go vet ./...
go build ./cmd/shellin ./cmd/shellin-control-plane
git diff --check

CI runs the same baseline.

Run Locally

Start the demo control plane:

SHELLIN_GRANT_HMAC_SECRET="$(openssl rand -base64 32)" \
SHELLIN_USER_KEYS='uk_local:demo-user:1' \
go run ./cmd/shellin-control-plane

Build the CLI against the local control plane:

go build \
  -ldflags "-X main.defaultControlPlaneURL=http://127.0.0.1:8090 -X main.defaultAllowInsecureURL=true" \
  -o ./output/shellin \
  ./cmd/shellin

Log in and start an agent session:

./output/shellin login uk_local
./output/shellin

Docs

License

Shellin Core is licensed to the public under AGPL-3.0-or-later. The copyright holder may also use, distribute, and license the same code under separate commercial or internal terms.

See LICENSE, NOTICE, COMMERCIAL_LICENSE.md, and docs/licensing.md.

Directories

Path Synopsis
Package buildinfo reports release and source provenance for Shellin binaries.
Package buildinfo reports release and source provenance for Shellin binaries.
cmd
shellin command
Command shellin starts the local Shellin agent CLI.
Command shellin starts the local Shellin agent CLI.
shellin-control-plane command
Command shellin-control-plane runs the local audit/demo control plane.
Command shellin-control-plane runs the local audit/demo control plane.
Package controlplane contains the auditable in-memory control-plane model used by the local Shellin demo server.
Package controlplane contains the auditable in-memory control-plane model used by the local Shellin demo server.
Package grantauth signs and validates short-lived Shellin grant tokens.
Package grantauth signs and validates short-lived Shellin grant tokens.
internal
selfupdate
Package selfupdate verifies signed release manifests and installs CLI updates.
Package selfupdate verifies signed release manifests and installs CLI updates.
Package protocol defines the JSON messages shared by the Shellin CLI, control plane, signaling server, and viewer clients.
Package protocol defines the JSON messages shared by the Shellin CLI, control plane, signaling server, and viewer clients.
scripts
Package signaling hosts the authenticated WebSocket relay used to exchange WebRTC offers, answers, ICE candidates, and session lifecycle hints.
Package signaling hosts the authenticated WebSocket relay used to exchange WebRTC offers, answers, ICE candidates, and session lifecycle hints.
Package turn issues and sanitizes ICE server credentials for Shellin WebRTC sessions.
Package turn issues and sanitizes ICE server credentials for Shellin WebRTC sessions.

Jump to

Keyboard shortcuts

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