# Dify vs SOAT: Feature Comparison

> Dify and SOAT compared on 15 agent capabilities, 8 vs 12 native, each rating linked to its source.

# SOAT vs Dify

Dify is agent infrastructure (Dify Open Source License (Apache-2.0 with added conditions), self-hosted or managed). SOAT is agent infrastructure (Apache-2.0, self-hosted). Of the 15 capabilities the [benchmark](/benchmark) tracks, Dify covers 8 natively and SOAT 12.

## At a glance

| | Dify | SOAT |
| --- | --- | --- |
| Type | agent infrastructure | agent infrastructure |
| License | Dify Open Source License (Apache-2.0 with added conditions) | Apache-2.0 |
| Deployment | self-hosted or managed | self-hosted |
| Native capabilities | 8 of 15 | 12 of 15 |
| Last verified | 2026-08-14 | 2026-08-14 |

## Where each one leads

- **Dify** is native where SOAT is not: code execution.
- **SOAT** is native where Dify is not: identity & governance, evaluation, multi-tenancy, declarative deployment, versioning & rollout.

## What Dify is

Open-source LLM application platform providing a visual workflow canvas, RAG knowledge bases, agent nodes, and a plugin marketplace, served by a self-hostable Docker Compose stack with PostgreSQL, Redis, Celery workers, a pluggable vector database, and a sandbox service. Applications publish as web apps, REST APIs, MCP servers, or reusable tools. [Dify documentation](https://dify.ai).

## Capability by capability

### Agent runtime

_Agent loop, sessions, and generation lifecycle._

- **Dify: Native.** Runs chat, agent, and workflow applications server-side with function-calling and ReAct agent strategies, persisting conversations and run records. ([source](https://github.com/langgenius/dify))
- **SOAT: Native.** Agents, sessions, chats, and generations with full lifecycle tracking. ([source](https://soat.ttoss.dev/docs/modules/agents))

### Orchestration

_Multi-step pipelines, workflows, and triggers._

- **Dify: Native.** Visual workflow canvas with multi-node pipelines plus schedule, webhook, and plugin trigger nodes. ([source](https://docs.dify.ai/en/cloud/use-dify/nodes/trigger/overview))
- **SOAT: Native.** DAG orchestrations, workflow state machines, durable tasks, and triggers (manual, webhook, schedule). ([source](https://soat.ttoss.dev/docs/modules/orchestrations))

### Knowledge & memory

_Documents, embeddings, semantic search, and recall._

- **Dify: Native.** Built-in RAG pipeline covering document ingestion, embedding, and retrieval, backed by a configurable vector database such as Weaviate, Qdrant, Milvus, or pgvector. ([source](https://docs.dify.ai/en/self-host/deploy/configuration/environments))
- **SOAT: Native.** Documents with per-chunk embeddings, named memories, unified semantic search, and ingestion rules for PDFs, images, and audio. ([source](https://soat.ttoss.dev/docs/modules/knowledge))

### Tools & integration

_Tool calling, MCP, providers, and webhooks._

- **Dify: Native.** Ships 50+ built-in tools with hundreds of model providers, MCP server publishing, HTTP request nodes, and webhook triggers, extensible through the plugin marketplace. ([source](https://github.com/langgenius/dify))
- **SOAT: Native.** HTTP, MCP, client, and agent-to-agent tools; model routes with failover; webhooks; any LLM provider. ([source](https://soat.ttoss.dev/docs/modules/tools))

### Identity & governance

_IAM, guardrails, approvals, quotas, and audit._

- **Dify: Partial.** Workspaces have Owner/Admin/Editor/Normal roles with per-knowledge-base visibility, but audit log and enterprise governance are not in the Community Edition. ([source](https://docs.dify.ai/en/guides/management/team-members-management))
- **SOAT: Native.** AWS-inspired IAM, actors, scoped API keys, guardrails, human approvals, quotas, and an append-only audit log. ([source](https://soat.ttoss.dev/docs/modules/iam))

### Observability

_Traces, activity, usage, and failure queues._

- **Dify: Native.** Per-run logs with node-by-node traces, token totals, and status, plus integrations with external tools such as Langfuse, Opik, and Arize Phoenix. ([source](https://docs.dify.ai/en/cloud/use-dify/monitor/logs))
- **SOAT: Native.** Traces of every tool call and model response, activity feed, usage/cost tracking, and an exceptions queue. ([source](https://soat.ttoss.dev/docs/modules/traces))

### Data & secrets

_File storage and encrypted secrets._

- **Dify: Native.** Managed file storage via OpenDAL, S3, Azure Blob, or GCS, with a server key encrypting session tokens and stored provider credentials. ([source](https://docs.dify.ai/en/self-host/deploy/configuration/environments))
- **SOAT: Native.** File storage over local/S3/GCS backends and encrypted secrets storage. ([source](https://soat.ttoss.dev/docs/modules/files))

### Evaluation

_Datasets, scorers, and eval-gated improvement._

- **Dify: Absent.** No dataset, scorer, or eval-run subsystem; quality tooling is limited to logs and manual annotation.
- **SOAT: Native.** Datasets, scorers, and scored runs; eval-gated promotion of agent versions. ([source](https://soat.ttoss.dev/docs/modules/evaluations))

### Channels

_Built-in gateways to messaging platforms and UIs._

- **Dify: Partial.** Applications publish as a hosted web app chat UI, while Slack, Telegram, and Discord bots require marketplace or custom plugins rather than a built-in gateway. ([source](https://docs.dify.ai/en/cloud/use-dify/nodes/start))
- **SOAT: Absent.** Surfaces are REST, MCP, CLI, and SDK — no built-in gateways to messaging platforms like Slack, WhatsApp, or Telegram.

### Code execution

_Sandboxed code or terminal runtimes for agents._

- **Dify: Native.** The Code node runs Python or JavaScript in the DifySandbox service, an isolated environment with a syscall whitelist blocking file, network, and shell access. ([source](https://docs.dify.ai/en/use-dify/nodes/code))
- **SOAT: Absent.** Tool types are HTTP, MCP, client, and agent-to-agent — no built-in sandboxed code or terminal runtime.

### Human-in-the-loop

_Pausing a run for human approval, then resuming it._

- **Dify: Native.** The Human Input node pauses a workflow and emits an event carrying a form token, delivers a form via web app or email, routes execution by the decision taken, and follows a timeout branch. ([source](https://docs.dify.ai/en/use-dify/nodes/human-input))
- **SOAT: Native.** Approvals are a first-class human-decision queue with frozen evidence, and guardrails classify each tool call so risky actions pause for a decision. ([source](https://soat.ttoss.dev/docs/modules/approvals))

### Multi-tenancy

_Projects or workspaces scoping resources and permissions._

- **Dify: Partial.** Workspaces isolate apps, knowledge bases, members, and model configuration under four roles, but the self-hosted Community Edition gets one workspace and multiple workspaces require Enterprise. ([source](https://docs.dify.ai/en/self-host/use-dify/workspace/readme))
- **SOAT: Native.** Projects are multi-tenant namespaces scoping every resource, with IAM policies and quotas enforced per project. ([source](https://soat.ttoss.dev/docs/modules/projects))

### Declarative deployment

_Templates that provision agent resources as one stack._

- **Dify: Partial.** Dify DSL exports one app's configuration to YAML and recreates it on import with a compatibility check, but there is no dependency graph, plan/apply, or multi-resource provisioning. ([source](https://docs.dify.ai/en/guides/management/app-management))
- **SOAT: Native.** Formations provision providers, memories, tools, agents, orchestrations, and webhooks from one template, resolving refs into a dependency graph with tracked operations. ([source](https://soat.ttoss.dev/docs/modules/formations))

### Versioning & rollout

_Agent versions, canary rollout, gated promotion._

- **Dify: Partial.** A version control panel publishes drafts as named versions and restores previous ones, but offers no aliases, canary rollout, traffic splitting, or eval-gated promotion. ([source](https://docs.dify.ai/en/use-dify/build/version-control))
- **SOAT: Native.** Every config change is archived as an append-only agent version, with canary rollout to a slice of traffic and eval-gated promotion. ([source](https://soat.ttoss.dev/docs/tutorials/agent-versioning-and-canary-rollout))

### Skill learning

_Agents authoring reusable skills from their own experience._

- **Dify: Absent.** Apps, workflows, tools, and knowledge bases are authored by humans in the studio; no mechanism has the agent create or refine reusable skills from its own runs.
- **SOAT: Absent.** Memories and knowledge store retrievable context, but agents do not author or refine reusable skills from their own experience.

## How this is rated

Each rating comes from the public documentation linked beside it: **Native** is built in, **Via plugin** needs an add-on, **Partial** covers part of the capability, **Absent** is not offered. Every solution side by side is on the [benchmark](/benchmark). A rating that is out of date is a bug: [open an issue](https://github.com/ttoss/soat/issues).
