# Jupyter Remote Runner
A CLI interface to a persistent Jupyter kernel for code execution with timeout handling and streaming output.
## Installation
Install using pipx (recommended):
```bash
pipx install .
```
Or using pip:
```bash
pip install .
```
## Usage
### Commands
- `jupyter-remote-runner --help` - Show help
- `jupyter-remote-runner start` - Start the Jupyter kernel daemon
- `jupyter-remote-runner stop` - Stop the daemon
- `jupyter-remote-runner status` - Check daemon status
- `jupyter-remote-runner run <code>` - Execute code in the persistent kernel
### Run Command Options
- `--timeout <seconds>` - Set execution timeout (default: 60)
- `--is-input` - Send code as input to Python input() prompt
### Examples
```bash
# Start the daemon
jupyter-remote-runner start
# Execute Python code
jupyter-remote-runner run "print('Hello World')"
# Execute shell command
jupyter-remote-runner run "!ls -la"
# Execute bash magic
jupyter-remote-runner run "%%bash\necho 'Hello from bash'"
# Continue previous command output
jupyter-remote-runner run " "
# Interrupt running command
jupyter-remote-runner run "C-c"
# Execute with custom timeout
jupyter-remote-runner run "import time; time.sleep(10)" --timeout 15
# Check status
jupyter-remote-runner status
# Stop the daemon
jupyter-remote-runner stop
```
## Features
- **Persistent Kernel**: Maintains state between commands
- **Streaming Output**: Real-time output streaming
- **Timeout Support**: Configurable execution timeouts
- **Cross-Platform**: Works on Windows, macOS, and Linux
- **Background Daemon**: Runs kernel in background process
- **Signal Handling**: Support for interrupting long-running commands
- **Input Support**: Handle Python input() calls
## Development
Run tests:
```bash
python test_cli.py
```
Run directly from source:
```bash
python -m jupyter_remote_runner --help
```
Raw data
{
"_id": null,
"home_page": "https://github.com/user/jupyter-remote-runner",
"name": "jupyter-remote-runner",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": null,
"author": "User",
"author_email": "user@example.com",
"download_url": "https://files.pythonhosted.org/packages/1d/f3/171ad814eb5f1643a7393e88bfae22ae71ffd923b4a0e2739f03f87e504d/jupyter_remote_runner-0.1.1.tar.gz",
"platform": null,
"description": "# Jupyter Remote Runner\n\nA CLI interface to a persistent Jupyter kernel for code execution with timeout handling and streaming output.\n\n## Installation\n\nInstall using pipx (recommended):\n\n```bash\npipx install .\n```\n\nOr using pip:\n\n```bash\npip install .\n```\n\n## Usage\n\n### Commands\n\n- `jupyter-remote-runner --help` - Show help\n- `jupyter-remote-runner start` - Start the Jupyter kernel daemon\n- `jupyter-remote-runner stop` - Stop the daemon\n- `jupyter-remote-runner status` - Check daemon status\n- `jupyter-remote-runner run <code>` - Execute code in the persistent kernel\n\n### Run Command Options\n\n- `--timeout <seconds>` - Set execution timeout (default: 60)\n- `--is-input` - Send code as input to Python input() prompt\n\n### Examples\n\n```bash\n# Start the daemon\njupyter-remote-runner start\n\n# Execute Python code\njupyter-remote-runner run \"print('Hello World')\"\n\n# Execute shell command\njupyter-remote-runner run \"!ls -la\"\n\n# Execute bash magic\njupyter-remote-runner run \"%%bash\\necho 'Hello from bash'\"\n\n# Continue previous command output\njupyter-remote-runner run \" \"\n\n# Interrupt running command\njupyter-remote-runner run \"C-c\"\n\n# Execute with custom timeout\njupyter-remote-runner run \"import time; time.sleep(10)\" --timeout 15\n\n# Check status\njupyter-remote-runner status\n\n# Stop the daemon\njupyter-remote-runner stop\n```\n\n## Features\n\n- **Persistent Kernel**: Maintains state between commands\n- **Streaming Output**: Real-time output streaming\n- **Timeout Support**: Configurable execution timeouts\n- **Cross-Platform**: Works on Windows, macOS, and Linux\n- **Background Daemon**: Runs kernel in background process\n- **Signal Handling**: Support for interrupting long-running commands\n- **Input Support**: Handle Python input() calls\n\n## Development\n\nRun tests:\n\n```bash\npython test_cli.py\n```\n\nRun directly from source:\n\n```bash\npython -m jupyter_remote_runner --help\n```",
"bugtrack_url": null,
"license": null,
"summary": "CLI interface to a persistent Jupyter kernel for code execution with timeout handling",
"version": "0.1.1",
"project_urls": {
"Homepage": "https://github.com/user/jupyter-remote-runner",
"Repository": "https://github.com/user/jupyter-remote-runner"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "be4c6ef5e6903b46f716f8396bac534ca594d2f5528e8b5007e5a11adb9b40c6",
"md5": "8f8876eddfdefebe94aa5d0846bc6d8d",
"sha256": "cde2de1a84048253000d78ef43dee1ab4618cf23ffca41838708a8c7f43b12a3"
},
"downloads": -1,
"filename": "jupyter_remote_runner-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8f8876eddfdefebe94aa5d0846bc6d8d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 9938,
"upload_time": "2025-08-05T06:34:16",
"upload_time_iso_8601": "2025-08-05T06:34:16.943585Z",
"url": "https://files.pythonhosted.org/packages/be/4c/6ef5e6903b46f716f8396bac534ca594d2f5528e8b5007e5a11adb9b40c6/jupyter_remote_runner-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1df3171ad814eb5f1643a7393e88bfae22ae71ffd923b4a0e2739f03f87e504d",
"md5": "dc23388decf11793078192c7bdaa75d5",
"sha256": "85b8f64501648ed5cdd02c3e65c3d5da1d834ac7a6963e5a5df40929d5f3b841"
},
"downloads": -1,
"filename": "jupyter_remote_runner-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "dc23388decf11793078192c7bdaa75d5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 7643,
"upload_time": "2025-08-05T06:34:18",
"upload_time_iso_8601": "2025-08-05T06:34:18.170332Z",
"url": "https://files.pythonhosted.org/packages/1d/f3/171ad814eb5f1643a7393e88bfae22ae71ffd923b4a0e2739f03f87e504d/jupyter_remote_runner-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-05 06:34:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "user",
"github_project": "jupyter-remote-runner",
"github_not_found": true,
"lcname": "jupyter-remote-runner"
}