Architecture
Farna Control uses a core pipeline engine that connects agents, connectors, and model backends into governed pipelines.
Farna Control is a self-hosted Delivery Governance Platform for the software development lifecycle, and the control plane for the software factory you own and run on your own infrastructure. Lifecycle Maps describe the whole governed lifecycle; the pipeline engine executes the stages ready for automation. It applies graph engineering: it compiles a StateGraph of agent nodes, where each node is an agent, connector, manual step, human review gate, or control node and each edge is a typed, governed transition. Graph engineering is the mechanism inside the platform, not the product category. Farna Control makes the work executable, observable, and auditable.
Layers
| Layer | Role |
|---|---|
| Pipeline Engine | Compiles and executes a StateGraph of agent nodes |
| Connector Hub | Manages tool integrations (GitHub, Notion, filesystem) |
| Model Backend Hub | Routes large language model (LLM) calls across providers (Anthropic, OpenAI, local) |
| Schema Registry | Versioned typed schemas for artifact validation |
| Audit Logger | Append-only record of every action and decision |
| Human-in-the-Loop (HITL) Manager | Claim, review, and gate enforcement |
Data Flow
- A trigger (manual, webhook, cron, polling, agent signal, ongoing, or Slack app-mention) starts a pipeline run
- The engine compiles a StateGraph from the pipeline definition
- Nodes execute as their dependencies complete. Agents call models via backends and tools via connectors.
- HITL checkpoints pause execution until a human reviews the artifact
- The completed artifact is routed to its destination: a pull request (PR), a ticket, a release record, or a file
Execution model
When a run starts, the engine compiles the pipeline definition into a LangGraph state graph and executes nodes as their upstream dependencies complete. The state is checkpointed to PostgreSQL after every node through ModuloPostgresSaver, so a run can resume from its last checkpoint after a restart. Checkpoints are tenant-isolated by organization_id and encrypted at rest with Fernet.
Edges are typed. normal edges wait for upstream completion, conditional edges evaluate a JMESPath expression against pipeline state, and reject and loop edges handle branching and retries. A human review gate can sit on a node or on an edge transition.
The run record
Every run produces an immutable snapshot containing the input payload, intermediate node outputs, timing, gate results, human decisions, and final artifact. Snapshots can be replayed to debug agent behavior, compared side by side to measure the impact of prompt or model changes, or exported as JSON. This is the run-level record of what Farna Control captured and what an external runtime reported; it is not a claim that Farna Control observed every internal step inside that runtime.
Two records sit alongside the snapshot:
- The audit log is an organization-scoped, SHA-256 linked and append-only record of significant governance events such as run start, agent dispatch, human decision, gate outcome, sign-in, permission change, and configuration change. It is written on every tier. The links make tampering detectable, not impossible: someone with control of the database and its backups can still alter stored data. The audit viewer, chain verification, paginated and full-chain exports, signed evidence packs for offline verification, and the compliance evidence index are part of the Team tier.
- Provenance is tracked for every fact. A model or agent’s output is recorded as
reported, never as something Farna Controlobserved, preserving the distinction between what the platform measured and what an external runtime claimed.
These are separate capabilities. Evidence capture happens during execution. Audit viewing reads the captured governance events. Chain verification checks the links. Audit export moves the event record out as JSON, JSONL, or CSV. A signed evidence pack packages a bounded chain and signing metadata for a third party to verify offline. The compliance evidence index inventories Farna Control-produced artefact types for an audit period; it does not create a compliance attestation, include customer-owned evidence produced outside Farna Control, or issue a single compliant/not-compliant verdict.
Credential security boundary
Connector credentials and model backend keys are encrypted at rest with Fernet and decrypted only in-process at run start. They are never written to LangGraph state, checkpoint blobs, logs, or OpenTelemetry spans. See Secrets for the never-logged policy and external secrets backends.
Related
- Pipelines: the execution graph the engine compiles
- Lifecycle Maps: the delivery-wide model that sits above the execution graph
- Agents: the atomic units that make up a pipeline
- Connectors: tool integrations between pipelines and your tools
- Model Backends: routing LLM calls across providers
- Human-in-the-Loop: the gate enforcement layer in the table above
- Database Abstraction: the storage layer
- Audit trail for AI-generated code: append-only, hash-chained audit logging use case
- Govern coding agents across teams: governance tiers and cross-team agent control