Prime Intellect has open-sourced Prime Agent, a self-improving coding harness designed around two abstractions, the Recursive Language Model (RLM) and Continual Harness. Fixed tool schemas and context compaction force a model to work around its own scaffolding. Prime Agent replaces both with a persistent Python REPL and a rewritable harness. With Opus 5, it reports 95.5% on ARC-AGI-3, above the reported human expert baseline of 95.4%. It is MIT-licensed.
Is it deployable
Yes, today. Prime Agent installs on Linux or macOS with one command. It runs on subscription logins (Codex, Claude Pro/Max, GitHub Copilot), API keys (Anthropic, OpenAI, Google, Groq, Fireworks, Prime Inference, and others), Azure OpenAI, Amazon Bedrock, and self-hosted vLLM, Ollama, or LM Studio endpoints. Self-hosting an open-weights model such as GLM-5.2 keeps code inside your own network.
- Company level: Best fit is mid-size to large engineering orgs and AI labs that already run isolated CI containers. Prime Intellect states plainly that worker and kernel processes are not a security sandbox. Deployment therefore needs disposable clones or restricted environments. Solo developers can install it, but the payoff appears on multi-hour tasks.
- Industries: Developer tooling, semiconductor and HPC teams writing GPU kernels, simulation and gaming, quantitative research, and AI research labs.
- Applications: Overnight refactors behind a test gate, spec-driven builds from scratch, kernel optimization, long-horizon agent evaluation, and autoresearch.
What Prime Intellect shipped
Prime Agent is built on two abstractions. The Recursive Language Model (RLM) treats context as a variable and sub-agent delegation as function calls inside a REPL. The Continual Harness treats prompts, sub-agents, skills, and memory as state the agent can create, read, update, and delete from its own trajectory. Both papers have Prime Agent authors on them. The TUI is built on pi.
/* ———- pane 2: harness ———- */
var counts = {p:0,g:0,k:0,m:0}, history = [];
var WRITES = {
p: [‘create_prompt_note(“check the workspace diff before every gate rerun”)’],
g: [‘create_subagent(“auth-reviewer”, spec=”read-only review of auth/ changes”)’],
k: [‘create_skill(“retry helper”, reference={“type”:”python”,”import”:”retry_helper”})’],
m: [‘create_memory(“flaky test pattern”, “retry three times before failing”)’]
};
var NAMES = {p:’u03C1 prompt’, g:’G sub-agents’, k:’K skills’, m:’M memory’};
var hlog = document.getElementById(‘hlog’);
function logLine(html){
var d = document.createElement(‘div’); d.innerHTML = html;
hlog.appendChild(d);
while(hlog.children.length > 6) hlog.removeChild(hlog.firstChild);
ping();
}
function bump(kind, text, viaRefine){
counts[kind]++;
document.querySelector(‘[data-c=”‘+kind+'”]’).textContent = counts[kind] + (counts[kind]===1?’ entry’:’ entries’);
var card = document.querySelector(‘.hcard[data-h=”‘+kind+'”]’);
card.classList.remove(‘hit’); void card.offsetWidth; card.classList.add(‘hit’);
history.push(kind);
logLine(‘‘+(viaRefine?’/refine’:’rlm.harness’)+’ ‘+text+’ ✓ written to ‘+NAMES[kind]+’‘);
}
document.querySelectorAll(‘.hcard’).forEach(function(c){
c.addEventListener(‘click’, function(){ var k = c.getAttribute(‘data-h’); bump(k, WRITES[k][0], false); });
});
var REFINES = [
{k:’m’, t:’trigger: same test failed twice → smallest edit: add memory’},
{k:’k’, t:’trigger: retry pattern reused 3× → promote to skill’},
{k:’p’, t:’trigger: gate rerun on unchanged workspace → add prompt note’},
{k:’g’, t:’trigger: repeated review sub-task → save sub-agent spec’}
];
var ri = 0;
document.getElementById(‘refineBtn’).addEventListener(‘click’, function(){
var r = REFINES[ri % REFINES.length]; ri++;
logLine(‘/refine planning in background … conversation not blocked’);
later(function(){ bump(r.k, r.t, true); }, reduce ? 80 : 850);
});
document.getElementById(‘rollbackBtn’).addEventListener(‘click’, function(){
var k = history.pop();
if(!k){ logLine(‘rollback nothing to revert’); return; }
counts[k]–;
document.querySelector(‘[data-c=”‘+k+'”]’).textContent = counts[k] + (counts[k]===1?’ entry’:’ entries’);
logLine(‘rollback reverted last edit to ‘+NAMES[k]+’ by id — base system prompt untouched’);
});
/* ———- pane 3: evals ———- */
var drawn = false;
function drawBars(){
if(drawn) return; drawn = true;
document.querySelectorAll(‘#bars .fill’).forEach(function(f, i){
later(function(){ f.style.width = f.getAttribute(‘data-w’) + ‘%’; }, reduce ? 0 : 120 * i);
});
}
var DATA = {
glm: {rival:’Pi-mono (w/ sub-agents)’, rows:[
[‘OOLONG (yahoo, 128k)’, 0.700, 0.420],
[‘OOLONG-Pairs’, 0.874, 0.556],
[‘OBLIQ-Bench (math)’, 0.669, 0.635],
[‘LongBenchPro (English)’, 0.777, 0.768],
[‘LongBenchv2’, 0.680, 0.696],
[‘ManyIH Coding’, 0.424, 0.386],
[‘ManyIH IF’, 0.209, 0.164],
[‘LongCot-Mini’, 0.638, 0.613],
[‘EmulatorBench’, 0.208, 0.000]
]},
opus: {rival:’Claude Code’, rows:[
[‘OOLONG (yahoo, 128k)’, 0.900, 0.920],
[‘OOLONG-Pairs’, 0.929, 0.922],
[‘OBLIQ-Bench (math)’, 0.802, 0.795],
[‘LongBenchPro (English)’, 0.804, 0.790],
[‘LongBenchv2’, 0.744, 0.746],
[‘ManyIH Coding’, 0.536, 0.522],
[‘ManyIH IF’, 0.225, 0.175],
[‘LongCot-Mini’, 0.722, 0.558],
[‘EmulatorBench*’, 0.047, 0.062]
]},
gpt: {rival:’Codex’, rows:[
[‘OOLONG (yahoo, 128k)’, 0.940, 0.500],
[‘OOLONG-Pairs’, 0.911, 0.895],
[‘OBLIQ-Bench (math)’, 0.612, 0.646],
[‘LongBenchPro (English)’, 0.794, 0.790],
[‘LongBenchv2’, 0.714, 0.704],
[‘ManyIH Coding’, 0.499, 0.454],
[‘ManyIH IF’, 0.216, 0.232],
[‘LongCot-Mini’, 0.671, 0.681],
[‘EmulatorBench’, 0.275, 0.228]
]}
};
function fmt(v){ return v.toFixed(3); }
function renderTable(key){
var d = DATA[key], tb = document.getElementById(‘tbody’);
document.getElementById(‘rivalHead’).textContent = d.rival;
tb.innerHTML = d.rows.map(function(r){
var aWin = r[1] > r[2], bWin = r[2] > r[1];
return ‘
‘+
‘
‘+
‘
‘;
}).join(”);
ping();
}
document.querySelectorAll(‘.seg button’).forEach(function(b){
b.addEventListener(‘click’, function(){
document.querySelectorAll(‘.seg button’).forEach(function(x){ x.setAttribute(‘aria-pressed’,’false’); });
b.setAttribute(‘aria-pressed’,’true’);
renderTable(b.getAttribute(‘data-m’));
});
});
renderTable(‘glm’);
/* ———- pane 4: autonomous ———- */
var steps = [].slice.call(document.querySelectorAll(‘.step’));
var turns = 0;
function clearSteps(){ steps.forEach(function(s){ s.className=”step”; }); }
function setBudget(t){
turns = t;
document.getElementById(‘bvTurns’).textContent = t + ‘ / 20’;
document.getElementById(‘bpTurns’).style.width = (t/20*100) + ‘%’;
document.getElementById(‘bpTok’).style.width = Math.min(t*9, 100) + ‘%’;
document.getElementById(‘bpTime’).style.width = Math.min(t*7, 100) + ‘%’;
}
function runLoop(){
clearTimers(); clearSteps(); setBudget(0);
var seq = [
[0,’on’,0], [1,’on’,1], [2,’on’,2], [3,’fail’,3],
[1,’on’,4], [2,’on’,5], [4,’pass’,6]
];
seq.forEach(function(s, i){
later(function(){
clearSteps();
steps[s[0]].className=”step ” + s[1];
if(s[0] === 1) setBudget(turns + 1);
if(s[1] === ‘fail’) document.getElementById(‘bvTok’).textContent=”gate output returned”;
if(s[1] === ‘pass’){ document.getElementById(‘bvTok’).textContent=”within budget”; }
}, reduce ? i*60 : i*900);
});
}
document.getElementById(‘runLoop’).addEventListener(‘click’, runLoop);
document.getElementById(‘stopLoop’).addEventListener(‘click’, function(){ clearTimers(); clearSteps(); setBudget(0); document.getElementById(‘bvTok’).textContent=”bounded”; });
ping();
})();


