dexto 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +270 -160
  2. package/agents/agent-registry.json +16 -2
  3. package/agents/agent-template.yml +6 -12
  4. package/agents/default-agent.yml +6 -16
  5. package/agents/nano-banana-agent/README.md +200 -0
  6. package/agents/nano-banana-agent/nano-banana-agent.yml +68 -0
  7. package/agents/podcast-agent/README.md +168 -0
  8. package/agents/podcast-agent/podcast-agent.yml +167 -0
  9. package/agents/triage-demo/billing-agent.yml +2 -2
  10. package/agents/triage-demo/product-info-agent.yml +2 -3
  11. package/agents/triage-demo/technical-support-agent.yml +2 -3
  12. package/dist/src/app/{chunk-OIBH674O.js → chunk-BKF5BGLX.js} +318 -35
  13. package/dist/src/app/{chunk-FVWAYUL4.js → chunk-N7FUUBGT.js} +1 -1
  14. package/dist/src/app/{chunk-UG5P4DIL.js → chunk-OONTQZRM.js} +2 -2
  15. package/dist/src/app/{cli-confirmation-handler-7BZ6BMSE.js → cli-confirmation-handler-7235V7GL.js} +1 -1
  16. package/dist/src/app/{errors-EYGUMLKB.js → errors-YCS63OK6.js} +1 -1
  17. package/dist/src/app/index.js +33 -13
  18. package/dist/src/app/{loader-LJJQ4NDP.js → loader-PVRMNHST.js} +2 -2
  19. package/dist/src/app/{path-O5L5AW7V.js → path-DJ5C7EUS.js} +1 -1
  20. package/dist/src/app/{registry-HIVAEL5E.js → registry-KOOLQYP4.js} +3 -3
  21. package/dist/src/app/{sqlite-backend-FK7U4D6Z.js → sqlite-backend-NCFS7FN6.js} +1 -1
  22. package/dist/src/app/webui/.next/standalone/.next/static/chunks/122-4d4c8aa883d114a2.js +1 -0
  23. package/dist/src/app/webui/.next/standalone/.next/static/chunks/216-f5dbf2145a48ae92.js +1 -0
  24. package/dist/src/app/webui/.next/standalone/.next/static/chunks/43-4f3d01c7feaf132f.js +1 -0
  25. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/{layout-43f98b6d34953fcf.js → layout-36c240720861a312.js} +1 -1
  26. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/page-ca08c66042cb54c8.js +1 -0
  27. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/playground/{page-c51bb3cc58225dc3.js → page-07a79d22b26d37f4.js} +1 -1
  28. package/dist/src/app/webui/.next/standalone/.next/static/css/c1d26dc78adbeb53.css +3 -0
  29. package/dist/src/app/webui/.next/standalone/package.json +4 -1
  30. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/BUILD_ID +1 -1
  31. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/app-build-manifest.json +9 -9
  32. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/build-manifest.json +2 -2
  33. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/prerender-manifest.json +3 -3
  34. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/required-server-files.json +1 -1
  35. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  36. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/app/page.js +3 -4
  37. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/app/page.js.nft.json +1 -1
  38. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/app/page_client-reference-manifest.js +1 -1
  39. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/app/playground/page.js +2 -2
  40. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/app/playground/page.js.nft.json +1 -1
  41. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/app/playground/page_client-reference-manifest.js +1 -1
  42. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/chunks/213.js +1 -1
  43. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/chunks/489.js +1 -0
  44. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/pages/500.html +1 -1
  45. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/server-reference-manifest.json +1 -1
  46. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/122-4d4c8aa883d114a2.js +1 -0
  47. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/216-f5dbf2145a48ae92.js +1 -0
  48. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/255-e3bf15caf1f1e0f9.js +1 -0
  49. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/43-4f3d01c7feaf132f.js +1 -0
  50. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/4bd1b696-c023c6e3521b1417.js +1 -0
  51. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/537-e9370c6b1caa3c4d.js +1 -0
  52. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/app/_not-found/page-c1f5892714709ca9.js +1 -0
  53. package/dist/src/app/webui/.next/{static/chunks/app/layout-43f98b6d34953fcf.js → standalone/src/app/webui/.next/static/chunks/app/layout-36c240720861a312.js} +1 -1
  54. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/app/page-ca08c66042cb54c8.js +1 -0
  55. package/dist/src/app/webui/.next/{static/chunks/app/playground/page-c51bb3cc58225dc3.js → standalone/src/app/webui/.next/static/chunks/app/playground/page-07a79d22b26d37f4.js} +1 -1
  56. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/framework-b1e5f14688f9ffe6.js +1 -0
  57. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/main-app-d6c11d319efbfbca.js +1 -0
  58. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/main-b51c5c951595aa0b.js +1 -0
  59. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/pages/_app-7d307437aca18ad4.js +1 -0
  60. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/pages/_error-cb2a52f75f2162e2.js +1 -0
  61. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  62. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/chunks/webpack-e19b73beaa89095d.js +1 -0
  63. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/css/c1d26dc78adbeb53.css +3 -0
  64. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/media/569ce4b8f30dc480-s.p.woff2 +0 -0
  65. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/media/747892c23ea88013-s.woff2 +0 -0
  66. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  67. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
  68. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  69. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
  70. package/dist/src/app/webui/.next/standalone/src/app/webui/public/favicon2.ico +0 -0
  71. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/anthropic.svg +1 -0
  72. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/claude-color.svg +1 -0
  73. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/cohere-color.svg +1 -0
  74. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/dexto_logo.svg +1 -0
  75. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/dexto_logo_light.svg +18 -0
  76. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/dexto_logo_no_text.png +0 -0
  77. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/gemini-color.svg +1 -0
  78. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/grok.svg +1 -0
  79. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/groq.svg +1 -0
  80. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/ollama.svg +1 -0
  81. package/dist/src/app/webui/.next/standalone/src/app/webui/public/logos/openai.svg +1 -0
  82. package/dist/src/app/webui/.next/standalone/src/app/webui/server.js +1 -1
  83. package/dist/src/app/webui/.next/static/RkBbxCa0lrWNsf3yPd4rX/_buildManifest.js +1 -0
  84. package/dist/src/app/webui/.next/static/RkBbxCa0lrWNsf3yPd4rX/_ssgManifest.js +1 -0
  85. package/dist/src/app/webui/.next/static/chunks/122-4d4c8aa883d114a2.js +1 -0
  86. package/dist/src/app/webui/.next/static/chunks/216-f5dbf2145a48ae92.js +1 -0
  87. package/dist/src/app/webui/.next/static/chunks/43-4f3d01c7feaf132f.js +1 -0
  88. package/dist/src/app/webui/.next/static/chunks/app/layout-36c240720861a312.js +1 -0
  89. package/dist/src/app/webui/.next/static/chunks/app/page-ca08c66042cb54c8.js +1 -0
  90. package/dist/src/app/webui/.next/static/chunks/app/playground/page-07a79d22b26d37f4.js +1 -0
  91. package/dist/src/app/webui/.next/static/css/c1d26dc78adbeb53.css +3 -0
  92. package/dist/src/app/webui/server.js +25 -12
  93. package/dist/src/core/{chunk-2O5JENNA.js → chunk-XABD32T2.js} +318 -35
  94. package/dist/src/core/index.cjs +320 -35
  95. package/dist/src/core/index.d.cts +3 -0
  96. package/dist/src/core/index.d.ts +3 -0
  97. package/dist/src/core/index.js +1 -1
  98. package/dist/src/core/{sqlite-backend-4KSJRUVL.js → sqlite-backend-3VNBKYIT.js} +1 -1
  99. package/package.json +4 -1
  100. package/dist/src/app/webui/.next/standalone/.next/static/chunks/262-807eb8fa558ce992.js +0 -1
  101. package/dist/src/app/webui/.next/standalone/.next/static/chunks/42-ae0665ff0534f075.js +0 -1
  102. package/dist/src/app/webui/.next/standalone/.next/static/chunks/500-99efaae6ea436094.js +0 -1
  103. package/dist/src/app/webui/.next/standalone/.next/static/chunks/app/page-77c27b87857033eb.js +0 -1
  104. package/dist/src/app/webui/.next/standalone/.next/static/css/3d91ad5ec330296f.css +0 -3
  105. package/dist/src/app/webui/.next/standalone/src/app/webui/.next/server/chunks/950.js +0 -1
  106. package/dist/src/app/webui/.next/static/chunks/262-807eb8fa558ce992.js +0 -1
  107. package/dist/src/app/webui/.next/static/chunks/42-ae0665ff0534f075.js +0 -1
  108. package/dist/src/app/webui/.next/static/chunks/500-99efaae6ea436094.js +0 -1
  109. package/dist/src/app/webui/.next/static/chunks/app/page-77c27b87857033eb.js +0 -1
  110. package/dist/src/app/webui/.next/static/css/3d91ad5ec330296f.css +0 -3
  111. /package/dist/src/app/webui/.next/standalone/.next/static/{bJ5SqDBPKFEnZArCs2k9v → RkBbxCa0lrWNsf3yPd4rX}/_buildManifest.js +0 -0
  112. /package/dist/src/app/webui/.next/standalone/.next/static/{bJ5SqDBPKFEnZArCs2k9v → RkBbxCa0lrWNsf3yPd4rX}/_ssgManifest.js +0 -0
  113. /package/dist/src/app/webui/.next/{static/bJ5SqDBPKFEnZArCs2k9v → standalone/src/app/webui/.next/static/RkBbxCa0lrWNsf3yPd4rX}/_buildManifest.js +0 -0
  114. /package/dist/src/app/webui/.next/{static/bJ5SqDBPKFEnZArCs2k9v → standalone/src/app/webui/.next/static/RkBbxCa0lrWNsf3yPd4rX}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Dexto (formerly Saiki)
1
+ # Dexto
2
2
 
3
3
  <p align="center">
4
4
  <img src="https://img.shields.io/badge/Status-Beta-yellow">
@@ -7,50 +7,43 @@
7
7
  <a href="https://deepwiki.com/truffle-ai/dexto"><img src="https://deepwiki.com/badge.svg"></a>
8
8
  </p>
9
9
 
10
- **A lightweight runtime for creating and running AI agents that turn natural language into real-world actions.**
11
-
10
+ **An all-in-one toolkit to build agentic applications that turn natural language into real-world actions.**
12
11
 
13
12
  <div align="center">
14
- <img src="https://github.com/user-attachments/assets/9a796427-ab97-4c8f-8ac2-09cf58135553" alt="Dexto Demo" width="900" />
13
+ <img src="https://github.com/user-attachments/assets/97a09f5b-6f7d-4d4b-9b3f-3c87fd964cbe" alt="Dexto Demo" width="700" />
15
14
  </div>
16
15
 
17
- ---
16
+ ## What is Dexto?
18
17
 
19
- ## Table of Contents
20
- 1. [Why Dexto?](#why-dexto)
21
- 2. [Installation](#installation)
22
- 3. [Run Modes](#run-modes)
23
- 4. [Quick Start](#quick-start)
24
- 5. [Programmatic API](#programmatic-api)
25
- 6. [Configuration](#configuration)
26
- 7. [Examples & Demos](#examples--demos)
27
- 8. [Capabilities](#capabilities)<!-- 9. [Architecture Overview](#architecture-overview) -->
28
- 9. [LLM Providers](#llm-providers)
29
- 10. [Standalone MCP Manager](#standalone-mcp-manager)
30
- 11. [CLI Reference](#cli-reference)
31
- 12. [Next Steps](#next-steps)
32
- 13. [Community & Support](#community--support)
33
- 14. [Contributors](#contributors)
34
- 15. [License](#license)
18
+ Dexto is a universal agent interface for building agentic apps—software that understands natural language and takes real-world actions. It orchestrates LLMs, tools, and data into persistent, stateful systems with memory, so you can rapidly create AI assistants, copilots, and context-aware apps that think, act and feel alive.
35
19
 
36
- ---
20
+ #### With Dexto, you can build:
21
+
22
+ - **Autonomous Agents** - Agents that plan, execute, and adapt to user goals.
23
+ - **Digital Companions** - AI assistants & copilots that remember context and anticipate needs.
24
+ - **Multi-Agent Systems** - Architect agents that collaborate, delegate, and solve complex tasks together.
25
+ - **MCP Clients** - Connect multiple tools, files, APIs, and data via MCP Servers.
26
+ - **Agent-as-a-Service** – Transform your existing SaaS products and APIs into dynamic, conversational experiences.
27
+ - **Agentic Applications** – Integrate Dexto as a reasoning engine to power interactive, multimodal, AI-native applications.
37
28
 
38
- ## Why Dexto?
29
+ <!-- Dexto unifies a configuration-driven framework, robust runtime, and seamless developer experience—so you can build, deploy, and iterate with ease.
39
30
 
40
- Dexto is the missing **intelligence layer** of your stack—perfect for building AI applications, standalone chatbots, or as the reasoning engine inside larger products.
31
+ - **Framework** Define agent behavior in YAML. Instantly swap models and tools without touching code.
32
+ - **Runtime** – Execution with session management, conversation memory, and multimodal support.
33
+ - **Interfaces & Tooling** – Native support for CLI, Web, APIs, and a TypeScript SDK. Develop, debug, and interact with your agent across any platforms from day one. -->
41
34
 
42
- The main Dexto features are:
35
+ ### What You Get
43
36
 
44
- | 💡 Feature | What it means for you |
45
- |------------|-----------------------|
46
- | **Powerful CLI and Web UI** | Dexto ships with a powerful CLI and Web UI that enable you to run AI agents in your terminal and over the web. |
47
- | **Single runtime, many interfaces** | Run the same agent via CLI, Web, Discord, Telegram, or a REST/WS server. |
48
- | **Model-agnostic** | Hot-swap LLMs from OpenAI, Anthropic, Gemini, Groq, or local models. |
49
- | **Unified Tooling** | Connect to remote tool servers (filesystem, browser, web-search) via the **Model Context Protocol (MCP)**. |
50
- | **Config-driven** | Define agent behavior (prompts, tools, model, memory) in version-controlled YAML. |
51
- | **Production-ready Core** | Leverage a multi-session chat manager, typed API, pluggable storage, and robust logging. |
52
- | **Extensible** | Ship your own MCP tool servers or plug in custom services with a few lines of config. |
53
- | **Multi-Agent Systems** | Enable multi-agent collaboration via MCP and A2A. |
37
+ - **Batteries Included** Session management, tool orchestration, multimodal support.
38
+ - **20+ LLMs** – Instantly switch between OpenAI, Anthropic, Google, Groq, local models or bring your own.
39
+ - **Run Anywhere** Local for privacy, cloud for reach, or hybrid. *Same agent, any deployment.*
40
+ - **Native Multimodal** – Text, images, files, and tools in a single conversation. *Upload screenshots, ask questions, take actions.*
41
+ - **Persistent Sessions** Conversations, context, and memory are saved and can be exported, imported, or shared across environments.
42
+ - **Flexible Interfaces** One agent, endless ways to interact: Ready to-use CLI, WebUI, APIs, or integrate with your own UI.
43
+ - **Production Ready** Observability and error handling built-in.
44
+ - **Tooling & MCP** Integrate 100+ tools and connect to external servers via the Model Context Protocol (MCP).
45
+ - **Customizable Agents** Define agent behavior, tools, and prompts in YAML or TypeScript.
46
+ - **Pluggable Storage** Use Redis, PostgreSQL, SQLite, in-memory, and more for cache and database backends.
54
47
 
55
48
  ---
56
49
 
@@ -65,180 +58,250 @@ git clone https://github.com/truffle-ai/dexto.git
65
58
  cd dexto && npm i && npm run build && npm link
66
59
  ```
67
60
 
68
- ---
61
+ ## Quick Start
69
62
 
70
- ## Run Modes
63
+ ```bash
64
+ # 1. Set your API key
65
+ export OPENAI_API_KEY=your_openai_api_key_here
71
66
 
72
- | Mode | Command | Best for |
73
- |------|---------|----------|
74
- | **Interactive CLI** | `dexto` | Everyday automation & quick tasks |
75
- | **Web UI** | `dexto --mode web` | Friendly chat interface w/ image support |
76
- | **Headless Server** | `dexto --mode server` | REST & WebSocket APIs for agent interaction |
77
- | **MCP Server (Agent)** | `dexto --mode mcp` | Exposing your agent as a tool for others via stdio |
78
- | **MCP Server (Aggregator)** | `dexto mcp --group-servers` | Re-exposing tools from multiple MCP servers via stdio |
79
- | **Discord Bot** | `dexto --mode discord` | Community servers & channels ([Requires Setup](src/app/discord/README.md)) |
80
- | **Telegram Bot** | `dexto --mode telegram` | Mobile chat ([Requires Setup](src/app/telegram/README.md)) |
67
+ # 2. Try a multi-step task
68
+ dexto "create a snake game in HTML/CSS/JS, then open it in the browser"
81
69
 
82
- Run `dexto --help` for **all flags, sub-commands, and environment variables**.
70
+ # Optional: Launch the Web UI
71
+ dexto --mode web
72
+ ```
83
73
 
84
- ---
74
+ Dexto will use filesystem tools to write code and browser tools to open it—all from a single prompt. The Web UI allows you to navigate previous conversations and experiment with different models, tools and more.
85
75
 
86
- ## Quick Start
76
+ ## Examples & Demos
87
77
 
88
- Set your API keys first:
78
+ ### 🛒 Amazon Shopping Assistant
79
+ **Task:** `Can you go to amazon and add some snacks to my cart? I like trail mix, cheetos and maybe surprise me with something else?`
89
80
  ```bash
90
- export OPENAI_API_KEY=your_openai_api_key_here
81
+ # Default agent has browser tools
82
+ dexto
91
83
  ```
84
+ <a href="https://youtu.be/C-Z0aVbl4Ik">
85
+ <img src="https://github.com/user-attachments/assets/3f5be5e2-7a55-4093-a071-8c52f1a83ba3" alt="Dexto: Amazon shopping agent demo" width="600"/>
86
+ </a>
92
87
 
93
- Then, give Dexto a multi-step task that combines different tools:
88
+ ### 👁️ Computer Vision: Face Detection & Annotation
89
+ **Task:** `Detect all faces in this image and draw bounding boxes around them.`
94
90
  ```bash
95
- dexto "create a new snake game in html, css, and javascript, then open it in the browser"
91
+ dexto --agent image-editor-agent
96
92
  ```
97
93
 
98
- Dexto will use its **filesystem** tools to write the code and its **browser** tools to open the `index.html` file—all from a single prompt.
99
-
100
- Then start the Web UI:
94
+ <img src="https://github.com/user-attachments/assets/7e4b2043-c39a-47c7-a403-a9665ee762ce" alt="Face Detection Demo" width="600">
101
95
 
96
+ ### 🎙️ Podcast Agent: Generate AI Podcast Intros
97
+ **Task:** `Generate an intro for a podcast about the latest in AI.`
102
98
  ```bash
103
- dexto --mode web
99
+ dexto --agent podcast-agent
104
100
  ```
105
101
 
106
- The Web UI will load up any previous conversations you had, and also allows you to experiment with different models and MCP servers.
107
-
108
- ---
109
-
110
- ## Programmatic API
102
+ <img src="https://github.com/user-attachments/assets/cfd59751-3daa-4ccd-97b2-1b2862c96af1" alt="Podcast Agent Demo" width="600"/>
111
103
 
112
- The `DextoAgent` class is the core of the runtime. The following example shows its full lifecycle: initialization, running a single task, holding a conversation, and shutting down.
104
+ ### 🖼️ Hugging Face: Image Generation
105
+ **Task:** `Generate a photo of a baby panda.`
113
106
 
114
- ```ts
115
- import 'dotenv/config';
116
- import { DextoAgent, loadConfigFile } from 'dexto';
107
+ <img src="https://github.com/user-attachments/assets/570cbd3a-6990-43c5-b355-2b549a4ee6b3" alt="Hugging Face Image Generation Demo" width="600"/>
117
108
 
118
- const cfg = await loadConfigFile('./agents/default-agent.yml');
119
- const agent = new DextoAgent(cfg);
109
+ ### 🛠️ Adding Custom MCP Servers
120
110
 
121
- await agent.start();
111
+ You can add your own Model Context Protocol (MCP) servers to extend Dexto's capabilities with new tools or data sources. Just edit your agent YAML or add it directly in the WebUI.
122
112
 
123
- // Single-shot task
124
- console.log(await agent.run('List the 5 largest files in this repo'));
113
+ <img src="https://github.com/user-attachments/assets/1a3ca1fd-31a0-4e1d-ba93-23e1772b1e79" alt="Add MCP Server Example" width="600"/>
125
114
 
126
- // Conversation
127
- await agent.run('Write a haiku about TypeScript');
128
- await agent.run('Make it funnier');
115
+ ### 🎮 Web App Development: Snake Game
116
+ **Task:** `Create a snake game in HTML/CSS/JS, then open it in the browser`
117
+ ```bash
118
+ dexto "create a snake game in HTML/CSS/JS, then open it in the browser"
119
+ ```
129
120
 
130
- agent.resetConversation();
121
+ <img src="https://github.com/user-attachments/assets/6901ba82-3c2a-4177-baf0-7d44d04a5f27" alt="Snake Game Development Demo" width="600"/>
131
122
 
132
- await agent.stop();
123
+ ### 📧 Send Email Summaries to Slack
124
+ **Task:** `Summarize emails and send highlights to Slack`
125
+ ```bash
126
+ dexto --agent ./agents/examples/email_slack.yml
133
127
  ```
128
+ <img src="assets/email_slack_demo.gif" alt="Email to Slack Demo" width="600">
134
129
 
135
- Everything in the CLI is powered by this same class—so whatever the CLI can do, your code can too.
130
+ ---
136
131
 
137
- Check out our [Typescript SDK docs](https://docs.dexto.ai/api/category/typescript-sdk) for a complete guide.
132
+ ## Run Modes
138
133
 
139
- ---
134
+ | Mode | Command | Best for |
135
+ |------|---------|----------|
136
+ | **Interactive CLI** | `dexto` | Everyday automation & quick tasks |
137
+ | **Web UI** | `dexto --mode web` | Friendly chat interface w/ image support |
138
+ | **Headless Server** | `dexto --mode server` | REST & WebSocket APIs for agent interaction |
139
+ | **MCP Server (Agent)** | `dexto --mode mcp` | Exposing your agent as a tool for others via stdio |
140
+ | **MCP Server (Aggregator)** | `dexto mcp --group-servers` | Re-exposing tools from multiple MCP servers via stdio |
141
+ | **Discord Bot** | `dexto --mode discord` | Community servers & channels ([Requires Setup](src/app/discord/README.md)) |
142
+ | **Telegram Bot** | `dexto --mode telegram` | Mobile chat ([Requires Setup](src/app/telegram/README.md)) |
143
+
144
+ Run `dexto --help` for **all flags, sub-commands, and environment variables**.
140
145
 
141
146
  ## Configuration
142
147
 
143
- Agents are defined in version-controlled YAML. A minimal example:
148
+ ### Agent Configuration
149
+
150
+ Dexto treats each configuration as a unique agent allowing you to define and save combinations of LLMs, servers, storage options, etc. based on your needs for easy portability. Define agents in version-controlled YAML. Change the file, reload, and chat—state, memory, and tools update automatically.
144
151
 
145
152
  ```yaml
153
+ # agents/my-agent.yml
154
+ llm:
155
+ provider: openai
156
+ model: gpt-4.1-mini
157
+ apiKey: $OPENAI_API_KEY
158
+
146
159
  mcpServers:
147
160
  filesystem:
148
161
  type: stdio
149
162
  command: npx
150
163
  args: ['-y', '@modelcontextprotocol/server-filesystem', '.']
151
- puppeteer:
164
+ web:
152
165
  type: stdio
153
166
  command: npx
154
- args: ['-y', '@truffle-ai/puppeteer-server']
155
-
156
- llm:
157
- provider: openai
158
- model: gpt-4o
159
- apiKey: $OPENAI_API_KEY
167
+ args: ['-y', '@modelcontextprotocol/server-brave-search']
160
168
 
161
169
  systemPrompt: |
162
- You are Dexto, an expert coding assistant...
170
+ You are a helpful AI assistant with access to files and web search.
163
171
  ```
164
172
 
165
- Change the file, reload the agent, and chat—the conversation state, memory, and tools will update.
166
-
167
- Check out our [Configuration guide](https://docs.dexto.ai/category/dexto-configuration-guide) for the complete reference.
173
+ ### LLM Providers
168
174
 
169
- ---
175
+ Switch between providers instantly—no code changes required.
170
176
 
171
- ## Examples & Demos
177
+ | Provider | Models | Setup |
178
+ |----------|--------|-------|
179
+ | **OpenAI** | `gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `gpt-4.1`, `gpt-4.1-mini`, `gpt-4.1-nano`, `gpt-4o`, `gpt-4o-mini`, `gpt-4o-audio-preview`, `o4-mini`, `o3`, `o3-mini`, `o1` | `export OPENAI_API_KEY=...` |
180
+ | **Anthropic** | `claude-opus-4-1-20250805`, `claude-4-opus-20250514`, `claude-4-sonnet-20250514`, `claude-3-7-sonnet-20250219`, `claude-3-5-sonnet-20240620`, `claude-3-5-haiku-20241022` | `export ANTHROPIC_API_KEY=...` |
181
+ | **Google** | `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.5-flash-lite`, `gemini-2.0-flash`, `gemini-2.0-flash-lite` | `export GOOGLE_GENERATIVE_AI_API_KEY=...` |
182
+ | **Groq** | `llama-3.3-70b-versatile`, `meta-llama/llama-4-scout-17b-16e-instruct`, `meta-llama/llama-4-maverick-17b-128e-instruct`, `qwen/qwen3-32b`, `gemma-2-9b-it`, `openai/gpt-oss-20b`, `openai/gpt-oss-120b`, `moonshotai/kimi-k2-instruct`, `deepseek-r1-distill-llama-70b` | `export GROQ_API_KEY=...` |
183
+ | **xAI** | `grok-4`, `grok-3`, `grok-3-mini`, `grok-code-fast-1` | `export XAI_API_KEY=...` |
184
+ | **Cohere** | `command-a-03-2025`, `command-r-plus`, `command-r`, `command-r7b` | `export COHERE_API_KEY=...` |
172
185
 
173
- ### 🛒 Amazon Shopping Assistant
174
- **Task:** `Can you go to amazon and add some snacks to my cart? I like trail mix, cheetos and maybe surprise me with something else?`
175
186
  ```bash
176
- # Default agent has browser tools
177
- dexto
187
+ # Switch models via CLI
188
+ dexto -m claude-4-sonnet-20250514
189
+ dexto -m gemini-2.5-pro
178
190
  ```
179
- <a href="https://youtu.be/C-Z0aVbl4Ik">
180
- <img src="https://github.com/user-attachments/assets/3f5be5e2-7a55-4093-a071-8c52f1a83ba3" alt="Dexto: Amazon shopping agent demo" width="600"/>
181
- </a>
182
191
 
192
+ See our [Configuration Guide](https://docs.dexto.ai/docs/category/guides/) for complete setup instructions.
193
+
194
+ ## Agent Recipes
195
+
196
+ Dexto comes with pre-built agent recipes for common use cases. Install and use them instantly:
183
197
 
184
- ### 📧 Send Email Summaries to Slack
185
- **Task:** `Summarize emails and send highlights to Slack`
186
198
  ```bash
187
- dexto --agent ./agents/examples/email_slack.yml
199
+ # List available agents
200
+ dexto list-agents
201
+
202
+ # Install specific agents
203
+ dexto install nano-banana-agent podcast-agent
204
+
205
+ # Use an agent
206
+ dexto --agent nano-banana-agent "create a futuristic cityscape with flying cars"
207
+ dexto --agent podcast-agent "generate a podcast intro with two hosts discussing AI"
188
208
  ```
189
- <img src="assets/email_slack_demo.gif" alt="Email to Slack Demo" width="600">
190
209
 
191
- More ready-to-run recipes live in [`agents/examples`](agents/examples) and the [docs site](https://docs.dexto.ai/).
210
+ **Available Agents:**
211
+ - **Nano Banana Agent** – Advanced image generation and editing using Google's Nano Banana (Gemini 2.5 Flash Image)
212
+ - **Podcast Agent** – Advanced podcast generation using Google Gemini TTS for multi-speaker audio content
213
+ - **Database Agent** – Demo agent for SQL queries and database operations
214
+ - **Image Editor Agent** – Image editing and manipulation
215
+ - **Music Agent** – Music creation and audio processing
216
+ - **PDF Agent** – Document analysis and conversation
217
+ - **Product Researcher** – Product naming and branding research
218
+ - **Triage Agent** – Demo multi-agent customer support routing system
192
219
 
193
- ---
220
+ Each agent is pre-configured with the right tools, prompts, and LLM settings for its domain. No setup required—just install and start building.
194
221
 
195
- ## Capabilities
222
+ More ready-to-run recipes live in [`agents/`](agents/) and the [docs site](https://docs.dexto.ai/).
196
223
 
197
- * **Dynamic LLM Switching**: Change model, provider, or routing rules mid-conversation.
198
- * **Streaming Responses**: Opt-in to receive tokens as they arrive for real-time output.
199
- * **Multi-Session Management**: Create isolated, stateful chat sessions (think workspace tabs).
200
- * **Pluggable Memory Backends**: Use the in-memory default or connect your own DB via the `StorageManager`.
201
- * **Lifecycle Event Bus**: Subscribe to agent events for metrics, logging, or custom side-effects.
202
- * **Standalone MCP Manager**: Use Dexto's core `MCPManager` in your own projects without the full agent.
224
+
225
+ ## Programmatic API
226
+
227
+ Build applications with the `DextoAgent` class. Everything the CLI can do, your code can too.
228
+
229
+ ```ts
230
+ import { DextoAgent } from 'dexto';
231
+
232
+ // Create and start agent
233
+ const agent = new DextoAgent({
234
+ llm: {
235
+ provider: 'openai',
236
+ model: 'gpt-4.1-mini',
237
+ apiKey: process.env.OPENAI_API_KEY
238
+ }
239
+ });
240
+ await agent.start();
241
+
242
+ // Run tasks
243
+ const response = await agent.run('List the 5 largest files in this repo');
244
+ console.log(response);
245
+
246
+ // Hold conversations
247
+ await agent.run('Write a haiku about TypeScript');
248
+ await agent.run('Make it funnier');
249
+
250
+ await agent.stop();
251
+ ```
252
+
253
+ See our [TypeScript SDK docs](https://docs.dexto.ai/api/category/typescript-sdk/) for complete examples with MCP tools, sessions, and advanced features.
203
254
 
204
255
  ---
205
256
 
206
- ## LLM Providers
257
+ ## Advanced Usage
207
258
 
208
- Dexto supports multiple LLM providers out-of-the-box, plus any OpenAI SDK-compatible provider.
259
+ ### Session Management
209
260
 
210
- - **OpenAI**: `gpt-4.1-mini`, `gpt-4o`, `o3`, `o1` and more
211
- - **Anthropic**: `claude-4-sonnet-20250514`, `claude-3-7-sonnet-20250219`, and more
212
- - **Google**: `gemini-2.5-pro`, `gemini-2.0-flash` and more
213
- - **Groq**: `llama-3.3-70b-versatile`, `gemma-2-9b-it`
261
+ Create and manage multiple conversation sessions with persistent storage.
214
262
 
215
- ### Quick Setup
263
+ ```typescript
264
+ const agent = new DextoAgent(config);
265
+ await agent.start();
216
266
 
217
- Set your API key and run. You can switch providers instantly via the `-m` flag.
218
- ```bash
219
- # OpenAI (default)
220
- export OPENAI_API_KEY=your_openai_api_key_here
221
- export ANTHROPIC_API_KEY=your_anthropic_api_key_here
222
- export GOOGLE_GENERATIVE_AI_API_KEY=your_google_gemini_api_key_here
223
- dexto
267
+ // Create and manage sessions
268
+ const session = await agent.createSession('user-123');
269
+ await agent.run('Hello, how can you help me?', undefined, 'user-123');
224
270
 
225
- # Switch providers via CLI
226
- dexto -m claude-3.5-sonnet-20240620
227
- dexto -m gemini-1.5-flash-latest
271
+ // List and manage sessions
272
+ const sessions = await agent.listSessions();
273
+ const sessionHistory = await agent.getSessionHistory('user-123');
274
+ await agent.deleteSession('user-123');
275
+
276
+ // Search across conversations
277
+ const results = await agent.searchMessages('bug fix', { limit: 10 });
228
278
  ```
229
279
 
230
- For comprehensive setup instructions, see our **[LLM Providers Guide](https://docs.dexto.ai/guides/configuring-dexto/llm/providers)**.
280
+ ### LLM Management
231
281
 
232
- ---
282
+ Switch between models and providers dynamically.
283
+
284
+ ```typescript
285
+ // Get current configuration
286
+ const currentLLM = agent.getCurrentLLMConfig();
233
287
 
234
- ## Standalone MCP Manager
288
+ // Switch models (provider inferred automatically)
289
+ await agent.switchLLM({ model: 'gpt-4.1-mini' });
290
+ await agent.switchLLM({ model: 'claude-4-sonnet-20250514' });
235
291
 
236
- Need to manage MCP tool servers without the full agent? Use the `MCPManager` directly in your own applications.
292
+ // Get supported providers and models
293
+ const providers = agent.getSupportedProviders();
294
+ const models = agent.getSupportedModels();
295
+ const openaiModels = agent.getSupportedModelsForProvider('openai');
296
+ ```
297
+
298
+ ### MCP Manager
299
+
300
+ For advanced MCP server management, use the MCPManager directly.
237
301
 
238
302
  ```typescript
239
303
  import { MCPManager } from 'dexto';
240
304
 
241
- // Create manager instance
242
305
  const manager = new MCPManager();
243
306
 
244
307
  // Connect to MCP servers
@@ -248,19 +311,48 @@ await manager.connectServer('filesystem', {
248
311
  args: ['-y', '@modelcontextprotocol/server-filesystem', '.']
249
312
  });
250
313
 
251
- // Get all available tools across servers
314
+ // Access tools, prompts, and resources
252
315
  const tools = await manager.getAllTools();
253
- console.log('Available tools:', Object.keys(tools));
316
+ const prompts = await manager.getAllPrompts();
317
+ const resources = await manager.getAllResources();
254
318
 
255
- // Execute a tool
319
+ // Execute tools
256
320
  const result = await manager.executeTool('readFile', { path: './README.md' });
257
- console.log('File contents:', result);
258
321
 
259
- // Disconnect when done
260
322
  await manager.disconnectAll();
261
323
  ```
262
324
 
263
- See the **[MCP Manager Documentation](https://docs.dexto.ai/guides/mcp-manager)** for the complete API reference.
325
+ ### Storage & Persistence
326
+
327
+ Configure storage backends for production-ready persistence and caching.
328
+
329
+ ```yaml
330
+ # agents/production-agent.yml
331
+ storage:
332
+ cache:
333
+ type: redis
334
+ url: $REDIS_URL
335
+ maxConnections: 100
336
+ database:
337
+ type: postgres
338
+ connectionString: $POSTGRES_CONNECTION_STRING
339
+ maxConnections: 25
340
+
341
+ sessions:
342
+ maxSessions: 1000
343
+ sessionTTL: 86400000 # 24 hours
344
+ ```
345
+
346
+ **Supported Backends:**
347
+ - **Cache**: Redis, In-Memory (fast, ephemeral)
348
+ - **Database**: PostgreSQL, SQLite, In-Memory (persistent, reliable)
349
+
350
+ **Use Cases:**
351
+ - **Development**: In-memory for quick testing
352
+ - **Production**: Redis + PostgreSQL for scale
353
+ - **Simple**: SQLite for single-instance persistence
354
+
355
+ See the [DextoAgent API Documentation](https://docs.dexto.ai/api/dexto-agent/) for complete method references.
264
356
 
265
357
  ---
266
358
 
@@ -272,28 +364,46 @@ See the **[MCP Manager Documentation](https://docs.dexto.ai/guides/mcp-manager)*
272
364
  ```
273
365
  Usage: dexto [options] [command] [prompt...]
274
366
 
275
- The Dexto CLI allows you to talk to Dexto, build custom AI Agents, and create complex AI applications.
367
+ Dexto CLI allows you to talk to Dexto, build custom AI Agents, build complex AI applications like Cursor, and more.
368
+
369
+ Run dexto interactive CLI with `dexto` or run a one-shot prompt with `dexto -p "<prompt>"` or `dexto "<prompt>"`
370
+ Start with a new session using `dexto --new-session [sessionId]`
371
+ Run dexto web UI with `dexto --mode web`
372
+ Run dexto as a server (REST APIs + WebSockets) with `dexto --mode server`
373
+ Run dexto as a discord bot with `dexto --mode discord`
374
+ Run dexto as a telegram bot with `dexto --mode telegram`
375
+ Run dexto agent as an MCP server with `dexto --mode mcp`
376
+ Run dexto as an MCP server aggregator with `dexto mcp --group-servers`
276
377
 
277
- For full documentation, visit https://docs.dexto.ai.
378
+ Check subcommands for more features. Check https://github.com/truffle-ai/dexto for documentation on how to customize dexto and other examples
278
379
 
279
380
  Arguments:
280
- prompt Natural-language prompt to run once. If empty, starts interactive CLI.
381
+ prompt Natural-language prompt to run once. If not passed, dexto will start as an interactive CLI
281
382
 
282
383
  Options:
283
- -v, --version output the current version
284
- -a, --agent <path> Path to agent config file
285
- -s, --strict Require all server connections to succeed
286
- --no-verbose Disable verbose output
287
- -m, --model <model> Specify the LLM model to use.
288
- -r, --router <router> Specify the LLM router to use (vercel or in-built)
289
- --mode <mode> Runtime mode: cli | web | server | discord | telegram | mcp (default: "cli")
290
- --web-port <port> Optional port for the web UI (default: "3000")
291
- -h, --help display help for command
384
+ -v, --version output the current version
385
+ -a, --agent <name|path> Agent name or path to agent config file
386
+ -p, --prompt <text> One-shot prompt text. Alternatively provide a single quoted string as positional argument.
387
+ -s, --strict Require all server connections to succeed
388
+ --no-verbose Disable verbose output
389
+ --no-interactive Disable interactive prompts and API key setup
390
+ -m, --model <model> Specify the LLM model to use
391
+ -r, --router <router> Specify the LLM router to use (vercel or in-built)
392
+ --new-session [sessionId] Start with a new session (optionally specify session ID)
393
+ --mode <mode> The application in which dexto should talk to you - cli | web | server | discord | telegram | mcp (default: "cli")
394
+ --web-port <port> optional port for the web UI (default: "3000")
395
+ --no-auto-install Disable automatic installation of missing agents from registry
396
+ -h, --help display help for command
292
397
 
293
398
  Commands:
294
- create-app Scaffold a new Dexto Typescript app.
295
- init-app Initialize an existing Typescript app with Dexto.
296
- mcp Run Dexto as an MCP server.
399
+ create-app Scaffold a new Dexto Typescript app
400
+ init-app Initialize an existing Typescript app with Dexto
401
+ setup [options] Configure global Dexto preferences
402
+ install [options] [agents...] Install agents from the registry
403
+ uninstall [options] [agents...] Uninstall agents from the local installation
404
+ list-agents [options] List available and installed agents
405
+ which <agent> Show the path to an agent
406
+ mcp [options] Start Dexto as an MCP server. Use --group-servers to aggregate and re-expose tools from configured MCP servers.
297
407
  ```
298
408
  </details>
299
409
 
@@ -301,10 +411,10 @@ Commands:
301
411
 
302
412
  ## Next Steps
303
413
 
304
- * **[Quick Start](https://docs.dexto.ai/getting-started/intro)** – Get up and running in minutes.
305
- * **[Configuration Guide](https://docs.dexto.ai/category/guides)** – Configure agents, LLMs, and tools.
306
- * **[Building with Dexto](https://docs.dexto.ai/category/tutorials)** – Developer guides and patterns.
307
- * **[API Reference](https://docs.dexto.ai/api)** – REST APIs, WebSocket, and SDKs.
414
+ * **[Quick Start](https://docs.dexto.ai/docs/getting-started/intro/)** – Get up and running in minutes.
415
+ * **[Configuration Guide](https://docs.dexto.ai/docs/category/guides/)** – Configure agents, LLMs, and tools.
416
+ * **[Building with Dexto](https://docs.dexto.ai/docs/category/tutorials/)** – Developer guides and patterns.
417
+ * **[API Reference](https://docs.dexto.ai/api/)** – REST APIs, WebSocket, and SDKs.
308
418
 
309
419
  ---
310
420
 
@@ -43,10 +43,24 @@
43
43
  "source": "triage-demo/",
44
44
  "main": "triage-agent.yml"
45
45
  },
46
+ "nano-banana-agent": {
47
+ "description": "AI agent for advanced image generation and editing using Google's Nano Banana (Gemini 2.5 Flash Image)",
48
+ "author": "Truffle AI",
49
+ "tags": ["images", "generation", "editing", "ai", "nano-banana", "gemini"],
50
+ "source": "nano-banana-agent/",
51
+ "main": "nano-banana-agent.yml"
52
+ },
53
+ "podcast-agent": {
54
+ "description": "Advanced podcast generation agent using Google Gemini TTS for multi-speaker audio content",
55
+ "author": "Truffle AI",
56
+ "tags": ["podcast", "audio", "tts", "speech", "multi-speaker", "gemini"],
57
+ "source": "podcast-agent/",
58
+ "main": "podcast-agent.yml"
59
+ },
46
60
  "default-agent": {
47
- "description": "Default Dexto agent with filesystem and puppeteer tools",
61
+ "description": "Default Dexto agent with filesystem and playwright tools",
48
62
  "author": "Truffle AI",
49
- "tags": ["default", "filesystem", "puppeteer"],
63
+ "tags": ["default", "filesystem", "playwright"],
50
64
  "source": "default-agent.yml"
51
65
  }
52
66
  }
@@ -8,12 +8,12 @@ mcpServers:
8
8
  - -y
9
9
  - "@modelcontextprotocol/server-filesystem"
10
10
  - .
11
- puppeteer:
11
+ playwright:
12
12
  type: stdio
13
13
  command: npx
14
14
  args:
15
15
  - -y
16
- - "@truffle-ai/puppeteer-server"
16
+ - "@playwright/mcp@latest"
17
17
 
18
18
  # System prompt configuration - defines the agent's behavior and instructions
19
19
  systemPrompt:
@@ -22,16 +22,10 @@ systemPrompt:
22
22
  type: static
23
23
  priority: 0
24
24
  content: |
25
- You are a helpful AI assistant demonstrating Dexto's capabilities.
26
- You have access to filesystem and browser automation tools.
27
-
28
- Your capabilities include:
29
- - Creating, reading and modifying files
30
- - Navigating websites and interacting with web elements
31
- - Performing multi-step tasks that combine these abilities
32
-
33
- Be friendly and explain what you're doing as you complete tasks.
34
- When demonstrating features, provide clear examples of what's happening.
25
+ You are a helpful AI assistant with access to tools.
26
+ Use these tools when appropriate to answer user queries.
27
+ You can use multiple tools in sequence to solve complex problems.
28
+ After each tool result, determine if you need more information or can provide a final answer.
35
29
  - id: dateTime
36
30
  type: dynamic
37
31
  priority: 10