Features¶
Rendering Paths¶
One API, three output targets — PyWry automatically selects the right one:
| Environment | Path | Backend |
|---|---|---|
| Desktop | Native Window | PyTauri + OS webview |
| Jupyter + anywidget | Notebook Widget | anywidget comms |
| Jupyter (fallback) | Inline IFrame | FastAPI server |
| Headless/SSH | Browser Mode | FastAPI + browser |
Core Capabilities¶
| Feature | Description |
|---|---|
| Native Windows | OS webview (WebView2/WebKit) — a few MBs vs Electron's 150MB+ |
| Jupyter Widgets | anywidget with traitlet sync, IFrame fallback |
| Browser Mode | FastAPI + WebSocket, optional Redis for scaling |
| Toolbar System | 18 Pydantic components, 7 layout positions |
| Two-Way Events | Python↔JS communication, pre-wired Plotly/AG Grid events |
| Plotly Charts | Pre-wired plot events, custom modebar buttons |
| AG Grid Tables | Pandas→AG Grid conversion, grid events, editing |
| Toast Notifications | info, success, warning, error, confirm |
| Theming | Light/dark modes, 60+ CSS variables |
| Secrets | Server-side storage, never rendered in HTML |
| Security | Token auth, CSP headers, production presets |
| Configuration | TOML files, env vars, layered precedence |
| Hot Reload | Live CSS/JS updates during development |
| Deploy Mode | Redis backend for horizontal scaling |
| Tauri Plugins | 19 bundled plugins — clipboard, notifications, HTTP, and more |
Platform Support¶
| Platform | Native Window | Notebook | Browser |
|---|---|---|---|
| macOS | WebKit | anywidget/IFrame | FastAPI |
| Windows | WebView2 | anywidget/IFrame | FastAPI |
| Linux | WebKit2GTK | anywidget/IFrame | FastAPI |
Configuration Precedence¶
Settings are merged in order (highest priority last):
- Built-in defaults
pyproject.toml[tool.pywry]pywry.toml~/.config/pywry/config.toml- Environment variables
PYWRY_*
See the Configuration Guide for details.