Python runtime server implementing the MRMD Runtime Protocol (MRP)
Project description
mrmd-python
Independent Python runtime for MRMD notebooks. Runs as a daemon process with full GPU memory isolation.
Features
- Independent daemon process - survives if parent dies, variables persist
- GPU memory isolation - kill daemon to release VRAM (critical for vLLM)
- Auto venv detection - uses current venv or
VIRTUAL_ENV - Registry-based discovery - find runtimes via
~/.mrmd/runtimes/ - Full MRP protocol - execute, completions, inspect, variables, streaming
Installation
# With uv
uv pip install mrmd-python
# Or run directly without installing
uvx mrmd-python
Quick Start
# Start a daemon runtime (auto-detects venv)
mrmd-python
# The daemon runs in background. Use the API:
curl http://localhost:PORT/mrp/v1/capabilities
# List running runtimes
mrmd-python --list
# Kill when done (releases GPU memory)
mrmd-python --kill default
CLI Reference
# Start daemon
mrmd-python # Start with ID "default"
mrmd-python --id vllm # Start with custom ID
mrmd-python --venv /path/venv # Use specific venv
mrmd-python --port 8000 # Use specific port
# Management
mrmd-python --list # List all running runtimes
mrmd-python --info ID # Get runtime details
mrmd-python --kill ID # Kill a runtime
mrmd-python --kill-all # Kill all runtimes
# Development
mrmd-python --foreground # Run in foreground (no daemon)
Virtual Environment Detection
When --venv is not specified, mrmd-python auto-detects:
- Current venv (if running inside one via
sys.prefix) VIRTUAL_ENVenvironment variable- Falls back to system Python
API Endpoints
All endpoints at /mrp/v1/:
| Endpoint | Method | Purpose |
|---|---|---|
/capabilities |
GET | Runtime info and features |
/sessions |
GET/POST | List/create sessions |
/sessions/{id} |
GET/DELETE | Get/destroy session |
/execute |
POST | Run code |
/execute/stream |
POST | Run code with SSE streaming |
/complete |
POST | Get completions |
/inspect |
POST | Get symbol documentation |
/hover |
POST | Get hover tooltip |
/variables |
POST | List user variables |
/variables/{name} |
POST | Get variable details |
/is_complete |
POST | Check if code is complete |
/format |
POST | Format code with black |
Architecture
~/.mrmd/
├── runtimes/
│ └── {id}.json # Registry: pid, port, url, venv, cwd
└── logs/
└── {id}.log # Daemon logs
Each runtime is a fully independent process:
- Double-forked daemon (survives parent death)
- Own IPython shell with persistent variables
- HTTP server on auto-assigned port
- Registered in
~/.mrmd/runtimes/for discovery
GPU Memory Management
For vLLM and other GPU workloads, memory is only released when the process dies:
# Load model in runtime
mrmd-python --id vllm
# ... use the model ...
# Release GPU memory
mrmd-python --kill vllm
Programmatic Usage
from mrmd_python import create_app
import uvicorn
# Create app (daemon_mode=True for use inside daemon)
app = create_app(
cwd="/path/to/project",
venv="/path/to/venv",
daemon_mode=True,
)
uvicorn.run(app, host="localhost", port=8000)
Protocol
See PROTOCOL.md for the full MRP specification.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mrmd_python-0.4.2.tar.gz.
File metadata
- Download URL: mrmd_python-0.4.2.tar.gz
- Upload date:
- Size: 56.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c25362e48748febd00f17436c470507f91005604e1f9ec4329250208d40460a
|
|
| MD5 |
d6a4fc4788a8141cd5a902aa49df5383
|
|
| BLAKE2b-256 |
1f83023b686c61dae6206dd3d170b6fcf19a6b97941c59db64e974c1a6b4d01b
|
File details
Details for the file mrmd_python-0.4.2-py3-none-any.whl.
File metadata
- Download URL: mrmd_python-0.4.2-py3-none-any.whl
- Upload date:
- Size: 45.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df5ab077ee27a518b8285a1189ecc8e3c5e2bbd9a1928ccdbc42bd07895e05b5
|
|
| MD5 |
645b830d9ed8016cebc893b639439fff
|
|
| BLAKE2b-256 |
5a27f88f232f2f4a04cdaddeab1c67d43ab60949aced2e940e8aa8795f1f6207
|