Andrew Ng Just Released OpenWorker: An Open-Source, Local-First AI Desktop Partner That Returns End-to-End Delivery Instead of Conversation

Andrew Ng announced OpenWorker, an open source desktop agent that generates a finished task rather than a conversation. OpenWorker prompts the user i the resultnot informed: polished document, Slack response containing real numbers, updated calendar, tripled inbox. It then breaks that output down into steps, runs through all local files and linked applications, and checks before anything else.
The architecture is four layers, and they all run on your machine
The repository contains 119 Python files (~32,400 lines) below coworker/149 TypeScript/TSX files below surfaces/gui/and 78 backend test modules.
The stack is divided as follows:
- A desktop shell – native Tauri 2 window that wraps React 18 UI. The batch identifier is
com.openworker.desktopand the shell directs the Python server itself. - Local proxy server – Python 3.10+ on FastAPI and uvicorn, binding to
127.0.0.1:8765by mistake. The config example closes the possibility of replication of the 12↔tool model. - Power and connector layer – tested local tools (files, git, search supported by ripgrep, shell, commit) and hosted integration with MCP.
- Model router – A single interface over native, OpenAI-compatible, vendor and local providers.
The engine is built on top of aisuite, the LLM library of Andrew Ng provider.
‘+l.d+’
- ‘+lumap(function(u){return’
- ‘+u+’
‘}).join(”)+’
‘; d.addEventListener(‘click’,function(){var was=d.classList.contains(‘on’);lay.querySelectorAll(‘.layer’).forEach(function(x){x.classList.remove(‘on’)});if(!was)d.classList.);add(‘on}); add(‘on}); lay.appendChild(d); }); function function(items,idx,chipEl,rowEl,render){ var cats=[];items.forEach(function(it){ if(cats.indexOf(it[idx])<0)cats.push(it[idx])}); var sel="All"; function chips(){ chipEl.innerHTML='';['All'].concat(cats).forEach(function(c){ var n=c==='All'?items.length:items.filter(function(i){ return i[idx]===c}).length; var b=document.createElement('button');b.className="chip"+(c===sel?' on':''); b.innerHTML=c+'‘+n+’‘; b.addEventListener(‘click’,function(){sel=c;chips();rows();sz();});chipEl.appendChild(b);});} function rows(){rowEl.innerHTML=”;items.filter(function(i){return sel===’All’||i[idx]===sel}).forEach(function(i){ var d=document.createElement(‘div’);d.className=”row”;d.innerHTML=render(i);rowEl.appendChild(d);});} chips();rows();} facet(MODELS,0,document.getElementById(‘mchips’),document.getElementById(‘mrows’),function(m){ return ‘‘+(m[3]’View + PDF’:’Tools only’)+’‘;}); facet(CONN,0,document.getElementById(‘cchips’),document.getElementById(‘crows’),function(c){ return ‘
‘+c[1]+’
‘+c[0]+’‘;}); var mxb=document.getElementById(‘mxb’); MX.forEach(function(r){ var tr=document.createElement(‘tr’); tr.innerHTML=’
'+r[0]+'‘+r.slice(1).map(function(c){return’
‘}).join(”); mxb.appendChild(tr); }); function sz(){try{parent.postMessage({owEmbed:’ow1′,height:R.offsetHeight+40},’*’)}catch(e){}} if(window.ResizeObserver)new ResizeObserver(sz).observe(R); window.addEventListener(‘load’, sz); setTimeout(sz,120);sz(); })();



