<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Function Runner on Porch Documentation</title><link>/docs/5_architecture_and_components/function-runner/</link><description>Recent content in Function Runner on Porch Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="/docs/5_architecture_and_components/function-runner/index.xml" rel="self" type="application/rss+xml"/><item><title>Function Runner Design</title><link>/docs/5_architecture_and_components/function-runner/design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/5_architecture_and_components/function-runner/design/</guid><description>&lt;h2 id="architectural-context">Architectural Context&lt;/h2>&lt;p>The Function Runner is &lt;strong>one of several function execution mechanisms&lt;/strong> in Porch. The Task Handler uses a &lt;strong>Function Runtime&lt;/strong> interface that can be implemented by:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Task Handler (in Porch)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Function Runtime
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ┌─────┴─────┬──────────┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓ ↓ ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Builtin gRPC Multi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Runtime Runtime Runtime
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓ ↓ ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">In-Process Function Chains
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Go Code Runner Runtimes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> (External)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ┌─────────┴─────────┬──────────┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓ ↓ ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Pod Executable Multi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Evaluator Evaluator Evaluator
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓ ↓ ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Function Cached Fallback
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Pods Binaries Chain
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Function Runtime implementations:&lt;/strong>&lt;/p></description></item><item><title>Function Runner Interactions</title><link>/docs/5_architecture_and_components/function-runner/interactions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/5_architecture_and_components/function-runner/interactions/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>&lt;p>The Function Runner is a &lt;strong>separate gRPC service&lt;/strong> that interacts with multiple systems: the Task Handler (via gRPC), Kubernetes API (for pod management), container registries (for image metadata), and wrapper servers (for function execution). It operates independently from the Porch server, enabling isolated function execution.&lt;/p>
&lt;h3 id="high-level-architecture">High-Level Architecture&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">┌─────────────────────────────────────────────────────────┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ Function Runner Service │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ┌──────────────┐ ┌──────────────┐ ┌──────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ Task Handler │ ───&amp;gt; │ gRPC │ ───&amp;gt; │ Eval │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ (in Porch) │ │ Server │ │uators│ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └──────────────┘ └──────────────┘ └──────┘ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ↑ │ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ↓ ↓ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ┌──────────────┐ ┌──────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └──────────────│ Kubernetes │ │Image │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ API │ │Cache │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └──────────────┘ └──────┘ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ↓ ↓ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ┌──────────────┐ ┌─────────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ Function Pods│ │Registry │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ + Services │ │ APIs │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └──────────────┘ └─────────┘ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└─────────────────────────────────────────────────────────┘
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="task-handler-integration">Task Handler Integration&lt;/h2>&lt;p>The Function Runner integrates with the Task Handler through the gRPC Runtime:&lt;/p></description></item></channel></rss>