# Install an interface, not the provider source | EasyNet Source: https://easynet.run/cases/network-native-python-library # Install an interface, not the provider source A Python consumer imports typed stubs while execution stays with the publisher. [All source cases](https://easynet.run/cases)[Inspect the pinned project](https://github.com/EasyRemote/EasyRemote/tree/44c768ca26d0f92a5ab9d1d03342895c29c27dc6/gallery/projects/08_network_native_python_library) ## The problem Python packages usually bundle implementation even when consumers only need a callable contract. ## What gets published Package publisher-scoped typed stubs that resolve to remote Abilities. ## What stays local Provider source, runtime dependencies, and execution environment. ## Business data crossing the call boundary Typed calls, released results, and protocol facts. ## What this shows The caller uses an ordinary Python function shape without installing or maintaining the provider implementation. ## What it doesn't prove This is an interface distribution pattern, not a public package registry or compatibility promise. ## Public source evidence for this case Evidence level Source layout and declarations are anonymously inspectable Pinned public EasyRemote revision 44c768ca26d0f92a5ab9d1d03342895c29c27dc6 Public inspection [Public inspection](https://easynet.run/docs/source-check#run-check) Expected check Required files, Python syntax, and @node.register declaration are checked without installing dependencies Runtime invocation Not established by this source fixture; record separate discovery, Invocation, and terminal Receipt evidence ## Run in a compatible source workspace This Provider/Client walkthrough requires compatible EasyRemote, EasyNet-Cli, and EasyNet-Axon sibling source checkouts, a compatible Hub, and a paired, running Runtime. The source is public; clean installation from public packages is not yet verified. Technical Alpha offers guided setup. Use the pinned EasyRemote revision below; this page does not pin the other components. Runtime admission still determines whether the caller may execute the function. ``` # From EasyRemote revision 44c768ca26d0f92a5ab9d1d03342895c29c27dc6 cd gallery/projects/08_network_native_python_library # One-time setup uv sync --frozen export EASYREMOTE_LIBRARY_ROOT="$PWD/.libraries" uv run easyremote add library.json # Terminal 1 uv run python node.py # Terminal 2 (same EASYREMOTE_LIBRARY_ROOT) uv run python client.py ``` [Connect your own function](https://easynet.run/docs/connect/function) Read the setup first. You need compatible sibling source checkouts, a compatible Hub, and a paired, running Runtime. Technical Alpha offers guided help; public-package clean installation is not yet verified. [All source cases](https://easynet.run/cases)[Request technical alpha](https://easynet.run/pilot)