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.1b3.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.1b3-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shell_use-0.0.1b3.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.1b3.tar.gz
Algorithm Hash digest
SHA256 8c3ef00e70a8312036adfb986ef9dda5e897c1a058a297e128290220f0e4cf34
MD5 5ba2524ed04f1fa338a03d54da42c234
BLAKE2b-256 6a5d2ca45b9f842d148f1b1c5045e0bfc8244452d5f2eadf4b4ae02588a9a2fa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: shell_use-0.0.1b3-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.1b3-py3-none-any.whl
Algorithm Hash digest
SHA256 a56cf501e2292bfd201df1667463179c2bf8b281b4f676ef1f33e36aa54aab96
MD5 3a6ec1f208e9cf6ae314892f41acfef4
BLAKE2b-256 bc1c731a251e5ffa4ab2aa1a54de2b9d8d07e5e469218b6b7ab3faf3fef3e7c1

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