Examples
These patterns show how a team maps a workflow it already runs onto Farna Control, from a single autonomous pull request to a multi-stage release gate. Each one pairs the adoption path with a graph you can adapt in the Pipeline Editor. Prompts and provider routing live on the Agents the nodes reference; the graph only selects them.
1. Autonomous pull request (PR) pipeline
A team uses Claude via bring-your-own-key (BYOK) with pre-built agents from the Farna Control community library to automate the pull request lifecycle, from diff analysis through to draft description.
Flow: PR opened → fetch diff → classify impact → (low) draft description → post, or (high) human review → post
Agents: classify-impact returns low or high; draft-description writes the PR description from the diff.
Pipeline config
{
"name": "pr-automation",
"nodes": [
{
"id": "11111111-1111-4111-8111-111111111111",
"node_type": "connector",
"position": { "x": 80, "y": 200 },
"connector_binding": {
"type": "github",
"instance_id": "22222222-2222-4222-8222-222222222222",
"operation": "query",
"resource": "pr_diff",
"filters": { "repo": "my-org/my-repo", "pull_number": 42 }
}
},
{
"id": "33333333-3333-4333-8333-333333333333",
"node_type": "agent",
"position": { "x": 380, "y": 120 },
"agent_id": "44444444-4444-4444-8444-444444444444"
},
{
"id": "55555555-5555-4555-8555-555555555555",
"node_type": "agent",
"position": { "x": 680, "y": 40 },
"agent_id": "66666666-6666-4666-8666-666666666666"
},
{
"id": "77777777-7777-4777-8777-777777777777",
"node_type": "connector",
"position": { "x": 980, "y": 200 },
"connector_binding": {
"type": "github",
"instance_id": "22222222-2222-4222-8222-222222222222",
"operation": "write",
"resource": "pr_comment"
}
}
],
"edges": [
{
"source_node_id": "11111111-1111-4111-8111-111111111111",
"target_node_id": "33333333-3333-4333-8333-333333333333",
"edge_type": "normal"
},
{
"source_node_id": "33333333-3333-4333-8333-333333333333",
"target_node_id": "55555555-5555-4555-8555-555555555555",
"edge_type": "conditional",
"condition_expression": "impact == 'low'"
},
{
"source_node_id": "55555555-5555-4555-8555-555555555555",
"target_node_id": "77777777-7777-4777-8777-777777777777",
"edge_type": "normal"
},
{
"source_node_id": "33333333-3333-4333-8333-333333333333",
"target_node_id": "77777777-7777-4777-8777-777777777777",
"edge_type": "conditional",
"condition_expression": "impact == 'high'",
"hitl_review_config": {
"label": "Human review",
"description": "The change was classified high impact, so a reviewer must approve the comment before it is posted.",
"claim_expiry_minutes": 15,
"human_only": true
}
}
]
}
What happens:
- Low-impact PRs auto-post a draft description and finish
- High-impact changes stop at a human review gate before the comment is posted
- Every action is logged in an append-only audit log
- The agents use Claude via your own API key
2. Gradual Software Development Lifecycle (SDLC) migration
An existing manual SDLC team adopts Farna Control one section at a time.
Phase 1: Issue triage. Connect Notion + GitHub. An agent reads new issues, classifies them as bug/feature/question, assigns labels, and drafts an initial comment. A webhook trigger on the pipeline starts each run; triggers are configured on the pipeline, not as graph nodes.
Pipeline config
{
"name": "issue-triage",
"nodes": [
{
"id": "11111111-1111-4111-8111-111111111111",
"node_type": "agent",
"position": { "x": 80, "y": 200 },
"agent_id": "22222222-2222-4222-8222-222222222222"
},
{
"id": "33333333-3333-4333-8333-333333333333",
"node_type": "connector",
"position": { "x": 380, "y": 200 },
"connector_binding": {
"type": "notion",
"instance_id": "44444444-4444-4444-8444-444444444444",
"operation": "write",
"resource": "page_update"
}
},
{
"id": "55555555-5555-4555-8555-555555555555",
"node_type": "agent",
"position": { "x": 680, "y": 200 },
"agent_id": "66666666-6666-4666-8666-666666666666"
},
{
"id": "77777777-7777-4777-8777-777777777777",
"node_type": "connector",
"position": { "x": 980, "y": 200 },
"connector_binding": {
"type": "notion",
"instance_id": "44444444-4444-4444-8444-444444444444",
"operation": "write",
"resource": "page_update"
}
}
],
"edges": [
{
"source_node_id": "11111111-1111-4111-8111-111111111111",
"target_node_id": "33333333-3333-4333-8333-333333333333",
"edge_type": "normal"
},
{
"source_node_id": "33333333-3333-4333-8333-333333333333",
"target_node_id": "55555555-5555-4555-8555-555555555555",
"edge_type": "normal"
},
{
"source_node_id": "55555555-5555-4555-8555-555555555555",
"target_node_id": "77777777-7777-4777-8777-777777777777",
"edge_type": "normal"
}
]
}
Phase 2: Add PR review. Insert a review agent between “PR opened” and “human reviews” events. The agent does a first pass on style, test coverage, and security-sensitive patterns before the human reviews. A HITL gate on the approval edge keeps the human in control of production writes.
Phase 3: Full pipeline. Add release note generation, changelog updates, deployment tracking, and postmortem drafts. Human-in-the-loop gates guard production writes only.
3. Self-serve onboarding
A platform engineering team publishes a library of pre-built pipeline blueprints. Teams across the organization copy, adapt, and connect their own tools.
Available blueprints:
Release notes (2 nodes)
Pipeline config
{
"name": "release-notes",
"nodes": [
{
"id": "11111111-1111-4111-8111-111111111111",
"node_type": "agent",
"position": { "x": 80, "y": 200 },
"agent_id": "22222222-2222-4222-8222-222222222222"
},
{
"id": "33333333-3333-4333-8333-333333333333",
"node_type": "connector",
"position": { "x": 380, "y": 200 },
"connector_binding": {
"type": "notion",
"instance_id": "44444444-4444-4444-8444-444444444444",
"operation": "write",
"resource": "page"
}
}
],
"edges": [
{
"source_node_id": "11111111-1111-4111-8111-111111111111",
"target_node_id": "33333333-3333-4333-8333-333333333333",
"edge_type": "normal"
}
]
}
The summarize agent groups merged PRs by type (feature/fix/docs) and writes release notes to a Notion page. A webhook trigger on the pipeline starts the run.
Security review: human-in-the-loop (HITL) gate
Pipeline config
{
"name": "security-review",
"nodes": [
{
"id": "11111111-1111-4111-8111-111111111111",
"node_type": "connector",
"position": { "x": 80, "y": 200 },
"connector_binding": {
"type": "github",
"instance_id": "22222222-2222-4222-8222-222222222222",
"operation": "query",
"resource": "pr_diff",
"filters": { "repo": "my-org/my-repo", "pull_number": 42 }
}
},
{
"id": "33333333-3333-4333-8333-333333333333",
"node_type": "agent",
"position": { "x": 380, "y": 200 },
"agent_id": "44444444-4444-4444-8444-444444444444"
},
{
"id": "55555555-5555-4555-8555-555555555555",
"node_type": "connector",
"position": { "x": 680, "y": 200 },
"connector_binding": {
"type": "notion",
"instance_id": "66666666-6666-4666-8666-666666666666",
"operation": "write",
"resource": "page"
}
}
],
"edges": [
{
"source_node_id": "11111111-1111-4111-8111-111111111111",
"target_node_id": "33333333-3333-4333-8333-333333333333",
"edge_type": "normal"
},
{
"source_node_id": "33333333-3333-4333-8333-333333333333",
"target_node_id": "55555555-5555-4555-8555-555555555555",
"edge_type": "normal",
"hitl_review_config": {
"label": "Security sign-off",
"description": "The scan flagged a security-sensitive change, so a reviewer must approve writing the findings to Notion.",
"claim_expiry_minutes": 15,
"human_only": true
}
}
]
}
The scan agent flags credential leaks, SQL injection, auth bypass, and dependency changes. Each blueprint documents its expected connectors and model backends. Teams configure their own credentials in the Connector Hub and deploy with one click.
4. Compliance audit trail
An organization with audit obligations needs auditable AI agent activity. Every Farna Control run produces a versioned snapshot: input, all agent outputs, human decisions, and final artifact.
Pipeline config
{
"name": "compliance-review-pipeline",
"nodes": [
{
"id": "11111111-1111-4111-8111-111111111111",
"node_type": "connector",
"position": { "x": 80, "y": 200 },
"connector_binding": {
"type": "filesystem",
"instance_id": "22222222-2222-4222-8222-222222222222",
"operation": "query",
"resource": "file",
"filters": { "path": "incoming/artifact.json" }
}
},
{
"id": "33333333-3333-4333-8333-333333333333",
"node_type": "agent",
"position": { "x": 380, "y": 200 },
"agent_id": "44444444-4444-4444-8444-444444444444"
},
{
"id": "55555555-5555-4555-8555-555555555555",
"node_type": "connector",
"position": { "x": 680, "y": 200 },
"connector_binding": {
"type": "filesystem",
"instance_id": "22222222-2222-4222-8222-222222222222",
"operation": "write",
"resource": "file"
}
}
],
"edges": [
{
"source_node_id": "11111111-1111-4111-8111-111111111111",
"target_node_id": "33333333-3333-4333-8333-333333333333",
"edge_type": "normal"
},
{
"source_node_id": "33333333-3333-4333-8333-333333333333",
"target_node_id": "55555555-5555-4555-8555-555555555555",
"edge_type": "normal",
"hitl_review_config": {
"label": "Compliance sign-off",
"description": "A compliance reviewer must approve the result before the audit record is written.",
"claim_expiry_minutes": 15,
"human_only": true
}
}
]
}
Why this matters:
- Export any run as JSON for compliance reviews
- Replay a run with identical inputs to verify agent behavior over time
- Each agent action is timestamped and attributed to a specific prompt version
- HITL decisions (approve/reject) are recorded with reviewer identity and timestamp
Related
- Getting Started: install Farna Control and run your first pipeline
- Pipelines: the execution graph these examples use
- Connectors: the connector types these blueprints call
- Model Backends: the providers these blueprints route to
- Human-in-the-Loop: review gates for production writes
- Library: publish and reuse blueprints as shareable primitives