Repository F# setup
open System
open System.IO
open System.Threading
open System.Threading.Tasks
open Axial
open Axial.Layers
open Axial.Console
open Axial.FileSystem
open Axial.Hosting
open Axial.Hosting.Browser
open Axial.Hosting.Node
open Axial.HttpClient
open Axial.PlatformService
open Axial.Process
open Axial.State
open Axial.Telemetry
open Axial.Telemetry.JavaScriptAxial.Process represents external work as an immutable ProcessSpec. Building a specification performs no I/O. Process.run asks the IProcess service to interpret it in the current Flow runtime.
open Axial.Process
let version =
Process.command "dotnet" [ "--version" ]
|> Process.timeout (TimeSpan.FromSeconds 10)
|> Process.runProcess.command creates a runnable one-stage specification. Configuration functions return updated values, and Process.pipe connects specifications through real standard streams. Process.run returns Flow<#IHasProcess, ProcessError, ProcessResult>; Process.stream returns output and completion events with backpressure.
The live interpreter receives its operational dependencies explicitly:
let process = Process.live clock fileSystem consoleSupply it by implementing IHasProcess on the environment given to the workflow:
type AppEnv =
{ Processes: IProcess }
interface IHasProcess with member this.Process = this.Processes
06-services_04-processes__index.md_page.AppEnvProcesses: IProcessAxial.Process.IProcessInterprets process specifications as lazy Axial workflows for a concrete host platform.
Axial.Process.IHasProcessDeclares that an environment supplies the process service. Implement this on the environment record supplied at the host edge. A workflow that runs processes constrains its environment with 'env :> IHasProcess.
this: AppEnvProcess: AppEnv -> unit -> IProcessFlow owns scheduling, cancellation, timeout racing, and scope cleanup. The live interpreter translates interruption into process-tree termination and cleans up every stage that started, including partial startup.

