OpenAI Launches dots: Always-On GPT-6 Astra Agents That Work From Their Own Cloud Computers

by CryptoExpert
aistudios


OpenAI just introduced dots at their DevDay today. Dots are persistent AI agents powered by GPT-6 Astra. Each dot gets its own cloud computer and browser. It works across 4,000+ apps through ChatGPT plugins and keeps going after you log off.

Is it deployable today? Yes, as a managed product. Dots are rolling out in ChatGPT for Pro and Business Premium users in eligible markets. Enterprise, Edu and Healthcare workspaces get a beta once an admin turns it on. There is no self-hosted or open-weights option.

What is a dot

A dot turns ChatGPT from a request and response loop into a standing assignment. You give it a goal, a name and boundaries. It then pursues that goal around the clock and learns from your feedback. Each user starts with 1 primary dot.

To be honest, much of this was already possible with Codex and similar agent harnesses. The change here is packaging: 1 persistent agent, 1 identity, 1 dedicated machine.

synthesia

How a dot works

  • Own computer: Each dot runs on a separate cloud computer with a browser. Your laptop stays isolated unless you connect it. You can open the dot’s computer at any time to inspect its work.
  • Tools: It uses the plugins you connect across 4,000+ apps. It can also start tasks in Codex and ChatGPT Work for research, analysis, documents and software.
  • Surfaces: You can message or call your dot in ChatGPT on web, desktop and mobile. Slack and Teams are supported, and texting is coming soon.
  • Proactive research: When you are not working with it, the dot looks for ways to help. In this background mode, connected apps are read-only, so it cannot send messages or change content.

The model underneath is also important to know. In OpenAI’s latency simulations, GPT-6 Astra scores 72.6% on OSWorld 2.0 at roughly 40 minutes per task. GPT-5.6 Sol scored 65.7% at roughly 75 minutes.

Control and safety layer

  • Built-in rules decide when a dot acts alone and when it asks for approval.
  • Custom Rules let you allow, block or require approval for specific actions.
  • Auto-review checks any action that could affect your accounts or share information.
  • Activity View shows progress, including background work, so you can redirect the dot.
  • Credential handling: Dots sign in with saved passwords without exposing them to the model. Sensitive tasks, such as changing a password, stay with you.
  • Monitoring can pause or stop a dot if it detects a safety concern.

OpenAI details this in a separate safety post. It also states that dots can still make mistakes, so consequential work needs review. The caution is timely. A day before launch, OpenAI team stated that its agents had posted users’ images online, affecting 53 ChatGPT users.

Specialist dots for organizations

OpenAI is also previewing specialist dots. Each gets its own identity, credentials and access to company systems for a fixed role. OpenAI tested them internally across procurement, invoice processing, email marketing, customer support and commercial contracting. Rollout starts with enterprise pilots. OpenAI is working with Microsoft to bring specialist dots to Agent 365.

Pricing and usage limits

The first dot is included in Pro and Business Premium plans at no extra cost. Conversations with a dot do not count toward ChatGPT usage limits. Tasks it starts in Codex or ChatGPT Work do count. OpenAI also added a $500 paid tier the same day. Check the ChatGPT pricing page for current plan limits.

Dots vs Meta Muse vs Instinct: Feature Comparison

FeatureOpenAI dotsMeta MuseInstinctLaunchSep 29, 2026Sep 8, 2026Invite-only since Aug 2026Underlying modelGPT-6 AstraMuse SparkNot disclosedWhere the agent runsOwn cloud computer and browserMuse Secure VM, a dedicated cloud computerOwn computer and phone numberAction gateCustom Rules, auto-review, safety monitorSeparate Sentinel agent approves outbound actionsNo public details foundInterfacesChatGPT web, desktop, mobile; Slack; Teams; texting sooniOS, Android, muse.ai, WhatsAppSMS and texting; no mobile app yetStandout featureRead-only proactive research; 4,000+ appsDeep ties to Meta appsConcierge phone calls; agent-to-agent plans with friendsOrg or team agentsSpecialist dots; Agent 365 work with MicrosoftConsumer launch; Axios reports a shift toward work useConsumer-focused personal assistantAvailabilityPro and Business Premium, eligible marketsUS onlyInvite-onlyPriceIncluded in Pro and Business PremiumFree, $20 or $100 per monthNo public pricing found

The split is clear. Muse chases mass consumer reach. Instinct lives in text messages. Dots start with high-end subscribers, mostly developers.

Interactive explainer: inside a dot’s work loop

<iframe id="mtp-dots-explainer" title="Interactive explainer: how OpenAI dots work" loading="lazy" style="width:100%;height:600px;border:0;display:block;background:#0b0b0c;border-radius:18px;" srcdoc="<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<style>
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:#0b0b0c;}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;color:#f4f4f5;line-height:1.5}
#mtpdots{padding:22px 20px 16px;background:#0b0b0c;border:1px solid #232326;border-radius:18px;max-width:900px;margin:0 auto;position:relative;overflow:hidden}
#mtpdots .glow{position:absolute;border-radius:50%;filter:blur(60px);opacity:.18;pointer-events:none}
#mtpdots .g1{width:220px;height:220px;background:#FFD23F;top:-80px;right:-60px}
#mtpdots .g2{width:200px;height:200px;background:#6CC4FF;bottom:-90px;left:-70px}
#mtpdots h2{font-size:21px;font-weight:700;letter-spacing:-.01em;margin-bottom:4px;position:relative}
#mtpdots .sub{color:#a1a1aa;font-size:14px;margin-bottom:16px;position:relative}
#mtpdots .tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;position:relative}
#mtpdots .tab{background:#151517;border:1px solid #2a2a2e;color:#d4d4d8;font-size:14px;font-weight:600;padding:9px 14px;border-radius:999px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:all .2s}
#mtpdots .tab:hover{border-color:#52525b}
#mtpdots .tab.on{background:#f4f4f5;color:#0b0b0c;border-color:#f4f4f5}
#mtpdots .tab .d{width:9px;height:9px;border-radius:50%}
#mtpdots .panel{display:none;position:relative}
#mtpdots .panel.on{display:block;animation:fadeUp .35s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
#mtpdots .card{background:#141416;border:1px solid #26262a;border-radius:14px;padding:16px}
#mtpdots .label{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#a1a1aa;margin-bottom:8px;font-weight:600}
#mtpdots .chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
#mtpdots .chip{background:#1c1c1f;border:1px solid #2e2e33;color:#e4e4e7;font-size:13.5px;padding:8px 12px;border-radius:10px;cursor:pointer;transition:all .2s}
#mtpdots .chip:hover{border-color:#71717a}
#mtpdots .chip.on{border-color:#FFD23F;background:rgba(255,210,63,.1);color:#FFE27A}
#mtpdots .rules .chip.on[data-r="allow"]{border-color:#7EE0B5;background:rgba(126,224,181,.1);color:#9BF0C9}
#mtpdots .rules .chip.on[data-r="ask"]{border-color:#FFD23F;background:rgba(255,210,63,.1);color:#FFE27A}
#mtpdots .rules .chip.on[data-r="block"]{border-color:#FF8FB1;background:rgba(255,143,177,.1);color:#FFB0C8}
#mtpdots .row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
#mtpdots .btn{background:#FFD23F;color:#111;border:none;font-weight:700;font-size:14px;padding:10px 18px;border-radius:10px;cursor:pointer;transition:transform .15s,opacity .2s}
#mtpdots .btn:hover{transform:translateY(-1px)}
#mtpdots .btn:disabled{opacity:.45;cursor:default;transform:none}
#mtpdots .btn.ghost{background:transparent;color:#f4f4f5;border:1px solid #3f3f46}
#mtpdots .track{position:relative;margin:18px 0 6px;height:92px}
#mtpdots .rail{position:absolute;left:6%;right:6%;top:30px;height:3px;background:#2a2a2e;border-radius:2px}
#mtpdots .fill{position:absolute;left:0;top:0;height:100%;width:0;background:linear-gradient(90deg,#6CC4FF,#FFD23F);border-radius:2px;transition:width .6s ease}
#mtpdots .nodes{position:absolute;left:0;right:0;top:0;display:flex;justify-content:space-between;padding:0 2%}
#mtpdots .node{width:16%;text-align:center}
#mtpdots .nb{width:62px;height:62px;margin:0 auto;border-radius:50%;background:#1c1c1f;border:2px solid #2e2e33;display:flex;align-items:center;justify-content:center;font-size:22px;transition:all .35s;position:relative;z-index:2}
#mtpdots .node.lit .nb{border-color:#FFD23F;background:#231f10;box-shadow:0 0 0 6px rgba(255,210,63,.12)}
#mtpdots .node.bad .nb{border-color:#FF8FB1;background:#2a141b;box-shadow:0 0 0 6px rgba(255,143,177,.12)}
#mtpdots .node.good .nb{border-color:#7EE0B5;background:#10241c;box-shadow:0 0 0 6px rgba(126,224,181,.12)}
#mtpdots .nl{font-size:12px;color:#a1a1aa;margin-top:6px;font-weight:600}
#mtpdots .node.lit .nl,#mtpdots .node.good .nl,#mtpdots .node.bad .nl{color:#f4f4f5}
#mtpdots .runner{position:absolute;top:18px;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#FFF3B0,#FFD23F 55%,#E0A800);box-shadow:0 0 18px rgba(255,210,63,.7);z-index:3;left:calc(2% + 8% – 13px);transition:left .6s cubic-bezier(.5,.1,.3,1);opacity:0}
#mtpdots .runner.show{opacity:1}
#mtpdots .runner::after{content:"";position:absolute;left:7px;top:9px;width:4px;height:5px;background:#111;border-radius:2px;box-shadow:8px 0 0 #111}
#mtpdots .log{background:#0e0e10;border:1px solid #232326;border-radius:12px;padding:12px 14px;min-height:112px;font-size:13.5px;color:#d4d4d8;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
#mtpdots .log p{margin:3px 0;animation:fadeUp .3s ease}
#mtpdots .log .k{color:#6CC4FF}
#mtpdots .log .w{color:#FFE27A}
#mtpdots .log .x{color:#FFB0C8}
#mtpdots .log .ok{color:#9BF0C9}
#mtpdots .approve{display:none;gap:8px;margin-top:10px}
#mtpdots .approve.show{display:flex}
#mtpdots .note{font-size:12.5px;color:#a1a1aa;margin-top:10px}
/* away mode */
#mtpdots .toggle{display:flex;background:#1c1c1f;border:1px solid #2e2e33;border-radius:12px;padding:4px;width:max-content;margin-bottom:14px}
#mtpdots .toggle button{background:transparent;border:none;color:#a1a1aa;font-weight:600;font-size:13.5px;padding:8px 14px;border-radius:9px;cursor:pointer}
#mtpdots .toggle button.on{background:#f4f4f5;color:#0b0b0c}
#mtpdots .stage{position:relative;height:250px;border-radius:14px;background:radial-gradient(circle at 50% 50%,#17171a,#0e0e10);border:1px solid #232326;overflow:hidden}
#mtpdots .center{position:absolute;left:50%;top:50%;width:70px;height:70px;margin:-35px 0 0 -35px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#FFF3B0,#FFD23F 55%,#E0A800);box-shadow:0 0 30px rgba(255,210,63,.55);animation:bob 3s ease-in-out infinite;z-index:3}
#mtpdots .center::after{content:"";position:absolute;left:22px;top:26px;width:6px;height:9px;background:#111;border-radius:3px;box-shadow:18px 0 0 #111;animation:blink 4s infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
#mtpdots .center.sleep{animation:bob 5s ease-in-out infinite;filter:saturate(.7)}
#mtpdots .app{position:absolute;width:92px;text-align:center;font-size:12px;color:#d4d4d8;z-index:2;transition:all .4s}
#mtpdots .app .ic{width:46px;height:46px;border-radius:13px;margin:0 auto 5px;background:#1c1c1f;border:1px solid #2e2e33;display:flex;align-items:center;justify-content:center;font-size:20px;position:relative;transition:all .4s}
#mtpdots .app .lock{position:absolute;right:-7px;top:-7px;background:#FF8FB1;color:#111;font-size:10px;font-weight:800;border-radius:6px;padding:1px 4px;opacity:0;transform:scale(.6);transition:all .3s}
#mtpdots .away .app .lock{opacity:1;transform:scale(1)}
#mtpdots .app.scan .ic{border-color:#6CC4FF;box-shadow:0 0 0 5px rgba(108,196,255,.15)}
#mtpdots .ray{position:absolute;left:50%;top:50%;height:2px;background:linear-gradient(90deg,rgba(108,196,255,.9),rgba(108,196,255,0));transform-origin:0 50%;z-index:1;opacity:0;transition:opacity .3s}
#mtpdots .ray.on{opacity:1}
#mtpdots .ideas{margin-top:12px;display:grid;gap:8px}
#mtpdots .idea{background:#141416;border:1px solid #26262a;border-left:3px solid #6CC4FF;border-radius:10px;padding:9px 12px;font-size:13.5px;animation:fadeUp .35s ease}
#mtpdots .idea b{color:#FFE27A}
#mtpdots .try{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
/* where it lives */
#mtpdots .lives{display:grid;grid-template-columns:1fr 120px 1fr;gap:0;align-items:center}
#mtpdots .box{background:#141416;border:1px solid #26262a;border-radius:14px;padding:14px;min-height:170px}
#mtpdots .box h4{font-size:14px;margin-bottom:8px}
#mtpdots .box .scr{background:#0e0e10;border:1px solid #232326;border-radius:9px;height:86px;position:relative;overflow:hidden}
#mtpdots .cursor{position:absolute;width:10px;height:10px;border-radius:50%;background:#FFD23F;box-shadow:0 0 10px #FFD23F;animation:wander 6s ease-in-out infinite}
@keyframes wander{0%{left:10%;top:20%}25%{left:70%;top:30%}50%{left:55%;top:70%}75%{left:20%;top:60%}100%{left:10%;top:20%}}
#mtpdots .tbar{height:14px;background:#1c1c1f;border-bottom:1px solid #26262a;display:flex;gap:4px;padding:4px 6px}
#mtpdots .tbar i{width:6px;height:6px;border-radius:50%;background:#3f3f46;display:block}
#mtpdots .bline{height:6px;border-radius:3px;background:#26262a;margin:8px 10px 0}
#mtpdots .bridge{position:relative;height:40px}
#mtpdots .bridge .wire{position:absolute;left:6px;right:6px;top:19px;height:2px;background:repeating-linear-gradient(90deg,#3f3f46 0 6px,transparent 6px 12px)}
#mtpdots .bridge.on .wire{background:repeating-linear-gradient(90deg,#FFD23F 0 6px,transparent 6px 12px);animation:flow .8s linear infinite}
@keyframes flow{from{background-position:0 0}to{background-position:24px 0}}
#mtpdots .bridge .tag{position:absolute;left:0;right:0;top:-6px;text-align:center;font-size:11px;color:#a1a1aa;font-weight:600}
#mtpdots .bridge.on .tag{color:#FFE27A}
#mtpdots .surf{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
#mtpdots .s{font-size:13px;padding:7px 11px;border-radius:999px;border:1px solid #2e2e33;background:#1c1c1f;display:flex;align-items:center;gap:7px;animation:pop .5s ease backwards}
#mtpdots .s i{width:8px;height:8px;border-radius:50%;display:block}
#mtpdots .s.soon{opacity:.55;border-style:dashed}
@keyframes pop{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}
#mtpdots .vault{margin-top:14px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;align-items:center;text-align:center;font-size:12.5px}
#mtpdots .vb{background:#141416;border:1px solid #26262a;border-radius:12px;padding:10px 6px}
#mtpdots .vb.model{border-color:#FF8FB1}
#mtpdots .vb .e{font-size:20px;display:block;margin-bottom:3px}
#mtpdots .keyfly{position:relative;height:0}
#mtpdots .foot{margin-top:16px;padding-top:12px;border-top:1px solid #232326;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:12px;color:#71717a}
#mtpdots .foot a{color:#a1a1aa;text-decoration:underline}
#mtpdots .brand{color:#76B900;font-weight:700}
@media (max-width:640px){
#mtpdots{padding:18px 14px 14px}
#mtpdots h2{font-size:18px}
#mtpdots .row2{grid-template-columns:1fr}
#mtpdots .nb{width:44px;height:44px;font-size:17px}
#mtpdots .rail{top:21px}
#mtpdots .runner{top:9px}
#mtpdots .nl{font-size:10.5px}
#mtpdots .lives{grid-template-columns:1fr}
#mtpdots .bridge{height:46px}
#mtpdots .bridge .wire{left:50%;right:auto;top:4px;bottom:4px;width:2px;height:auto;background:repeating-linear-gradient(180deg,#3f3f46 0 6px,transparent 6px 12px)}
#mtpdots .bridge.on .wire{background:repeating-linear-gradient(180deg,#FFD23F 0 6px,transparent 6px 12px)}
#mtpdots .bridge .tag{top:14px;left:56%;text-align:left}
#mtpdots .app{width:74px;font-size:11px}
}
@media (prefers-reduced-motion:reduce){#mtpdots *{animation:none!important;transition:none!important}}
</style></head><body>
<div id="mtpdots">
<div class="glow g1"></div><div class="glow g2"></div>
<h2>Inside an OpenAI dot</h2>
<p class="sub">Run a task, send your dot into background mode, and see where it actually lives.</p>
<div class="tabs">
<button class="tab on" data-t="p1"><span class="d" style="background:#FFD23F"></span>1. Run a task</button>
<button class="tab" data-t="p2"><span class="d" style="background:#6CC4FF"></span>2. Always-on mode</button>
<button class="tab" data-t="p3"><span class="d" style="background:#FF8FB1"></span>3. Where it lives</button>
</div>

<!– PANEL 1 –>
<div class="panel on" id="p1">
<div class="card">
<div class="row2">
<div>
<div class="label">Pick a goal</div>
<div class="chips" id="goals">
<button class="chip on" data-g="0">Book a dinner table</button>
<button class="chip" data-g="1">Send a forgotten invoice</button>
<button class="chip" data-g="2">Fix bugs from user feedback</button>
<button class="chip" data-g="3">Change an account password</button>
</div>
</div>
<div class="rules">
<div class="label">Your Custom Rule for the final action</div>
<div class="chips" id="rules">
<button class="chip" data-r="allow">Allow</button>
<button class="chip on" data-r="ask">Ask first</button>
<button class="chip" data-r="block">Block</button>
</div>
</div>
</div>
<button class="btn" id="run">Run my dot</button>
<div class="track">
<div class="rail"><div class="fill" id="fill"></div></div>
<div class="runner" id="runner"></div>
<div class="nodes" id="nodes">
<div class="node"><div class="nb"></div><div class="nl">Goal</div></div>
<div class="node"><div class="nb">🖥</div><div class="nl">Cloud computer</div></div>
<div class="node"><div class="nb">🔌</div><div class="nl">Apps via plugins</div></div>
<div class="node"><div class="nb">🛡</div><div class="nl">Auto-review</div></div>
<div class="node"><div class="nb">🏁</div><div class="nl">Outcome</div></div>
</div>
</div>
<div class="log" id="log"><p style="color:#71717a">Choose a goal and a rule, then press Run.</p></div>
<div class="approve" id="approve"><button class="btn" id="ok">Approve</button><button class="btn ghost" id="no">Decline</button></div>
<p class="note">Illustrative simulation of the flow OpenAI describes. Task examples come from OpenAI’s launch materials.</p>
</div>
</div>

<!– PANEL 2 –>
<div class="panel" id="p2">
<div class="card">
<div class="toggle" id="mode"><button class="on" data-m="here">You’re working with it</button><button data-m="away">You’re away</button></div>
<div class="stage" id="stage">
<div class="center" id="bigdot"></div>
</div>
<div class="try" id="tries">
<button class="chip" data-a="read">Read new email</button>
<button class="chip" data-a="send">Send a reply</button>
<button class="chip" data-a="edit">Edit a shared doc</button>
</div>
<div class="ideas" id="ideas"></div>
<p class="note">In background "proactive research," OpenAI says connected apps are read-only. The dot can look, but it cannot send messages or change content.</p>
</div>
</div>

<!– PANEL 3 –>
<div class="panel" id="p3">
<div class="card">
<div class="lives">
<div class="box"><h4>💻 Your computer</h4><div class="scr"><div class="tbar"><i></i><i></i><i></i></div><div class="bline" style="width:60%"></div><div class="bline" style="width:40%"></div></div><p class="note">Stays separate by default.</p></div>
<div class="bridge" id="bridge"><div class="tag" id="btag">Not connected</div><div class="wire"></div></div>
<div class="box" style="border-color:#3a3316"><h4>☁ Your dot’s cloud computer</h4><div class="scr"><div class="tbar"><i></i><i></i><i></i></div><div class="bline" style="width:70%"></div><div class="bline" style="width:50%"></div><div class="cursor"></div></div><p class="note">Own browser. Open it anytime to check its work.</p></div>
</div>
<div style="margin-top:12px"><button class="btn ghost" id="connect">Connect my laptop</button></div>
<div class="label" style="margin-top:16px">Talk to your dot from</div>
<div class="surf" id="surf"></div>
<div class="label" style="margin-top:16px">How sign-ins work</div>
<div class="vault">
<div class="vb"><span class="e">🔑</span>Saved password</div>
<div class="vb model"><span class="e">🧠</span>Model never sees it</div>
<div class="vb"><span class="e">🌐</span>Supported website</div>
</div>
<p class="note">Sensitive tasks such as changing a password always stay with you.</p>
</div>
</div>

<div class="foot">
<span>Sources: <a href="https://openai.com/index/introducing-dots/" target="_blank" rel="noopener">OpenAI</a>, <a href="https://thenextweb.com/news/openai-dots-always-on-ai-agents-cloud-computers-devday" target="_blank" rel="noopener">TNW</a>. Colors approximate the dots launch visuals.</span>
<span class="brand">Built by Marktechpost</span>
</div>
</div>

<script>
(function(){
var root=document.getElementById(‘mtpdots’);
function post(){try{parent.postMessage({type:’mtp-dots-resize’,height:root.offsetHeight+40},’*’)}catch(e){}}
window.addEventListener(‘load’,post);window.addEventListener(‘resize’,post);
if(window.ResizeObserver){new ResizeObserver(post).observe(root)}
setTimeout(post,300);

/* tabs */
var tabs=root.querySelectorAll(‘.tab’);
tabs.forEach(function(t){t.addEventListener(‘click’,function(){
tabs.forEach(function(x){x.classList.remove(‘on’)});t.classList.add(‘on’);
root.querySelectorAll(‘.panel’).forEach(function(p){p.classList.remove(‘on’)});
document.getElementById(t.getAttribute(‘data-t’)).classList.add(‘on’);
if(t.getAttribute(‘data-t’)===’p3′)buildSurf();
post();
})});

/* panel 1 */
var goals=[
{n:’Book a dinner table’,plan:’Find a restaurant that fits your calendar’,apps:’Calendar + a booking site’,act:’Confirm the reservation’},
{n:’Send a forgotten invoice’,plan:’Spot the unpaid job in your records’,apps:’Email + invoicing tool’,act:’Send the invoice’},
{n:’Fix bugs from user feedback’,plan:’Group feedback and reproduce the bug’,apps:’Feedback inbox + Codex’,act:’Ship the fix’},
{n:’Change an account password’,plan:’Open the account settings page’,apps:’Account site’,act:’Change the password’,sensitive:true}
];
var g=0,r=”ask”,busy=false;
function pick(box,attr,cb){box.querySelectorAll(‘.chip’).forEach(function(c){c.addEventListener(‘click’,function(){
if(busy)return;box.querySelectorAll(‘.chip’).forEach(function(x){x.classList.remove(‘on’)});c.classList.add(‘on’);cb(c.getAttribute(attr));})})}
pick(document.getElementById(‘goals’),’data-g’,function(v){g=+v});
pick(document.getElementById(‘rules’),’data-r’,function(v){r=v});
var nodes=[].slice.call(document.querySelectorAll(‘#nodes .node’));
var runner=document.getElementById(‘runner’),fill=document.getElementById(‘fill’),log=document.getElementById(‘log’);
var appr=document.getElementById(‘approve’),runBtn=document.getElementById(‘run’);
function line(cls,txt){var p=document.createElement(‘p’);p.className=cls;p.textContent=txt;log.appendChild(p);post()}
function moveTo(i){var n=nodes[i];var rect=n.getBoundingClientRect(),tr=n.parentNode.parentNode.getBoundingClientRect();
runner.style.left=(rect.left-tr.left+rect.width/2-13)+’px’;fill.style.width=(i/(nodes.length-1)*100)+’%’;}
function reset(){nodes.forEach(function(n){n.className=”node”});fill.style.width=”0″;log.innerHTML=”;appr.classList.remove(‘show’);runner.classList.remove(‘show’)}
function finish(state,msg,cls){var last=nodes[4];last.classList.remove(‘lit’);last.classList.add(state);line(cls,msg);busy=false;runBtn.disabled=false;runBtn.textContent=”Run again”}
runBtn.addEventListener(‘click’,function(){
if(busy)return;busy=true;runBtn.disabled=true;reset();var G=goals[g];
var steps=[
function(){line(‘k’,’> goal: "’+G.n+’"’)},
function(){line(”,’ booting its own cloud computer + browser’);line(”,’ plan: ‘+G.plan.toLowerCase())},
function(){line(”,’ using connected plugins: ‘+G.apps)},
function(){line(‘w’,’ auto-review: "’+G.act+’" affects your accounts’)}
];
runner.classList.add(‘show’);var i=0;
(function step(){
if(i<4){moveTo(i);nodes[i].classList.add(‘lit’);steps[i]();i++;setTimeout(step,900);return}
moveTo(4);nodes[4].classList.add(‘lit’);
setTimeout(function(){
if(G.sensitive){finish(‘bad’,’x Sensitive task. Password changes always stay with you, whatever the rule.’,’x’);return}
if(r===’block’){finish(‘bad’,’x Blocked by your Custom Rule. Nothing was sent.’,’x’);return}
if(r===’allow’){finish(‘good’,’✓ Allowed by your rule. Done: ‘+G.act.toLowerCase()+’.’,’ok’);return}
line(‘w’,’? Waiting for your approval. Track it in Activity View.’);appr.classList.add(‘show’);post();
},700);
})();
});
document.getElementById(‘ok’).addEventListener(‘click’,function(){appr.classList.remove(‘show’);finish(‘good’,’✓ You approved. Done: ‘+goals[g].act.toLowerCase()+’.’,’ok’)});
document.getElementById(‘no’).addEventListener(‘click’,function(){appr.classList.remove(‘show’);finish(‘bad’,’x You declined. The dot stops and waits.’,’x’)});

/* panel 2 */
var stage=document.getElementById(‘stage’),big=document.getElementById(‘bigdot’),ideas=document.getElementById(‘ideas’);
var apps=[{e:’✉‘,n:’Email’},{e:’📅‘,n:’Calendar’},{e:’💬‘,n:’Slack’},{e:’📄‘,n:’Docs’},{e:’🧾‘,n:’Invoices’},{e:’🐙‘,n:’Code repo’}];
var appEls=[],rays=[];
function layout(){
var W=stage.clientWidth,H=stage.clientHeight,cx=W/2,cy=H/2,rx=Math.min(W*0.38,300),ry=H*0.30;
apps.forEach(function(a,i){var ang=(i/apps.length)*Math.PI*2-Math.PI/2;var x=cx+rx*Math.cos(ang),y=cy+ry*Math.sin(ang);
var el=appEls[i];el.style.left=(x-el.offsetWidth/2)+’px’;el.style.top=(y-30)+’px’;
var ray=rays[i];var dx=x-cx,dy=y-cy;ray.style.width=Math.max(Math.sqrt(dx*dx+dy*dy)-30,0)+’px’;ray.style.transform=’rotate(‘+Math.atan2(dy,dx)+’rad)’;});
}
apps.forEach(function(a){var ray=document.createElement(‘div’);ray.className=”ray”;stage.appendChild(ray);rays.push(ray);
var el=document.createElement(‘div’);el.className=”app”;el.innerHTML='<div class="ic">’+a.e+'<span class="lock">READ</span></div>’+a.n;stage.appendChild(el);appEls.push(el)});
var away=false,scanT=null,idx=0;
var sugg=[‘<b>Heads up:</b> a client invoice from last month was never sent. Draft ready for approval.’,'<b>Prep:</b> 2 meetings tomorrow overlap. Suggested a new slot.’,'<b>Found:</b> 3 user reports mention the same checkout bug.’];
function scan(){appEls.forEach(function(e){e.classList.remove(‘scan’)});rays.forEach(function(x){x.classList.remove(‘on’)});
var k=idx%apps.length;appEls[k].classList.add(‘scan’);rays[k].classList.add(‘on’);
if(idx%2===1&&ideas.children.length<3){var d=document.createElement(‘div’);d.className=”idea”;d.innerHTML=sugg[ideas.children.length];ideas.appendChild(d);post()}
idx++;}
function setMode(m){away=(m===’away’);stage.classList.toggle(‘away’,away);big.classList.toggle(‘sleep’,!away);
document.querySelectorAll(‘#mode button’).forEach(function(b){b.classList.toggle(‘on’,b.getAttribute(‘data-m’)===m)});
clearInterval(scanT);appEls.forEach(function(e){e.classList.remove(‘scan’)});rays.forEach(function(x){x.classList.remove(‘on’)});
if(away){ideas.innerHTML=”;idx=0;scan();scanT=setInterval(scan,1100)}else{ideas.innerHTML='<div class="idea" style="border-left-color:#FFD23F">You are here, so the dot acts on direct requests, within your rules.</div>’}
post();}
document.querySelectorAll(‘#mode button’).forEach(function(b){b.addEventListener(‘click’,function(){setMode(b.getAttribute(‘data-m’))})});
document.querySelectorAll(‘#tries .chip’).forEach(function(c){c.addEventListener(‘click’,function(){
var a=c.getAttribute(‘data-a’),d=document.createElement(‘div’);d.className=”idea”;
if(!away){d.style.borderLeftColor=”#7EE0B5″;d.innerHTML=a===’read’?’✓ Reads your new email.’:’✓ Allowed while you are working with it, subject to your Custom Rules and auto-review.’}
else if(a===’read’){d.style.borderLeftColor=”#7EE0B5″;d.innerHTML=’✓ Background mode can read connected apps.’}
else{d.style.borderLeftColor=”#FF8FB1″;d.innerHTML='<b style="color:#FFB0C8">Read-only:</b> in background mode the dot cannot ‘+(a===’send’?’send messages’:’change content’)+’.’}
ideas.appendChild(d);while(ideas.children.length>5)ideas.removeChild(ideas.firstChild);post();})});

/* panel 3 */
var surfs=[[‘ChatGPT web’,’#FFD23F’],[‘ChatGPT desktop’,’#FFD23F’],[‘ChatGPT mobile’,’#FFD23F’],[‘Slack’,’#6CC4FF’],[‘Microsoft Teams’,’#6CC4FF’],[‘Texting (soon)’,’#FF8FB1′,1]];
function buildSurf(){var s=document.getElementById(‘surf’);s.innerHTML=”;surfs.forEach(function(x,i){var e=document.createElement(‘span’);e.className=”s”+(x[2]?’ soon’:”);e.style.animationDelay=(i*0.08)+’s’;e.innerHTML='<i style="background:’+x[1]+’"></i>’+x[0];s.appendChild(e)});post()}
var conn=false;document.getElementById(‘connect’).addEventListener(‘click’,function(){conn=!conn;
document.getElementById(‘bridge’).classList.toggle(‘on’,conn);document.getElementById(‘btag’).textContent=conn?’Connected by you’:’Not connected’;
this.textContent=conn?’Disconnect my laptop’:’Connect my laptop’});

buildSurf();setMode(‘here’);
function relayout(){if(stage.clientWidth)layout()}
window.addEventListener(‘resize’,relayout);
new MutationObserver(relayout).observe(document.getElementById(‘p2’),{attributes:true});
setTimeout(relayout,50);
})();
</script>
</body></html>
“>

(function(){var f=document.getElementById(‘mtp-dots-explainer’);
window.addEventListener(‘message’,function(e){if(!f||e.source!==f.contentWindow)return;var d=e.data||{};
if(d.type===’mtp-dots-resize’&&d.height>200){f.style.height=Math.ceil(d.height)+’px’;}});})();

Key Takeaways

  • Dots are always-on GPT-6 Astra agents, each on its own cloud computer.
  • They reach 4,000+ apps, but background work stays read-only.
  • Custom Rules, auto-review and a safety monitor gate risky actions.
  • Specialist dots start as enterprise pilots, with Microsoft Agent 365 support in progress.
  • Available now for Pro and Business Premium; no self-hosting.

Check out the Technical details. All credit goes to the researcher of this project. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.

Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.? Connect with us

The post OpenAI Launches dots: Always-On GPT-6 Astra Agents That Work From Their Own Cloud Computers appeared first on MarkTechPost.



Source link

notion

You may also like