Delivery Governance Platform

Govern the software development lifecycle

Farna Control orchestrates pipelines of AI agents and keeps an auditable record of every run — self-hosted, on your own infrastructure, with no phone-home.

FIG 00.1Product UI / dashboard
The Farna Control dashboard: run counts, eval pass rate and token spend charts, and a list of recent pipeline runs.
$ Farna Control runs show run_sample_0001
TimeNodeResultActor
09:14:02Zintake.githubPASSEDagent
09:14:40ZimplementPASSEDagent
09:17:11ZtestsPASSEDagent
09:17:12Zgate.approveWAITINGhuman

Sample data.

== 01 WHOLE SDLC ==SEC 01/07

Govern work across the lifecycle

Farna Control governs more than issue-to-PR automation. Model and improve the work around code, dependency and licensing changes, security remediation, release, documentation and knowledge, evidence, and the human decisions that connect them across your SDLC.

FIG 01.1Product UI / run detail
Farna Control run detail screen showing a run and the result of each node.
== 02 AGENTS ==SEC 02/07

Your agents, as nodes

Each agent is a node. Draw the pipeline as a graph and pick the model and agent behind every node. A diamond is a gate, where a person decides.

FIG 02.1Schematic / pipeline graph
Pipeline graph with a gate, horizontalIntake leads to Plan. Plan forks to Implement and Test, which run in parallel and join at Review. Review leads to a gate where a named role approves or sends back, then Merge.IntakePlanImplementTestReviewGateHOLDINGMergeAgentStepGateEnd
Pipeline graph with a gate, verticalIntake leads to Plan. Plan forks to Implement and Test, which run in parallel and join at Review. Review leads to a gate where a named role approves or sends back, then Merge.IntakePlanImplementTestReviewGateHOLDINGMergeAgentStepGateEnd

Execution contract

How existing agents connect in practice

You never rewrite your agents to use Modulo (or Farna Control). If an agent can run from a terminal or a CI job, Modulo can govern it.

Containerized or CLI agents

Point a pipeline node at your container image or command (Docker, Kubernetes pod, or E2B sandbox). Modulo provisions the environment, passes the task context, and reads back the result.

CI/CD dispatch

Modulo triggers your existing workflows (GitHub Actions, GitLab CI, CircleCI, or internal webhooks) via dispatch, passes parameters, and awaits completion.

== 03 GATE ==SEC 03/07

A person decides at the gate

At a gate, agents wait for a named role to approve or send back. The decision, the role, and the exact diff that was approved are written to the audit log, so you can answer "who allowed this" later.

FIG 03.1Schematic / progressive autonomy
  1. 1. HumanPeople make every handoff.
  2. 2. AssistedAgents draft, people execute.
  3. 3. GatedAgents execute, a named role approves.
  4. 4. AutonomousOnly where proven, with the gate and audit still in place.
FIG 03.2Schematic / gate
Gate: holding for human approvalA change waits at a barrier across the lane. Beyond the gate the lane is dashed. A named role, tech-lead, approves or sends back; nothing is written to the audit log until they do.ReviewMergetech-leadNamed roleApprove or send backAudit logDecision, role, diffGateHoldingHeld change
Gate: holding for human approvalA change waits at a barrier across the lane. Beyond the gate the lane is dashed. A named role, tech-lead, approves or sends back; nothing is written to the audit log until they do.ReviewMergetech-leadNamed roleApprove orsend backAudit logDecision, role, diffGateHoldingHeld change

WAITING

The gate is holding. Switch it to RUN to see the barrier lift once a person approves.

$ Farna Control runs show run_sample_0001
TimeNodeResultActor
09:17:11ZtestsPASSEDagent
09:17:12Zgate.approveWAITINGhuman
FIG 03.3Product UI / human review
The HITL review queue listing four pending human-in-the-loop gates, with columns for status, pipeline, node, assignee, and created.
== 04 AUDIT ==SEC 04/07

Every run is on record

FIG 04.1Product UI / audit log
The audit log showing events with actors and descriptive summaries, plus Verify Chain and export buttons.

What ran, what each step returned, and who approved are filed in your instance, in the system you already back up.

$ Farna Control audit tail
RunTimeVerdictApprover
run_sample_000109:21:47ZPASSEDtech-lead
run_sample_000210:03:15ZSENT BACKtech-lead

Audit row: diff approved in run_sample_0001, approver tech-lead

diff / run_sample_0001approved: tech-lead
@@ src/billing/retry.ts @@export function retryDelay(attempt: number) {return 1000 * attempt;return Math.min(30000, 1000 * 2 ** attempt);}
== 05 YOUR INFRASTRUCTURE ==SEC 05/07

Runs where your code lives

There is no hosted version for customers to sign up to. Your code, prompts, and run history stay on machines you control.

Self-hosted
You run it on your own servers or cloud account.
No telemetry by default
Telemetry is opt-in only. With default settings and no connectors configured, Farna Control makes zero external network calls.
Air-gap capable
Run it inside a network with no route to the internet.
Bring your own model backend
Point a node at Anthropic, OpenAI, or a local model.
Bring your own agents
Use the agents you already have as nodes in the graph.
FIG 05.1Schematic / infrastructure boundary
Your infrastructure boundaryA dashed perimeter labelled your infrastructure contains code, agents and run history. A line leaves the perimeter towards third parties but is stopped at the edge: no telemetry by default, opt-in only.Your infrastructureCodeYour reposAgentsYour promptsRun historyYour databaseNo telemetry by defaultOpt-in onlyThird parties
== 06 SCALE DELIVERY ==SEC 06/07

Giving you the control needed to scale delivery.

Most of the work in a pipeline is routine, and agents take that part. What is left is judgment, and it stays with people. Farna Control gives you the deterministic gates, audit trail and human review needed to let agents ship with confidence.

Figure pending: dated, from our own pipelines.

FIG 06.1Schematic / handled and left
Handled by agents, left for youTwo lanes joined by a gate. Handled by agents: triage and routing, routine code changes, test runs and first-pass review. Left for you: approving at a gate, unclear requirements, and decisions that need context.Handled by agentsTriage and routingRoutine code changesTest runs and first-pass reviewHandoffLeft for youApproving at a gateUnclear requirementsDecisions that need context
== FIT ==

Is Farna Control right for my team?

Farna Control is one more system to host and operate. It only earns that spot if your team needs it. Here is how to tell.

A good fit if you:

  • Need control over spend, agent permissions, and a human gate on what ships.
  • Want the handoffs you make by hand recorded and enforced before any go to an agent.
  • Want governance that survives swapping models, agent tools, or git hosts.
  • Prefer tools you host over giving a vendor your source and agent traffic.

Probably not a fit if you:

  • Face no audit or compliance need to prove what your agents did.
  • Would rather not host another platform.
  • Already get equivalent governance from GitHub Enterprise, GitLab Ultimate, or in-house tooling.

In that case, your git host's built-in protection rules are probably enough for now.

Read the full FAQ

== 07 INSTALL ==SEC 07/07

Install with Docker

You need Docker. Three commands bring up the full stack. When it is running, open it in your browser and wire your first pipeline.

Latest release v0.3.325. Farna Control is pre-1.0. The API can still change between releases.

tty0 / install3 commands
git clone https://github.com/farnalabs/modulo.gitcd Farna Controldocker compose up -d
tty1 / platforms

Latest release: v0.3.325 (2026-11-05) · release page on GitHub

== END ==

Govern the agents you run

Self-hosted and source-available. Clone it, wire it around one pipeline, and add gates as you go.