End-user CLI for deploying apps to urun
Project description
urun CLI
Deploy Python apps to urun from your terminal.
Install
uv tool install urun-cli
# or
pip install urun-cli
The package installs the urun command:
urun --version
For one-off uvx usage:
uvx --from urun-cli urun --version
# or the package-matching command alias
uvx urun-cli --version
Quick start
Set your API key:
export URUN_API_KEY=urun_<32hex>
Create app.py:
import urun
from urun import App
app = App("hello-h100")
@app.function(gpus="h100:1")
def hello(ctx: urun.Context):
print(f"running on {ctx.device}")
return {"device": str(ctx.device)}
Deploy it:
urun deploy app.py
The API key identifies your account on the server side. There is no separate org ID, login step, or local project setup for the v1 CLI.
What gets deployed
urun deploy creates a source manifest from your Python entrypoint:
| Entrypoint | Included source |
|---|---|
urun deploy app.py |
app.py and local Python files it imports |
Dependencies are declared in your urun app code. Project-level files such as
pyproject.toml and requirements.txt are not uploaded as dependency
declarations by the CLI.
Generated/cache content such as .git, dotfiles, __pycache__, and .pyc
files is excluded. Add .urunignore to exclude additional paths.
Non-Python assets such as templates, static files, and data files are not auto-included yet.
Common options
| Option | Description |
|---|---|
--name |
Override the derived app name. |
--api-url |
Override the API URL; defaults to https://api.urun.sh/v1. |
--api-key |
API key; prefer URUN_API_KEY to avoid shell history leaks. |
--no-wait |
Finalize but do not poll for readiness. |
--poll-interval, --timeout |
Control readiness polling. |
Troubleshooting
| Error | Fix |
|---|---|
missing API key |
Set URUN_API_KEY or pass --api-key. |
invalid API key format |
Use urun_<32 lowercase hex chars>. |
entrypoint not found |
Run from the project root or pass the entrypoint path. |
path is outside the project root |
Move the file under the project before deploying. |
| Expected files are missing | Import local Python files from app.py; non-Python assets are not auto-included yet. |
Development
Contributing and test instructions are in CONTRIBUTING.md.
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 urun_cli-0.1.0-1-py3-none-any.whl.
File metadata
- Download URL: urun_cli-0.1.0-1-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3807dc3ebbcfd1803ba7c561982521c5a3f74d95b96cfbb680924ab6e5ca54af
|
|
| MD5 |
65aa3ac2577c047180488329825d6f8f
|
|
| BLAKE2b-256 |
e0e7a00ba49c195a8a66f2dfc298d1807e8263c590e5a6c18b11082f367f2411
|
Provenance
The following attestation bundles were made for urun_cli-0.1.0-1-py3-none-any.whl:
Publisher:
release.yaml on urun-sh/urun-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
urun_cli-0.1.0-1-py3-none-any.whl -
Subject digest:
3807dc3ebbcfd1803ba7c561982521c5a3f74d95b96cfbb680924ab6e5ca54af - Sigstore transparency entry: 1598177783
- Sigstore integration time:
-
Permalink:
urun-sh/urun-cli@fdf675670ce2c531c80a2c1bae148ff69d7d0a0e -
Branch / Tag:
refs/heads/main - Owner: https://github.com/urun-sh
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@fdf675670ce2c531c80a2c1bae148ff69d7d0a0e -
Trigger Event:
push
-
Statement type: