Metadata-Version: 2.4
Name: hypernote
Version: 0.1.0
Summary: Thin control plane for Jupyter notebook execution with jobs, attribution, and runtime lifecycle
Project-URL: Homepage, https://github.com/gilad-rubin/hypernote
Project-URL: Repository, https://github.com/gilad-rubin/hypernote
Project-URL: Issues, https://github.com/gilad-rubin/hypernote/issues
Requires-Python: >=3.11
Requires-Dist: click>=8.0
Requires-Dist: httpx>=0.27
Requires-Dist: jupyter-collaboration>=3.0
Requires-Dist: jupyter-server-nbmodel>=0.1
Requires-Dist: jupyter-server>=2.0
Requires-Dist: jupyter-ydoc>=2.0
Requires-Dist: pycrdt-websocket>=0.15
Requires-Dist: pycrdt>=0.12
Provides-Extra: dev
Requires-Dist: playwright>=1.40; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Description-Content-Type: text/markdown

# Hypernote

- **Notebook-first** - Hypernote is a thin execution control plane on top of Jupyter shared documents.
- **One notebook truth** - notebook edits, execution, and late-open JupyterLab views all operate on the same logical document.
- **Agent-first surface** - the Python SDK is primary, and the CLI is a thin shell over it.
- **Ephemeral control plane** - Jupyter owns durable `.ipynb` contents and outputs; Hypernote owns in-memory runtimes, jobs, and attribution.

## What it ships

- notebook-first SDK in `hypernote/sdk.py`
- agent-first CLI in `hypernote/cli/main.py`
- Jupyter server extension for execution and runtime control
- notebook-scoped runtime lifecycle with attach, detach, recovery, and stop
- job polling and `input()` round-trips for headless execution
- live-server and browser regression coverage for shared-document behavior

## Quick start

```bash
uv sync --all-extras
uv run hypernote --help
uv run hypernote create tmp/demo.ipynb
uv run hypernote ix tmp/demo.ipynb -s 'value = 20 + 22\nprint(value)'
uv run hypernote status tmp/demo.ipynb --full
```

## Mental model

Jupyter owns:

- notebook persistence
- shared YDoc document state
- kernel and session primitives
- notebook rendering in JupyterLab

Hypernote owns:

- runtime lifecycle around a notebook
- job coordination and stdin round-trips
- actor attribution
- SDK, CLI, and thin REST handlers

## Documentation

- [Getting Started](/Users/giladrubin/python_workspace/hypernote/docs/getting-started.md)
- [CLI Reference](/Users/giladrubin/python_workspace/hypernote/docs/cli.md)
- [SDK Reference](/Users/giladrubin/python_workspace/hypernote/docs/sdk.md)
- [Runtime Model](/Users/giladrubin/python_workspace/hypernote/docs/runtime-model.md)

## Verification

```bash
uv run ruff check hypernote tests
uv run python -m pytest -q
```
