Factory has released Droid 1.0, the largest update yet to the Factory Droid agent harness. The main change is programmatic tool calling, now on by default. The model writes a program that runs its tools. One model request can now drive hundreds of tool calls.
TL;DR
- Size: Base prompt is 13,055 input tokens, down 37% from 20,887. Only 2 tool definitions ship up front, down from 11.
- Runs on: macOS and Windows desktop app, a terminal UI, and the Node SDK
@factory/droid-sdk. Works with any supported model, including your own API keys. - Performance: Highest pass rate of every harness Factory tested, on the same model, at lower cost.
- Best: 65.2% on Terminal-Bench 4 with Claude Opus 5.5, at $4.73 per passed task (self-reported).
- Worst: With GPT-6.1 Sol, Droid takes 10% longer per passed task than Codex.
What is Droid 1.0?
Droid 1.0 is a model-independent coding agent harness from Factory. Factory defines a harness as everything around the model. That means the prompts, the tools, how tool results return, and the loop. Users pick a model or let Factory Router choose a cost-efficient mix.
In a standard loop, every tool output lands in the model’s context. With programmatic tool calling (PTC), the model writes a program instead. Droid implements this as a Script tool. The model writes JavaScript that runs in a sandbox. The sandbox has no file, network, or system access of its own.
Raw files, search results, and logs stay inside the program. Only printed output returns to the model. Independent calls run concurrently.
The idea builds on CodeAct (Wang et al., 2024). Factory reports these results from its own sessions:
- Unit test fix: 15 tool calls took 5 model calls instead of 10. The task finished in 41.6 s instead of 56.8 s.
- Linear cleanup: 151 issues moved and verified in 312 tool calls. The Script used 2 requests and about 61,000 tokens. Factory models direct calls at 36 requests and about 3.1M tokens.
- CI sweep: 5,384 jobs across 547 runs, in 2 requests. Under 0.1% of tool results reached the model’s context.
On Claude Opus 5.5, Script mode cuts Droid’s cost by 15% versus direct tool calling. It is on by default for 10 models, including GPT-6.1 Sol and Kimi K3.
‘});var b=document.getElementById(‘fdxBars’);b.innerHTML=h;document.getElementById(‘fdxCost’).textContent=D[k].c;setTimeout(function(){b.querySelectorAll(‘.fill’).forEach(function(f){f.style.width=f.dataset.w+’%’})},40);rs()}
W.querySelectorAll(‘.seg button’).forEach(function(b){b.onclick=function(){W.querySelectorAll(‘.seg button’).forEach(function(x){x.classList.remove(‘on’)});b.classList.add(‘on’);bars(b.dataset.m)}});
/* linear */
function cnt(el,to,fmt,ms){var s=null;function f(ts){if(!s)s=ts;var p=Math.min((ts-s)/ms,1);el.textContent=fmt(to*p);if(p<1)requestAnimationFrame(f)}requestAnimationFrame(f)}
document.getElementById(‘fdxLin’).onclick=function(){cnt(document.getElementById(‘lA’),36,function(v){return Math.round(v)},1100);cnt(document.getElementById(‘lB’),2,function(v){return Math.round(v)},600);cnt(document.getElementById(‘lAt’),3.1,function(v){return ‘~’+v.toFixed(1)+’M’},1100);cnt(document.getElementById(‘lBt’),61,function(v){return ‘~’+Math.round(v)+’K’},600);document.getElementById(‘lAb’).style.width=”100%”;document.getElementById(‘lBb’).style.width=(61/3100*100).toFixed(2)+’%’};
W.querySelectorAll(‘.cd’).forEach(function(c){c.onclick=function(){c.classList.toggle(‘open’);setTimeout(rs,380)}});
bars(‘opus’);window.addEventListener(‘load’,rs);window.addEventListener(‘resize’,rs);setTimeout(rs,300);
})();
