Dev & Engineering agent-harnesscoding-agentmcp-clientmcp-serversdkcliyaml-configlocal-models

Dexto

An open agent harness that turns LLMs into stateful, tool-wielding agents — YAML-defined, with a production coding agent, 50+ models, and MCP integration built in.

FollowAgents review · FARS-2.1
Not recommended
51/ 100 5-point scale 2.6 / 5
1 2 3 4 5 6
1Trust11 / 29 · 1.9/5

Evidence shows non-root container user, workspace handles rejecting paths that escape the root ('Workspace path escapes root'), and process capability only granted on explicit request — supporting a 2 for least_privilege. However, no direct evidence of user-confirmation gates, API-key protection/redaction, external-effect auditing, or rollback mechanisms; all deducted. pnpm overrides pin several historically vulnerable dependencies (tough-cookie, qs, jws), which is partial mitigation, not systematic supply-chain management. Author field is empty; attribution incomplete.

2Reliability9 / 14 · 3.2/5

Integration tests target real contracts (bundled artifact loading, path-escape rejection, capability negotiation), giving adequate self-consistency; CI uses --frozen-lockfile and pinned Node for dependency availability; tests assert concrete error messages. Main README and full docs were not among provided files, so doc–code consistency is only partially confirmed.

3Adaptability10 / 18 · 2.8/5

Serves CLI/SDK/server/Docker usage modes with explicit engines (Node>=20); capabilities are negotiated by intent (read/process) with clear boundaries. Trigger precision lacks prompt/tool-routing evidence — deducted.

4Convention10 / 18 · 2.8/5

Clean monorepo layout, consistent @dexto/* naming, changesets versioning, CI build, and a thorough Docker README with compose examples justify solid install notes. License file exists but repo metadata is NOASSERTION and package. declares Elastic-2.0 (source-available, not OSI open source) — a material adoption constraint, hence 1. No known-limitations section visible. Empty author field means maintenance responsibility is only indirectly inferable.

5Effectiveness7 / 13 · 2.7/5

Health endpoint, REST/SSE API, SDKs, and an agent-image bundler support a 2 for output usability; the image/skill/workspace abstractions add real value over raw MCP SDK usage. Cost-benefit evidence (token cost controls, approval overhead) is thin — deducted.

6Verifiability4 / 8 · 2.5/5

Tests map directly to claimed behaviors (path escape rejection, capability gating), making claims traceable; facts and inferences are separable. But only a subset of repo files was visible for this review, so cross-source corroboration (main README, docs/) is insufficient — deducted.

Evidence confidence: Low Reviewed Sep 09, 2026 Reviewed revision a910e0ef36f2
Before you use it
  • Licensed under Elastic License 2.0 (source-available, not open source); hosting it as a managed service for third parties is prohibited — assess compliance before enterprise integration.
  • Bundled tools include filesystem and process execution, and API keys are passed via plaintext .env; restrict volume mounts, egress, and rotate keys in deployment.
  • No systemic evidence of user-approval gates or external-effect auditing; add host-side sandboxing before production use.
  • Dependency security relies on point fixes via pnpm overrides; add lockfile auditing (e.g., pnpm audit / Dependabot).
Review evidence [1][2][3][4][5][6][7][8]
See the full review method →

What does this agent do, and when should you use it?

Dexto, built by Truffle AI, is an agent harness and toolkit: an orchestration layer that turns LLMs into reliable, stateful agents that take actions, remember context, and recover from errors. Written in TypeScript, it ships as a CLI, a Web UI, a REST/SSE server mode, and the @dexto/core SDK. It includes a production-ready coding agent usable immediately, capable of reading/writing/refactoring code, executing shell commands, and spawning sub-agents. Agents are defined in version-controlled YAML, letting you swap among 50+ models (OpenAI, Anthropic, Google, Groq, xAI, local Ollama/GGUF) without code changes. Dexto works as both an MCP client (30+ tool servers) and an MCP server that Claude Code or Cursor can consume. Note that it is licensed under Elastic License 2.0 rather than a standard open-source license.

Dexto reads a YAML agent config (llm, mcpServers, permissions, storage) and instantiates an agent from it. At runtime it calls the configured LLM provider's API, connects to Model Context Protocol servers via MCPManager (e.g., filesystem, Puppeteer browser), executes tool calls, and enforces human-in-the-loop approvals (manual or auto-approve modes with toolPolicies). Sessions and memories persist across restarts in Redis/PostgreSQL/SQLite or in-memory backends, supporting dexto -c to continue, dexto -r <id> to resume, and dexto search to query history. Agents can spawn sub-agents like explore-agent via the agent-spawner tool, with approvals forwarded to the parent for a unified flow. Run modes are Web UI (default), CLI (--mode cli), server (--mode server, exposing endpoints like POST /api/message over REST/SSE via startHonoApiServer), and MCP server (--mode mcp over stdio for Claude Code/Cursor). Programmatically, install @dexto/core and use the DextoAgent class: createSession(), generate(), stream(), switchLLM(), and multimodal inputs.

  1. A developer who wants to autonomously build, debug, and refactor an entire codebase can use the built-in coding agent (dexto --agent coding-agent) to read/write code, run tests, and execute shell commands
  2. A team embedding agents into their own product can use the @dexto/core SDK to programmatically create sessions, stream responses, and switch models, then expose REST/SSE via startHonoApiServer
  3. Claude Code or Cursor users can connect a Dexto agent as an MCP server (dexto --mode mcp --agent coding-agent --auto-approve --no-elicitation)
  4. Privacy-conscious users can run local models via Ollama or node-llama-cpp GGUF (auto GPU detection for Metal/CUDA/Vulkan), keeping data on-machine
  5. Multi-agent workflows like the triage-agent let a coordinator delegate subtasks to explore-agent and other registered sub-agents via agent-spawner
  6. Builders of companions or support bots can combine persistent sessions, memory, and Discord/Telegram integrations to keep context across restarts

What are this agent's strengths and limitations?

Pros
  • Configuration-driven: agents are fully defined in version-controlled YAML — swap models and tools without code changes, with automatic reload
  • Model-agnostic: built-in support for OpenAI, Anthropic, Google, Groq, xAI, Cohere, AWS Bedrock, Vertex AI, OpenRouter, LiteLLM, and local Ollama/GGUF, with mid-conversation model switching
  • Two-way MCP: acts as an MCP client connecting 30+ tool servers, and as an MCP server consumable by Claude Code/Cursor
  • Batteries included: persistent sessions, memory, multimodal input, observability, and human-in-the-loop approvals (manual/auto-approve/toolPolicies) are framework features
  • Multiple delivery modes: CLI, Web UI, REST/SSE server, SDK library, MCP server, plus Discord/Telegram example integrations
Limitations
  • Licensed under Elastic License 2.0 (GitHub shows NOASSERTION) — it restricts offering Dexto as a competing service and is not an OSI open-source license; review terms for commercial use
  • The project is marked Beta, so APIs and config formats may change, creating upgrade risk for production adoption
  • Collects anonymous telemetry by default (commands, timing, errors, system info, models used); you must set DEXTO_ANALYTICS_DISABLED=1 to opt out
  • MCP mode requires --auto-approve --no-elicitation (it runs non-interactively), weakening manual approval safety controls
  • Source builds require a pnpm/Node.js toolchain, and production-grade persistence needs you to configure Redis/PostgreSQL yourself

How do you install or deploy this agent?

Native installer (recommended): on macOS/Linux/WSL run curl -fsSL https://dexto.ai/install | bash; on Windows PowerShell run irm https://dexto.ai/install.ps1 | iex. Or build from source: git clone https://github.com/truffle-ai/dexto.git && cd dexto && pnpm install && pnpm install-cli (requires Node.js and pnpm). For SDK usage: npm install @dexto/core. The first run launches a setup wizard (also dexto setup) to configure LLM provider and API keys (e.g., OPENAI_API_KEY, ANTHROPIC_API_KEY) or local Ollama models.

How do you use this agent?

Run dexto to start the default Web UI with the first-run setup wizard; dexto --mode cli for the interactive terminal (type / for commands); dexto -p "create a landing page" for a one-shot task; dexto --agent coding-agent to launch the coding agent; dexto -m claude-sonnet-4-5-20250929 to switch models; dexto -c to continue the last conversation; dexto --mode server --port 3001 for REST/SSE; dexto --mode mcp to run as an MCP server. SDK example: const agent = new DextoAgent({llm: {provider: 'openai', model: 'gpt-5.2', apiKey: process.env.OPENAI_API_KEY}}); await agent.start(); const session = await agent.createSession(); const response = await agent.generate('What is TypeScript?', session.id);. Install prebuilt agents from the registry with dexto agents install <name>. Logs live in ~/.dexto/logs/; set DEXTO_LOG_LEVEL=debug for verbose output.

How does this agent compare with similar options?

The README positions Dexto as an 'operating system for AI agents' (LLM as CPU, context window as RAM, Dexto as OS), distinguishing it from raw LLM API calls by adding orchestration, state, tools, and recovery. Documentation explicitly shows exposing Dexto as an MCP server to Claude Code and Cursor, making it a complement to those tools rather than a replacement.

FAQ

What API keys does Dexto need?
It depends on the provider: OpenAI, Anthropic, Google, Groq, xAI, and Cohere require their own API keys (configured via dexto setup or referenced as $ENV_VAR in YAML); AWS Bedrock/Vertex AI need AWS/GCP credentials; local models via Ollama or node-llama-cpp need no cloud keys.
Does my code or data leave my machine?
With cloud LLM providers, prompts are sent to those APIs. For privacy-first setups, run local models via Ollama or node-llama-cpp GGUF so data stays local, with automatic GPU detection (Metal/CUDA/Vulkan). Also note anonymous telemetry is on by default — disable it with DEXTO_ANALYTICS_DISABLED=1.
How do I control what the agent can do?
Configure permissions in YAML: mode: manual requires per-tool approval, mode: auto-approve is trust mode, and toolPolicies.alwaysAllow whitelists specific tools (e.g., mcp--filesystem--read_file). Sub-agents forward approvals to the parent for one unified approval flow.
What is the license, and can I use it commercially?
It uses Elastic License 2.0: you can use and integrate it, but you may not offer it as a managed service to others. Read the LICENSE file in the repo for exact terms.
How do I integrate it into my own application?
Two ways: install @dexto/core and program against the DextoAgent class (createSession/generate/stream/switchLLM), or run dexto --mode server to start a Hono HTTP server with REST/SSE endpoints like POST /api/message and GET /api/sessions.

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents