Skip to main content
Attesta provides ready-made components for four popular no-code AI platforms. Each component acts as an approval gate that evaluates AI agent actions for risk before execution, using the same risk scoring, challenge system, and audit trail as the code-based integrations.

Platform Comparison

PlatformComponentTypeLanguagePackage
n8nAttesta ApprovalWorkflow nodeTypeScriptn8n-nodes-attesta
FlowiseAttesta ApprovalTool (DynamicTool)TypeScriptflowise-attesta
LangflowAttesta ApprovalPipeline componentPythonlangflow-attesta
DifyAttesta ApprovalPlugin toolPythondify-attesta

Feature Matrix

Featuren8nFlowiseLangflowDify
Auto risk scoringYesYesYesYes
Manual risk overrideYesYesYesYes
Risk hints (JSON)YesYesYes (advanced)Via credentials
Denial handlingError or PassthroughJSON status stringData objectJSON message (generator)
Credentials supportattestaApi credentialProvider credential (risk_threshold)
Audit trailYesYesYesYes
Batch processingYes (per item)Single invocationSingle invocationSingle invocation
LLM-driven invocationNo (data pipeline)Yes (agent calls tool)No (component output)Yes (LLM form parameters)

How No-Code Differs from Code Integrations

The code-based integrations wrap individual tool functions or intercept framework-specific hook points (e.g., LangChain tool func, OpenAI approval_handler). No-code integrations take a different approach:
  • Visual placement — You drag the Attesta component onto a canvas and connect it to other nodes. No Python or TypeScript required.
  • Data-driven context — Instead of wrapping a function, the component receives input data (JSON items, tool arguments, or form parameters) and builds an ActionContext from that data plus the configured function name.
  • Platform-native output — Each component returns results in the format native to its platform: n8n adds _attesta metadata to output items, Flowise returns a JSON string the agent can parse, Langflow emits a Data object, and Dify yields a ToolInvokeMessage.
Under the hood, every no-code component calls the same Attesta.evaluate() pipeline described in How It Works. The risk scoring, challenge selection, verification, and audit logging are identical.
All no-code components use the @kyberon/attesta TypeScript package or the attesta Python package under the hood. They provide the same risk scoring, challenge types, and audit capabilities as the code-based integrations.

How It Works

Every no-code component follows the same four-step pattern:
1

Configure the Gate

Set the Function Name (the action being gated), the Risk Level (auto or manual override), and any Risk Hints (JSON key-value pairs that influence scoring).
2

Connect to Your Workflow

Place the Attesta component before the action node in your workflow. Data flows through the gate before reaching the action.
3

Evaluate at Runtime

When the workflow runs, the gate component creates an ActionContext, evaluates it through the Attesta pipeline (risk scoring, challenge selection, verification), and either passes data through (approved) or stops the flow (denied).
4

Audit

Every evaluation is recorded in the Attesta audit trail with the verdict, risk score, and metadata including the source platform (n8n, flowise, langflow, or dify).

Common Configuration

Every component accepts these core parameters (the exact input names vary slightly by platform):
ParameterTypeDescription
Function NameStringName of the action being gated (e.g., send_email, delete_record). This is the primary input to the risk scorer.
Risk LevelSelectOverride the automatic risk score. Options: Auto, Low, Medium, High, Critical.
Risk Hints / Action ArgumentsJSONAdditional context for the risk scorer (e.g., {"destructive": true, "pii": true}).
Use descriptive function names that include a verb. The risk scorer classifies verbs as destructive (delete, remove, drop), mutating (send, update, deploy), or read-only (get, list, fetch). A name like delete_user_account will score significantly higher than process_data.

Getting Started

n8n

Workflow node with error/passthrough denial modes and batch processing

Flowise

LangChain DynamicTool component for agent chatflows

Langflow

Python component with structured Data output

Dify

Plugin with provider credentials and LLM-driven parameters