This repository is a non-umbrella Mix workspace. The repository root is a
tooling project only; it is not the execution_plane Hex package.
The publishable common substrate package lives at core/execution_plane.
Blitz and workspace orchestration live only in the root project so they cannot
enter the published execution_plane package dependency graph.
The checkout contains exactly eight active Mix projects:
core/execution_plane: publishableexecution_planecommon substrateprotocols/execution_plane_http: unary HTTP laneprotocols/execution_plane_jsonrpc: JSON-RPC framing and correlation lanestreaming/execution_plane_sse: SSE framing and stream lifecycle lanestreaming/execution_plane_websocket: WebSocket handshake/frame laneruntimes/execution_plane_process: process/PTY/stdio lane, the sole owner oferlexecruntimes/execution_plane_node: lane-neutral runtime node and localExecutionPlane.Runtime.Clientruntimes/execution_plane_operator_terminal: operator-facing terminal runtime, kept separate so base consumers do not inheritex_ratatui
The root mix.exs is :execution_plane_workspace; it exists to run Blitz
workspace tasks, root documentation, and repository-level checks.
Add the common substrate package when you need contracts, codecs, placement descriptors, runtime-client behaviours, evidence envelopes, and pure helpers:
def deps do
[
{:execution_plane, "~> 0.1.0"}
]
endLane hosts and family kits opt into the exact lane packages they run:
def deps do
[
{:execution_plane, "~> 0.1.0"},
{:execution_plane_node, "~> 0.1.0"},
{:execution_plane_process, "~> 0.1.0"}
]
endDownstream SDK users normally should not add Execution Plane deps manually.
For example, CLI provider SDKs get local subprocess execution transitively
through cli_subprocess_core, and REST/GraphQL-only SDKs should stay above
their HTTP or GraphQL family kit.
Run the workspace gate from the repository root:
mix deps.get
mix ciThe root gate uses Blitz to run package-local mix ci aliases for every
active package. Package gates can still be run directly:
cd core/execution_plane && mix ci
cd protocols/execution_plane_http && mix ci
cd protocols/execution_plane_jsonrpc && mix ci
cd streaming/execution_plane_sse && mix ci
cd streaming/execution_plane_websocket && mix ci
cd runtimes/execution_plane_process && mix ci
cd runtimes/execution_plane_node && mix ci
cd runtimes/execution_plane_operator_terminal && mix ciPublish from package directories, never from the repository root:
cd core/execution_plane
mix hex.build
mix hex.publishPublish the common execution_plane package first, then lane packages that
depend on it, then execution_plane_node, and finally
execution_plane_operator_terminal.
The common contracts carry ExecutionPlane.Sandbox.Profile and
ExecutionPlane.Sandbox.AcceptableAttestation values as opaque policy and
target-selection data. They do not enforce a sandbox by themselves.
local-erlexec-weak means local process execution with weak local
attestation. It is not a container, microVM, or cryptographic isolation claim.
Stronger target classes must be backed by a host-owned verifier and target
protocol evidence before they enter the node routing table.
MIT