Thursday, July 23, 2026
HomeArtificial IntelligenceAndrew Ng Simply Launched OpenWorker: An Open-Supply, Native-First Desktop AI Coworker That...

Andrew Ng Simply Launched OpenWorker: An Open-Supply, Native-First Desktop AI Coworker That Returns Completed Deliverables As an alternative of Chat





Andrew Ng has introduced OpenWorker, an open-source desktop agent that produces completed work quite than dialog. OpenWorker asks the person for an consequence, not a immediate: a cultured doc, a Slack reply containing the precise numbers, an up to date calendar, a triaged inbox. It then breaks that consequence into steps, works throughout native information and linked apps, and checks in earlier than something consequential.

The structure is 4 layers, and all of them run in your machine

The repository comprises 119 Python information (~32,400 strains) underneath coworker/, 149 TypeScript/TSX information underneath surfaces/gui/, and 78 backend take a look at modules.

The stack breaks down as follows:

  • Desktop shell — a Tauri 2 native window wrapping a React 18 UI. The bundle identifier is com.openworker.desktop, and the shell supervises the Python server itself.
  • Native agent server — Python 3.10+ on FastAPI and uvicorn, binding to 127.0.0.1:8765 by default. The instance config caps a flip at 12 mannequin↔instrument iterations.
  • Functionality and connector layer — vetted native instruments (information, git, ripgrep-backed search, shell, todo) plus hosted integrations plus MCP.
  • Mannequin router — one interface over native, OpenAI-compatible, reseller and native suppliers.

The engine is constructed on aisuite, Andrew Ng’s provider-agnostic LLM library.


‘+l.d+’

    ‘+l.u.map(operate(u){return ‘

  • ‘+u+’
  • ‘}).be part of(”)+’

‘;
d.addEventListener(‘click on’,operate(){var was=d.classList.comprises(‘on’);lay.querySelectorAll(‘.layer’).forEach(operate(x){x.classList.take away(‘on’)});if(!was)d.classList.add(‘on’);sz();});
lay.appendChild(d);});
operate side(gadgets,idx,chipEl,rowEl,render){
var cats=[];gadgets.forEach(operate(it){if(cats.indexOf(it[idx])<0)cats.push(it[idx])});
var sel=”All”;
operate chips(){chipEl.innerHTML=”;[‘All’].concat(cats).forEach(operate(c){
var n=c===’All’?gadgets.size:gadgets.filter(operate(i){return i[idx]===c}).size;
var b=doc.createElement(‘button’);b.className=”chip”+(c===sel?’ on’:”);
b.innerHTML=c+’‘+n+’‘;
b.addEventListener(‘click on’,operate(){sel=c;chips();rows();sz();});chipEl.appendChild(b);});}
operate rows(){rowEl.innerHTML=”;gadgets.filter(operate(i)i[idx]===sel).forEach(operate(i){
var d=doc.createElement(‘div’);d.className=”row”;d.innerHTML=render(i);rowEl.appendChild(d);});}
chips();rows();}
side(MODELS,0,doc.getElementById(‘mchips’),doc.getElementById(‘mrows’),operate(m){
return ‘‘+(m[3]?’Imaginative and prescient + PDF’:’Instruments solely’)+’‘;});
side(CONN,0,doc.getElementById(‘cchips’),doc.getElementById(‘crows’),operate(c){
return ‘

‘+c[1]+’

‘+c[0]+’‘;});
var mxb=doc.getElementById(‘mxb’);
MX.forEach(operate(r){var tr=doc.createElement(‘tr’);
tr.innerHTML=’

'+r[0]+'

‘+r.slice(1).map(operate(c){return ‘

‘+c[0]+’

‘}).be part of(”);
mxb.appendChild(tr);});
operate sz(){attempt{mother or father.postMessage({owEmbed:’ow1′,peak:R.offsetHeight+40},’*’)}catch(e){}}
if(window.ResizeObserver)new ResizeObserver(sz).observe(R);
window.addEventListener(‘load’,sz);setTimeout(sz,120);sz();
})();

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments