Metadata-Version: 2.5
Name: pusk
Version: 0.1.0
Summary: Python SDK and CLI for Pusk, a Python-first function/task cloud.
Project-URL: Homepage, https://github.com/AlexKay28/pusk
Project-URL: Repository, https://github.com/AlexKay28/pusk
Project-URL: Issues, https://github.com/AlexKay28/pusk/issues
Project-URL: Changelog, https://github.com/AlexKay28/pusk/blob/main/CHANGELOG.md
Project-URL: Documentation, https://github.com/AlexKay28/pusk/blob/main/docs/getting-started.md
Author: Pusk Maintainers
License-Expression: MIT
License-File: LICENSE
Keywords: cli,cloud,functions,modal,remote-execution,sdk,self-hosted,serverless
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
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: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Requires-Dist: pydantic>=2.7
Requires-Dist: tomli>=1.1; python_version < '3.11'
Requires-Dist: typer>=0.12
Provides-Extra: tui
Requires-Dist: textual>=0.40; extra == 'tui'
Description-Content-Type: text/markdown

# Pusk — Python-first function cloud

Write Python, run it remotely. Pusk is a Python-first function/task cloud:
decorate a function, call `.remote()`, and it executes on a self-hostable
control plane — no vendor lock-in, no proprietary runtime.

```python
import pusk

app = pusk.App("reports")


@app.function(timeout=60, memory=256)
def build_report(customer_id: str) -> dict: ...
```

## Quickstart

```bash
pip install pusk
pusk setup --token pusk_... --api-url https://api.pusk.example
pusk run hello.py::app/greet '{"name":"world"}'
```

## Key features

- **`from_name`** — reconnect to a deployed function by name (no import needed)
- **`map`** — fan-out parallel calls with bounded concurrency, results in input order
- **Schedules** — `app.schedule(fn, cron="0 6 * * *")` or `Period(30.0)` for periodic runs
- **Web endpoints** — `@web_endpoint(method="GET")` exposes a function as HTTP
- **Secrets** — `Secret.from_name("API_KEY")`; values never live in the SDK
- **Image builder** — `Image.debian_slim()` with pip fast-path and BuildKit support
- **TUI** — interactive terminal UI (`pip install pusk[tui]`)
- **CLI streaming** — live call output streaming via `pusk run`

## Modal parity callout

Pusk delivers **Modal-like developer experience** — same decorator-based DX,
same `.remote()` / `.spawn()` / `.map()` semantics — but is **self-hostable
and MIT-licensed**. No vendor lock-in, no proprietary runtime, no per-invocation
billing from a third party. Your cluster, your code, your rules.

## Documentation

- [Getting started](https://github.com/AlexKay28/pusk/blob/main/docs/getting-started.md)
- [Full README](https://github.com/AlexKay28/pusk/blob/main/sdk/python/README.md)

## Source

- [GitHub repository](https://github.com/AlexKay28/pusk)
- [Issue tracker](https://github.com/AlexKay28/pusk/issues)

## License

MIT — see [LICENSE](https://github.com/AlexKay28/pusk/blob/main/LICENSE).
