Metadata-Version: 2.4
Name: remote-cluster-controller
Version: 0.1.0
Summary: Remote cluster controller: push, pull, run, shell over SSH + rsync
Author: xyao
License: MIT
Requires-Python: >=3.11
Requires-Dist: paramiko>=3.4
Requires-Dist: typer>=0.12
Description-Content-Type: text/markdown

# rcc

Remote cluster controller. Generalizes the classic `ssh host "cd dir && cmd"` +
`rsync project/ host:dir/` workflow into a small CLI with per-project config.

## Install

```bash
uv tool install remote-cluster-controller
# or
pipx install remote-cluster-controller
```

## Quickstart

```bash
cd my-project
rcc init
# edit .rcc/config.toml to set host and remote_dir
rcc push --dry-run
rcc push
rcc run -- nvidia-smi
rcc run -t -- htop
rcc shell
rcc pull
rcc status
rcc close
```

## Configuration

`.rcc/config.toml` (per project, gitignored):

```toml
default = "myhost"

[profiles.myhost]
host = "myhost"
remote_dir = "/abs/path/on/remote"
```

Per-command overrides: `--profile`, `--host`, `--remote-dir`.
Excludes: edit `.rcc/rccignore` (gitignore syntax).

## Release

```bash
make publish-dry-run  # build and validate without uploading
make publish-test     # upload to TestPyPI
make publish          # upload to PyPI
```

The PyPI project name is `remote-cluster-controller`; the installed executable is still `rcc`.

Use a PyPI API token with either form:

```bash
PYPI_API_TOKEN=pypi-... make publish
# or
UV_PUBLISH_TOKEN=pypi-... make publish
```

You can also use `UV_PUBLISH_USERNAME` / `UV_PUBLISH_PASSWORD` or trusted publishing.

See [`docs/superpowers/specs/2026-04-23-rcc-design.md`](docs/superpowers/specs/2026-04-23-rcc-design.md) for the full spec.
