CodeAway
CodeAway is a thin, browser-based remote control for local AI coding agents.
Version 0.1 supports one pairing only: Windows with Codex Desktop. The
source repository is codeaway2; the Python package and command are
codeaway.
Status: early alpha. The Windows/Codex Desktop phone flow has been smoke-tested; expect rough edges and breaking changes.
Install
The shortest recommended path is:
uvx codeaway
uvx is convenient, not required. You can instead install with either:
pipx install codeaway
py -m pip install codeaway
Platform support
Windows with Codex Desktop is the supported pairing. macOS and Linux can install the package, but desktop control for those platforms is not implemented yet.
Run CodeAway
The first run is laptop-only. Start CodeAway in the foreground:
uvx codeaway
It listens on 127.0.0.1:8765 and opens /setup in the laptop browser. Choose
the visible Codex Desktop window and draw all three capture regions:
- Sidebar: the projects and tasks on the left.
- Conversation: the right pane above the input.
- Composer: the chat box only; it may grow taller. Do not include the full-width toolbar or status row.
To enable phone access, restart with an address assigned to the laptop on your LAN or Tailscale network:
uvx codeaway --ip <IPv4-LAN-or-Tailscale-address>
The explicit address is saved only after it binds successfully. Later
uvx codeaway launches reuse both that address and the saved calibration. If
the saved Codex window and all three regions resolve, CodeAway prints the phone
workspace URL without opening a laptop browser. The phone workspace still
links to /setup when recalibration is needed.
If a cached address is no longer available, CodeAway warns, falls back to
127.0.0.1, and saves that fallback. An invalid explicit address exits instead
of silently changing interfaces. Use --no-browser to suppress an otherwise
necessary setup launch and --port PORT to select and cache another port.
CodeAway v0.1 accepts IPv4 literals only; IPv6 addresses are rejected with an
actionable startup error.
Security: A non-loopback endpoint grants full desktop mouse and keyboard input control to every device that can reach it. CodeAway v0.1 has no pairing or authentication, so expose it only on a network boundary you trust.
Architecture
CodeAway deliberately separates two independent backend axes:
| Module | Backends | Responsibility |
|---|---|---|
agents.py |
Codex first; Claude Code and Cursor later | Owns application semantics: detection, projects and tasks, navigation, calibrated surfaces, and actions |
desktop.py |
Windows first; macOS and Linux later | Owns OS mechanics: windows, screenshots, accessibility, mouse, keyboard, and clipboard operations |
The server composes one agent backend with one desktop backend. For the first release that pair is Codex Desktop on Windows. Agent backends do not contain Windows APIs, and desktop backends do not contain Codex-specific behavior.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file codeaway-0.1.0.tar.gz.
File metadata
- Download URL: codeaway-0.1.0.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39f273e6945334f82c747caf3ae14ca45238a619e69ac051a58e203e47a512b8
|
|
| MD5 |
b1a8d5d0ed0d1a137d9182c576d56153
|
|
| BLAKE2b-256 |
a8f21a57f63898e9121892e4a1a917baa665b603452f848a1648f323ba88cae9
|
Provenance
The following attestation bundles were made for codeaway-0.1.0.tar.gz:
Publisher:
publish.yml on jmoraispk/codeaway2
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
codeaway-0.1.0.tar.gz -
Subject digest:
39f273e6945334f82c747caf3ae14ca45238a619e69ac051a58e203e47a512b8 - Sigstore transparency entry: 2741736131
- Sigstore integration time:
-
Permalink:
jmoraispk/codeaway2@02cce12667fc2dab428e79514d6714a7c4a467f3 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jmoraispk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02cce12667fc2dab428e79514d6714a7c4a467f3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file codeaway-0.1.0-py3-none-any.whl.
File metadata
- Download URL: codeaway-0.1.0-py3-none-any.whl
- Upload date:
- Size: 34.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3126fbad39a5707938294e404deca29488255783d30d05b501cf0e4b706a1c8
|
|
| MD5 |
735ca0e00a56a515226fe80520f21a52
|
|
| BLAKE2b-256 |
7d584b09185a864f349880ccf98bd7b120f3de7d6b059b0ce23765933542a49c
|
Provenance
The following attestation bundles were made for codeaway-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on jmoraispk/codeaway2
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
codeaway-0.1.0-py3-none-any.whl -
Subject digest:
f3126fbad39a5707938294e404deca29488255783d30d05b501cf0e4b706a1c8 - Sigstore transparency entry: 2741736185
- Sigstore integration time:
-
Permalink:
jmoraispk/codeaway2@02cce12667fc2dab428e79514d6714a7c4a467f3 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jmoraispk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02cce12667fc2dab428e79514d6714a7c4a467f3 -
Trigger Event:
push
-
Statement type: