Metadata-Version: 2.4
Name: skop-runner
Version: 0.1.15
Summary: Local execution client for Skop Labs — run Jupyter notebooks from the browser on your own machine
Project-URL: Homepage, https://skoplabs.com
Project-URL: Repository, https://github.com/aryanpandhi/skoplabs
Project-URL: Issues, https://github.com/aryanpandhi/skoplabs/issues
Author-email: Skop Labs <team@skoplabs.com>
License: MIT
Keywords: execution,jupyter,notebook,runner
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
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 :: Scientific/Engineering
Requires-Python: >=3.10
Requires-Dist: aiofiles<25,>=23.2
Requires-Dist: click<9,>=8.1
Requires-Dist: httpx<1,>=0.27
Requires-Dist: ipykernel<7,>=6.29
Requires-Dist: jupyter-server<3,>=2.0
Requires-Dist: nbformat<6,>=5.9
Requires-Dist: patch-ng<2,>=1.19
Requires-Dist: psutil<7,>=5.9
Requires-Dist: pydantic<3,>=2.5
Requires-Dist: rich<14,>=13.7
Requires-Dist: structlog<26,>=25.1
Requires-Dist: websockets<14,>=12.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
Requires-Dist: pytest>=7.4; extra == 'dev'
Requires-Dist: respx>=0.21; extra == 'dev'
Requires-Dist: ruff>=0.1; extra == 'dev'
Description-Content-Type: text/markdown

# Skop Runner

Run Jupyter notebooks from [Skop](https://skoplabs.com) on your own machine. Skop Runner connects your local computer to the Skop workspace, letting you execute code, manage files, and use your local Python environments — all from the browser.

## Installation

Requires Python 3.10+.

```bash
# Recommended (isolated install, no venv needed)
uv tool install skop-runner

# Alternative
pipx install skop-runner

# Inside a virtual environment
pip install skop-runner
```

`uv tool` and `pipx` install `skop-runner` in its own isolated environment and
add the CLI to your PATH. This is the recommended approach since `skop-runner`
is a system-wide tool, not a per-project dependency.

Bare `pip install` into system Python is blocked on modern macOS/Linux
(PEP 668). Use `pip` only inside an activated virtual environment.

## Quick Start

### 1. Get your device token

Go to [skoplabs.com](https://skoplabs.com), open a workspace, and click **Add Device** in the device dropdown. Copy the token.

### 2. Login

```bash
skop-runner login --token <your-device-token>
```

### 3. Start the runner

```bash
skop-runner start
```

That's it. Open your workspace in the browser and select your device — you can now browse folders, open notebooks, and execute code on your machine.

## Commands

| Command | Description |
|---------|-------------|
| `skop-runner login --token <token>` | Authenticate with Skop |
| `skop-runner start` | Start the runner |
| `skop-runner status` | Check authentication status |
| `skop-runner logout` | Remove authentication |

## How It Works

Skop Runner runs a local process that:
- Connects to the Skop relay server via WebSocket
- Manages Jupyter kernels for notebook execution
- Serves your local files to the browser workspace
- Detects Python environments (venv, conda, Poetry, Pipenv, pyenv)

Your code runs entirely on your machine. Skop only relays messages between your browser and the runner.

## Configuration

Config is stored in `~/.skop/config.json` (created by `skop-runner login`).

Environment variable overrides:
- `SKOP_API_URL` — API URL (default: https://skoplabs.com)
- `SKOP_WS_URL` — WebSocket relay URL
- `SKOP_LOG_LEVEL` — Logging level (default: INFO)

## Requirements

- Python 3.10+
- macOS or Linux (Windows support coming soon)

## License

MIT
