Metadata-Version: 2.4
Name: remcat
Version: 0.1.0
Summary: LAN remote desktop daemon and client with SSH control, UDP media, and localhost controller
Author: remcat contributors
License-Expression: MIT
Project-URL: Homepage, https://github.com/remcat/remcat
Project-URL: Issues, https://github.com/remcat/remcat/issues
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Environment :: Win32 (MS Windows)
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Networking
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: asyncssh>=2.15.0
Requires-Dist: mss>=9.0.0
Requires-Dist: Pillow>=10.0.0
Requires-Dist: numpy>=1.24.0
Requires-Dist: pynput>=1.7.0
Requires-Dist: customtkinter>=5.2.0
Requires-Dist: typer>=0.9.0
Requires-Dist: pydantic-settings>=2.0.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: tomli>=1.1.0; python_version < "3.11"
Provides-Extra: win32
Requires-Dist: pywin32>=306; extra == "win32"

# remcat

LAN remote desktop with SSH control, UDP media streaming, and a localhost controller.

```
pip install remcat
```

## Components

- **`remcatd`** — Daemon that runs on the target machine. Captures screen, injects mouse/keyboard, provides a windowless shell, and exposes system actions (lock/shutdown/reboot/sleep).
- **`remcat`** — Client CLI and GUI desktop viewer.

## Quick start

```bash
# Start the daemon on the remote machine
remcatd

# On your local machine, discover daemons on the LAN
remcat discover

# Connect with the desktop viewer
remcat connect 192.168.1.100:2222

# Open a remote shell
remcat shell 192.168.1.100

# Send a controller command to the local daemon
remcat controller status
remcat controller action lock
remcat controller set-accept-level ask_new
```

## Architecture

| Transport | Purpose | Port |
|-----------|---------|------|
| SSH | Control commands, shell, auth | 2222 |
| UDP | Screen frames, mouse/keyboard input | 2223 |
| UDP | LAN discovery beacon | 2224 |
| TCP | Localhost controller (loopback only) | 2225 |

## Daemon settings (`~/.remcat/daemon.json`)

- `node_name` — Hostname broadcast on the LAN
- `ssh_port` / `udp_port` / `controller_port` — Port mappings
- `accept_level` — `auto` | `ask_new` | `ask_all`
- `known_devices` — Per-fingerprint trust settings
- `capture_fps` — Screen capture framerate (default 15)
- `jpeg_quality` — JPEG encode quality (default 75)
- `actions_enabled` — Allow lock/shutdown/reboot/sleep

## Controller (localhost, no web)

The daemon exposes a localhost-only socket on port 2225. Send JSON commands to script the daemon:

```bash
echo '{"cmd":"status"}' | nc 127.0.0.1 2225
```

## License

MIT
