Skip to main content

Python client for the shell-use terminal daemon

Project description

shell-use (Python)

A Python client for the shell-use terminal daemon.

The shell-use binary must be on your PATH (or point to it with the SHELL_USE_BIN environment variable or the binary= argument). The client talks to the per-session daemon directly over its local socket (a named pipe on Windows, a Unix socket elsewhere) and starts the daemon automatically.

Install

pip install shell-use

Requires Python 3.8+.

Quick start

import asyncio
from shell_use import ShellUse

async def main():
    async with ShellUse() as su:
        await su.open()
        await su.submit("echo hello")
        await su.wait_command()
        await su.expect_text("hello")
        await su.expect_exit_code(0)

asyncio.run(main())

Drive a full-screen TUI:

async with ShellUse("vim-session") as su:
    await su.run("vim", "file.txt")
    await su.wait_idle()
    await su.press("i")
    await su.type("some text")
    await su.press("Escape", ":", "w", "q", "Enter")
    await su.wait_exit()

Errors

Every failure maps to one of the daemon's exit codes:

Exception Exit code Meaning
ExpectationError 1 an expect/wait condition was not met
UsageError 2 invalid argument (e.g. a bad regex)
NoSessionError 3 no active session
DaemonError 4 daemon could not be reached or started
VersionMismatchError 4 the daemon's version differs from this package
InternalError 5 internal daemon error

All derive from ShellUseError. wait_* and expect_* raise ExpectationError on failure.

On its first call, a client checks that the running daemon's version matches the package version and raises VersionMismatchError if they differ. Stop the daemon (daemon_stop) so it restarts with the current binary, or point SHELL_USE_BIN at a matching one.

API

ShellUse(session="default", *, binary=None, home=None) mirrors the CLI: open / run, type / write, submit, press / keys, mouse.click|move|down|up|drag|scroll, resize, signal / kill, state, text, cells, get (+ get_command / get_output / get_exit_code / get_cwd / get_cursor / get_size), screenshot, wait_text / wait_idle / wait_command / wait_exit, expect_text / expect_exit_code / expect_output / expect_snapshot, and close.

Module-level helpers: sessions(), close_all(), daemon_status(), daemon_stop(), get_recording().

Configuration

Variable Purpose
SHELL_USE_BIN path to the shell-use binary
SHELL_USE_SESSION default session name
SHELL_USE_HOME daemon state directory (sockets, pids)

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

shell_use-0.0.1b2.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

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

shell_use-0.0.1b2-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file shell_use-0.0.1b2.tar.gz.

File metadata

  • Download URL: shell_use-0.0.1b2.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for shell_use-0.0.1b2.tar.gz
Algorithm Hash digest
SHA256 6f1d5c9e193930255757dd70714630119b073240b12a37c01036bbf0d342ad51
MD5 abd4b08c384e1e45b83c8d33979d3a24
BLAKE2b-256 df5fd92220b7627640b2f2147111f12a8114a31c5e928fffbe07f51841c1c217

See more details on using hashes here.

File details

Details for the file shell_use-0.0.1b2-py3-none-any.whl.

File metadata

  • Download URL: shell_use-0.0.1b2-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for shell_use-0.0.1b2-py3-none-any.whl
Algorithm Hash digest
SHA256 ffb68dc20e73c2f4a9f5dcf0a33a49da2416f86452e1cb451eddb4e8070a3844
MD5 1765a5bf63d2425a5aecdb3f3ad1c1ba
BLAKE2b-256 0f36e8d1ea1c98d96d0dd10bec84cecbb2a8141716965221982162be4a769ca5

See more details on using hashes here.

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