<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alain Valdes</title>
    <description>The latest articles on DEV Community by Alain Valdes (@avaldesbosch).</description>
    <link>https://dev.to/avaldesbosch</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3968942%2Ffb5fe7d7-b7ac-4be9-b53a-7ed631455507.png</url>
      <title>DEV Community: Alain Valdes</title>
      <link>https://dev.to/avaldesbosch</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/avaldesbosch"/>
    <language>en</language>
    <item>
      <title>Why I built OpenWorkspace: AI agents that operate your apps</title>
      <dc:creator>Alain Valdes</dc:creator>
      <pubDate>Fri, 05 Jun 2026 00:44:10 +0000</pubDate>
      <link>https://dev.to/avaldesbosch/why-i-built-openworkspace-ai-agents-that-operate-your-apps-3emi</link>
      <guid>https://dev.to/avaldesbosch/why-i-built-openworkspace-ai-agents-that-operate-your-apps-3emi</guid>
      <description>&lt;p&gt;Every time I wanted to give my small team some internal tooling - a shared task tracker, a place for documents, a calendar, an assistant that actually knew our files - I ended up wiring together five SaaS subscriptions or a sprawling self-hosted stack: Postgres, Redis, a vector database, a frontend build pipeline, a reverse proxy. Just to get started.&lt;/p&gt;

&lt;p&gt;So I built the opposite.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenWorkspace
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/avaldesbosch/openworkspace" rel="noopener noreferrer"&gt;OpenWorkspace&lt;/a&gt; is a self-hosted AI workspace that runs as &lt;strong&gt;one Node process&lt;/strong&gt;. No database to provision (state is SQLite/JSON files next to the server), no build step (no webpack, no transpile - open a file, edit, reload). &lt;code&gt;git clone &amp;amp;&amp;amp; npm start&lt;/code&gt; and you have tasks, documents with real RAG, a calendar, a scheduler, time tracking, a credential vault, and a team of AI agents behind one login.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part I actually care about: agents that &lt;em&gt;operate&lt;/em&gt; apps
&lt;/h2&gt;

&lt;p&gt;Most self-hosted AI tools are a chat box over your documents. OpenWorkspace is built around a different idea:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every app ships its own tools. So the AI agents don't just talk - they take real actions inside your apps.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you add an app, you also declare a small &lt;code&gt;tools.json&lt;/code&gt; that maps to the app's own HTTP endpoints. The moment that exists, the agents can call it. Tell an agent to add items to the task list, or find a contract in Documents and summarize it, and it actually does the thing - because the app exposed a tool. One LLM config powers both the assistant and these agentic tasks across every app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build your own app in minutes
&lt;/h2&gt;

&lt;p&gt;The 20+ apps it ships with are really just &lt;strong&gt;examples&lt;/strong&gt;. The point is how fast you build your own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every app is two files: an API handler + state, and a mount file for routes.&lt;/li&gt;
&lt;li&gt;Copy the template, drop in your logic, add a registry entry. No restart, no build.&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;tools.json&lt;/code&gt; and your new app is instantly agent-operable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The agent framework
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Scaffold a new agent in about a minute (a prompt + a tool list).&lt;/li&gt;
&lt;li&gt;Tools come from composable packs - grant capabilities per agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP built in&lt;/strong&gt; - point a pack at any Model Context Protocol server and its tools surface automatically.&lt;/li&gt;
&lt;li&gt;Pick the model per agent - a cheap local model for background work, a frontier model for the assistant.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Point it at any OpenAI-compatible endpoint (OpenAI, Ollama, vLLM, LM Studio), or run the non-AI apps with no model at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built-in RAG, no external vector DB
&lt;/h2&gt;

&lt;p&gt;Drop PDFs / Word / Excel into Documents and they're chunked, embedded, and searchable with hybrid retrieval - BM25 keyword (SQLite FTS5) + semantic vector search (sqlite-vec) fused with reciprocal-rank. The agents answer grounded in your files.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's early, and I'd love your eyes on it
&lt;/h2&gt;

&lt;p&gt;It's solo and version 0.1 - but it runs, and I use it with my team every day. I'd genuinely love feedback on the architecture, and to hear what would make it useful for &lt;em&gt;your&lt;/em&gt; team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo (MIT):&lt;/strong&gt; &lt;a href="https://github.com/avaldesbosch/openworkspace" rel="noopener noreferrer"&gt;https://github.com/avaldesbosch/openworkspace&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What would you want your AI agents to actually &lt;em&gt;do&lt;/em&gt; in your workspace?&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>ai</category>
      <category>selfhosted</category>
    </item>
  </channel>
</rss>
