Skip to main content

A WebSocket daemon for remote shell execution and interactive terminal sessions

Project description

shellwire

A WebSocket daemon for remote shell execution and interactive terminal sessions

shellwire runs as a WebSocket server, providing a bridge that lets remote clients execute shell commands with full system access. While fully compatible with Linux and macOS, it is uniquely engineered for Android devices. Android applications typically lack proper terminal access, making it difficult to run local AI agents or advanced tools on-device. Shellwire solves this by running inside Termux and exposing a WebSocket server, acting as a bridge to give Android apps a complete, desktop-grade shell environment.

Features

  • Stable token auth — token generated once, persists across restarts
  • Single client — one active connection at a time, with reconnection support
  • Concurrent execution — up to 4 simultaneous commands
  • Interactive PTY sessions (POSIX) — full pseudo-terminal support with dynamic resizing
  • Environment Tracking — persistent working directory (CWD) and exported environment variables across commands
  • Compound Command Rewriting — automatically rewrites bash chains (e.g. A && B & -> A && { B & }) for standard backgrounding
  • Termux / Android Optimized — Built-in resilience against mobile network handoffs, terminal DOZE states, and phantom process killers, ensuring extreme stability for long-running mobile environments.
  • Robust Process Isolation — prevents zombie processes via process-group escalation kills (SIGTERM → SIGKILL) and protects against runaway output
  • Health endpoint — HTTP GET /health on the same port

Installation

# Via pip
pip install shellwire

Or install from source:

git clone https://github.com/shantoislamdev/shellwire.git
cd shellwire
pip install -e ".[dev]"

Auto-venv Runners

If you clone the repository directly, you can use the included runner scripts which will automatically create a virtual environment (venv) and install dependencies for you:

  • Unix / Linux:
    • ./run.sh — Bootstraps the daemon inside venv
    • ./test.sh — Runs the test suite inside venv
  • Windows:
    • run.bat — Bootstraps the daemon inside venv
    • test.bat — Runs the test suite inside venv

Quick Start

# Start the daemon (foreground)
shellwire start

# Start as background daemon
shellwire start --daemon

# Check status
shellwire status

# View your auth token
shellwire token show

# Stop the daemon
shellwire stop

On first start, a stable auth token is generated and displayed. Save it — you'll need it to connect your client.

Documentation

Documentation is available in the docs/ directory:

  • Overview & Architecture: High-level overview and architectural flow.
  • Daemon Guide: Server administration, CLI commands, configuration flags, and token management.
  • Protocol Specification: Strict JSON schemas for all WebSocket messages (auth, execute, start_session, etc.).
  • Client Integration: Developer guide for building custom WebSocket clients, including complete Kotlin examples.

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=shellwire

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shellwire-0.1.1.tar.gz (177.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shellwire-0.1.1-py3-none-any.whl (56.4 kB view details)

Uploaded Python 3

File details

Details for the file shellwire-0.1.1.tar.gz.

File metadata

  • Download URL: shellwire-0.1.1.tar.gz
  • Upload date:
  • Size: 177.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shellwire-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9f84e54072439ae0f132cc46fc095dc3e6c6f235dfc63d5cde42b04497b09b3b
MD5 c6cb1afa83f92a0617ee91f3c7d18965
BLAKE2b-256 68d3e5b9c2b6505ed302dafad3af8333a29bfdfc44d01a772b52765b6aa14028

See more details on using hashes here.

Provenance

The following attestation bundles were made for shellwire-0.1.1.tar.gz:

Publisher: publish.yml on shantoislamdev/shellwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shellwire-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: shellwire-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 56.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shellwire-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a2ef49b2f1bfa2dc4ebcf4a5e52f1b8cf3c8acc335d818e850ab741a5d7023c5
MD5 1d92e50bca1334c813a05ac703a7d071
BLAKE2b-256 01993f7a178b08a5799fcbdbb064db823d55f2fca0541484c0f6a2fca686dcd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for shellwire-0.1.1-py3-none-any.whl:

Publisher: publish.yml on shantoislamdev/shellwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page