Skip to main content

stasis-client

A local remote-desktop client for the Aethernet stasis protocol. It runs on your machine, connects to a remote host running an Aethernet stasis server, and gives you a live (or on-request) view of that host's screen with mouse, keyboard, and clipboard control - as a native window or in your browser.

mode license

Features

  • Native window or browser - run as a standalone desktop window, or as a regular local web app you open in your browser. Same interface either way.
  • Live and Snap input modes - send clicks, scrolls, and keystrokes immediately as you make them, or record a sequence of actions locally and send them to the remote host as a single batch once you're ready.
  • Configurable hotkeys - request a screen frame, open a multi-line text input, and start/cancel/send a Snap recording, all bound to your own key combos.
  • Multi-click coalescing - double/triple/... clicks are detected locally and sent as a single click event with the right click count, instead of arriving too far apart over the network to register as a multi-click on the remote host.
  • Automatic DPI-aware coordinate scaling - clicks land in the right place even when the remote host's screenshot resolution differs from its logical input resolution (e.g. Retina/HiDPI displays).
  • Clipboard sync - push your local clipboard to the remote host, or pull the remote host's clipboard back to yours, on demand.
  • Bulk text entry - a dedicated popup for pasting or typing long text, sent as a single event instead of one keystroke at a time.
  • On-request or interval screen streaming - choose whether frames are pushed continuously or only when you ask for one.
  • In-app log viewer - see what the underlying connection is doing without leaving the app.
  • Dark, distraction-free interface with a startup animation.

Installation

pip install stasis-client

This installs the stasis-client command.

Stasis-client speaks the stasis protocol over an Aethernet link. The transport itself (AggregatingLink) comes from the separate aethernet-core package, which stasis-client depends on automatically - you don't need to install it yourself.

Quick start

  1. Create a link configuration file - a small Python file that tells stasis-client (and, if you use the same file, the Aethernet server too) how to reach your remote host (transport, address, encryption, etc.):

    # aethernet_link.py
    import logging
    from typing import Literal
    from aethernet.transport import AggregatingLink
    
    
    async def create_link(
        mode: Literal["server", "client"], logger: logging.Logger
    ) -> AggregatingLink:
        # Build and return your AggregatingLink here.
        # `mode` is "client" when called from stasis-client.
        ...
    
  2. Run the client from the same directory:

    stasis-client
    

    This opens a native window by default. To open it in your browser instead:

    stasis-client --mode browser
    

That's it - the settings dialog inside the app lets you configure hotkeys, input mode, and streaming behavior without touching the command line again.

Command-line options

Flag Description Default
--mode {window,browser} Run as a native window or a local web server window
--link-config PATH Path to your link config file ./aethernet_link.py
--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL} Logging verbosity DEBUG

Each of these can also be set via an environment variable (AETHERNET_UI_MODE, AETHERNET_LINK_CONFIG, AETHERNET_LOG_LEVEL) - the CLI flag takes priority when both are set.

In-app settings

Open the settings dialog from the top panel to configure, without restarting the app:

  • Session mode - Live (send everything immediately) or Snap (record, review, then send).
  • Screen streaming mode - on-request or interval-based, with a configurable interval.
  • Hotkeys - request-frame, open-big-input, and the three Snap recording controls (start/cancel/send).
  • Multi-click window - how long to wait after a click before deciding how many clicks it was.
  • Logs - a live tail of the connection's log output.

Settings persist across restarts.

Requirements

License

Apache License 2.0 - see the LICENSE file in this repository. Matches the license used by aethernet-core.

Download files

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

Source Distribution

stasis_client-0.1.0.tar.gz (67.9 kB view details)

Uploaded Source

Built Distribution

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

stasis_client-0.1.0-py3-none-any.whl (70.5 kB view details)

Uploaded Python 3

File details

Details for the file stasis_client-0.1.0.tar.gz.

File metadata

  • Download URL: stasis_client-0.1.0.tar.gz
  • Upload date:
  • Size: 67.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stasis_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 418558d6bb9e70c5f69da16c13da992f5a45f151879aad20c7779fd3aba51015
MD5 5a52a2509c0aedec3f3a79424660c8bd
BLAKE2b-256 fc6a016d650199b6afbd2c60584d18987ee1d3df4e27fd1b3082b0150e9c05f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for stasis_client-0.1.0.tar.gz:

Publisher: release.yml on solment-slet/stasis-client

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

File details

Details for the file stasis_client-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: stasis_client-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 70.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stasis_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b25e03f256db2293b5af1939ba220222123d3289e38388e55deb5c346f547d85
MD5 d475aa046e6253e165e29e916fd1bfb0
BLAKE2b-256 fa08f61e8fad82bdb08474b0023f9c6dd472e45be673911bf6c10a2eb8717e98

See more details on using hashes here.

Provenance

The following attestation bundles were made for stasis_client-0.1.0-py3-none-any.whl:

Publisher: release.yml on solment-slet/stasis-client

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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page