Skip to main content

GWAY

GWAY is a small Python command-dispatch and composition framework.

It exposes ordinary Python callables as command-line operations, binds CLI arguments to their signatures, carries named context between operations, and lets those operations be composed from the CLI, recipes, or Python.

GWAY provides reusable platform and orchestration behavior while applications keep their own domain logic. A useful boundary is: GWAY follows the platform; applications follow the business.

Quick start

For a one-line released installation, use the public bootstrap:

curl -fsSL https://install.arthexis.com/gway | sh

On the first installation, the bootstrap asks uv to persist its configured tool executable directory for future shells, but the already-open parent shell cannot inherit that PATH change. With the default uv installer you can run source ~/.local/bin/env once; the configuration-independent form is export PATH="$(uv tool dir --bin):$PATH". Opening a new shell also applies successful persisted PATH configuration.

Install GWAY with Python 3.13 or newer:

python3.13 -m pip install gway

Python 3.10 needs the TOML compatibility extra:

python3.10 -m pip install "gway[toml]"

Then run an operation:

gway env PATH
gway help copy

Operations can be composed. A standalone dash passes the previous raw result to the next operation:

producer - consumer

Named values published by operations remain available as semantic context for later operations.

Projects

GWAY follows standard Python project metadata.

The nearest pyproject.toml identifies a project. [project].name gives the project identity, and standard [project.scripts] entries can be exposed as operations.

GWAY infers project behavior from standard metadata wherever possible. GWAY-specific configuration should only be added when standard project metadata cannot express the intent.

Managed installations keep their installation state separately from the source checkout and disposable cache.

See docs/PROJECTS.md for the complete project-discovery contract and every project-level attribute GWAY currently reads.

Recipes

Recipes are small .rx files that compose ordinary GWAY operations:

gway ./recipes/deploy.rx --site MTY

Recipes use the same dispatcher and context model as the CLI. They are intended for readable orchestration rather than as a replacement for Python.

Advanced recipe behavior—including sigils, companion Python files, nested recipes, checks, repeat, rollback journals, reload/process handoff, and execution boundaries—is documented in docs/RECIPES.md.

Logging

GWAY provides one logical logging surface across journald and portable rotating files:

gway log sources
gway log read arthexis --since "10 minutes ago"
gway log tail arthexis/web --limit 50
gway log search "connection refused" arthexis
gway log read --all --limit 100

Journald is used automatically when available. Otherwise GWAY uses structured rotating files. With no source argument, reads remain limited to GWAY-managed sources rather than the entire host journal. See docs/LOGGING.md for the source model, backend behavior, and portable query semantics.

Documentation

Development

Install the active checkout with development tools.

With Python 3.13 or newer:

python3.13 -m pip install -e ".[dev]"

With Python 3.10, include the TOML compatibility extra:

python3.10 -m pip install -e ".[dev,toml]"

Run the test and quality suites:

python -m pytest -q
python -m ruff check gway tests

CI exercises the supported Python versions defined by the repository workflows.

License

MIT License.

Metadata

Release files for gway 0.4.66

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gway 0.4.66
File Size Uploaded
gway-0.4.66.tar.gz 288.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gway 0.4.66
File Interpreter ABI Platform
gway-0.4.66-py3-none-any.whl Python 3 none any Details

Total release size: 602.7 kB

Release files / gway-0.4.66.tar.gz

Download URL gway-0.4.66.tar.gz
Size 288.1 kB
Tags Source
SHA-256 checksum
How to use checksums
80bd83af2b82549cbfee88b3886c25f50558bcfbdfe965d0d395351c0ae37704
BLAKE2b-256 checksum
How to use checksums
808e105a8154de95168c567593959ddddc59b1d6fb3575a79e49f4a64a3bf35d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / gway-0.4.66-py3-none-any.whl

Download URL gway-0.4.66-py3-none-any.whl
Size 314.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
86a4c62f5b0490edc961e820d289d65c8deed1a847a8879e44cf08356ca34a5f
BLAKE2b-256 checksum
How to use checksums
e9c8df02b8c6dd025afd5c09fe426cd2579a1c5b152ff3d71314c4ee3b1c1d71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release history Release notifications | RSS feed

1.0.1

2 release files

1.0.0

2 release files

This release

0.4.66 This release

2 release files

0.4.59

2 release files

0.4.58

2 release files

0.4.57

2 release files

0.4.56

2 release files

0.4.55

2 release files

0.4.54

2 release files

0.4.53

2 release files

0.4.52

2 release files

0.4.51

2 release files

0.4.50

2 release files

0.4.49

2 release files

0.4.48

2 release files

0.4.47

2 release files

0.4.46

2 release files

0.4.45

2 release files

0.4.44

2 release files

0.4.43

2 release files

0.4.42

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.3.40

2 release files

0.3.39

2 release files

0.3.38

2 release files

0.3.37

2 release files

0.3.36

2 release files

0.3.35

2 release files

0.3.34

2 release files

0.3.33

2 release files

0.3.32

2 release files

0.3.31

2 release files

0.3.30

2 release files

0.3.29

2 release files

0.3.28

2 release files

0.3.27

2 release files

0.3.26

2 release files

0.3.25

2 release files

0.3.24

2 release files

0.3.23

2 release files

0.3.22

2 release files

0.3.21

2 release files

0.3.20

2 release files

0.3.19

2 release files

0.3.18

2 release files

0.3.17

2 release files

0.3.16

2 release files

0.3.15

2 release files

0.3.14

2 release files

0.3.13

2 release files

0.3.12

2 release files

0.3.11

2 release files

0.3.10

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.56

2 release files

0.2.55

2 release files

0.2.54

2 release files

0.2.53

2 release files

0.2.52

2 release files

0.2.51

2 release files

0.2.50

2 release files

0.2.48

2 release files

0.2.47

2 release files

0.2.46

2 release files

0.2.18

2 release files

0.2.17

2 release files

0.2.16

2 release files

0.2.15

2 release files

0.2.14

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.48

2 release files

0.1.47

2 release files

0.1.44

2 release files

0.1.43

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.40

2 release files

0.1.39

2 release files

0.1.38

2 release files

0.1.37

2 release files

0.1.36

2 release files

0.1.35

2 release files

0.1.34

2 release files

0.1.33

2 release files

0.1.32

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.28

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.0.26

2 release files

0.0.24

2 release files

0.0.23

2 release files

0.0.21

2 release 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