A background Python process sits in memory with a persistent namespace. You write .py files with #%% cell blocks, then execute cells by reference. No ports, no sockets, no dependencies.