Skip to main content

A local sandbox for testing Talon scripts. Inspired by playwright-cli.

Project description

talonbox

PyPI Changelog Tests License

A local sandbox for testing Talon scripts. Inspired by playwright-cli.

talonbox is an independent, community-driven sandbox for Talon Voice development. It gives humans and coding agents a safer place to stage Talon changes inside a local Lume VM before touching the host machine.

Installation

Install with uv:

uv tool install talonbox

You can also install it with pip or pipx:

pip install talonbox
pipx install talonbox

Usage

talonbox provides a small set of primitives for testing Talon scripts in a VM-backed sandbox.

For top-level help, run:

talonbox --help

Typical workflow:

talonbox start
talonbox rsync -av ~/.talon/user/ guest:/Users/lume/.talon/user/
talonbox mimic "focus chrome"
talonbox screenshot /tmp/talon.png
talonbox stop

For a first-pass diagnostic when the setup seems broken, run:

talonbox smoke-test

smoke-test is a mutating end-to-end sanity check. It may stop a running VM, pushes a temporary Talon command bundle, runs mimic, captures a screenshot, keeps debugging artifacts under /tmp, and leaves the VM stopped when it finishes.

General guest access:

talonbox exec -- whoami
talonbox scp guest:/tmp/out.png /tmp/out.png
printf 'print(1 + 1)\n' | talonbox repl

Host-side outputs from rsync, scp, and screenshot are intentionally restricted to /tmp. This is a caller-facing safety guarantee: invoking talonbox must not let humans or coding agents cause arbitrary host writes outside /tmp. On macOS, /tmp may resolve to /private/tmp; that canonical temp root is still allowed, but symlink escapes rooted under it are rejected. For rsync and scp, talonbox keeps the explicit guest:/... transfer rules and runs the underlying transfer process inside the macOS sandbox, so extra host-side writes outside that boundary fail with an obvious permission error instead of relying on a large flag denylist.

You can also run:

python -m talonbox --help

Security Principles

These principles are meant to keep Talon experimentation contained and predictable, especially when talonbox is driven by coding agents:

  • No caller-triggered writes to host files outside /tmp. A talonbox command should not let its caller cause arbitrary host writes beyond that boundary.
  • No symlink escapes through /tmp; a symlink placed under /tmp should not be able to redirect writes outside the allowed boundary.
  • On macOS, treat /private/tmp as the canonical form of the same allowed temp root, not as a separate exception.
  • Prefer explicit guest/host boundaries. Remote paths must be written as guest:/... so transfers stay easy to audit.
  • Favor VM-local execution first. Talon code should run in the guest and only copy explicit outputs back to the host.

Development

To contribute to this tool, use uv. The following command will establish the venv and run tests:

uv run pytest

To run talonbox locally, use:

uv run talonbox

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

talonbox-0.1.0rc1.tar.gz (26.8 kB view details)

Uploaded Source

Built Distribution

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

talonbox-0.1.0rc1-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file talonbox-0.1.0rc1.tar.gz.

File metadata

  • Download URL: talonbox-0.1.0rc1.tar.gz
  • Upload date:
  • Size: 26.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for talonbox-0.1.0rc1.tar.gz
Algorithm Hash digest
SHA256 e0605f2d906f8147391e7a7173bf6a4b9999b6b6912968cbafb55e5d876a7e54
MD5 d396215f160845f93e31a1a76a5f3f97
BLAKE2b-256 836ecf2dcaeb22fadc38b4048140944de4dc29585f1aff7c5ea45948335ad6f9

See more details on using hashes here.

File details

Details for the file talonbox-0.1.0rc1-py3-none-any.whl.

File metadata

  • Download URL: talonbox-0.1.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 23.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for talonbox-0.1.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 5e60ec494f632e021ed8e073ef2e4b4686536b400ce25d6c91dad6eeb2927f92
MD5 8c41494c556a3bf06c71a10c04a96f00
BLAKE2b-256 9e89c37f3d98c597c6df7569faeb4e03aad5b4d46f74d93478750386ffcd4332

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