Metadata-Version: 2.4
Name: vmux-cli
Version: 0.5.4
Summary: Run anything in the cloud. Replace uv run with vmux run.
Project-URL: Homepage, https://vmux.sdan.io
Project-URL: Documentation, https://vmux.sdan.io
Project-URL: Repository, https://github.com/sdan/vmux
Project-URL: Issues, https://github.com/sdan/vmux/issues
Author: sdan
License-Expression: MIT
Keywords: cloud,cloudflare,containers,distributed,ml,serverless,tmux,training
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: System :: Distributed Computing
Requires-Python: >=3.10
Requires-Dist: click>=8.0
Requires-Dist: cloudpickle>=3.0
Requires-Dist: httpx>=0.25
Requires-Dist: keyring>=25.0
Requires-Dist: pydantic>=2.0
Requires-Dist: rich>=13.0
Requires-Dist: tomli>=2.0; python_version < '3.11'
Requires-Dist: websockets>=12.0
Provides-Extra: dev
Requires-Dist: mypy>=1.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff>=0.1; extra == 'dev'
Description-Content-Type: text/markdown

# vmux

Run anything in the cloud. Replace `uv run` with `vmux run`.

**[vmux.sdan.io](https://vmux.sdan.io)** | **[demos](https://vmux.sdan.io/demos.html)**

## Install

```bash
uv tool install vmux-cli
```

## Usage

```bash
vmux run python train.py
# like uv run, but in the cloud. you get a tmux session.

vmux run -d python train.py
# detached. close your laptop. job keeps running (up to 7 days).

vmux attach abc123
# back in your tmux session. from your phone, another laptop, wherever.

vmux run -d -p 8000 python server.py
# expose a port, get a preview URL. websockets just work.

vmux ps
vmux logs -f abc123
vmux stop abc123
```

## How it works

- AST parses your imports, bundles only what you need (skips .git, venvs, checkpoints, etc.)
- auto-detects deps from pyproject.toml, requirements.txt, or PEP 723 inline scripts
- editable packages? we find them, bundle them, install them (transitive deps too)
- runs on [cloudflare containers](https://developers.cloudflare.com/containers/) with 168h keepalive
- real tmux session inside. survives disconnects. reattach from anywhere.
- pre-baked image: pytorch, transformers, numpy, pandas, fastapi

## Limits

- 0.25 vCPU, 1GB RAM per job
- 2GB disk (ephemeral, R2 mount soon)
- 7 day max runtime (indefinitely soon)
- outbound network unrestricted, inbound via preview URLs
- experimental: some jobs may be randomly evicted

## Pricing

Free for the holidays, then $2/mo.

## License

MIT
