The OpenAI Dots post covered always-on coworkers. Now an implementation exists to take apart. CopilotKit OpenDots. An MIT-licensed template released September 29 for building persistent AI coworkers yourself.

Why it matters: past watching products, you can analyze in code how persistent agent workspaces actually compose.

What is inside: 1 computer per Dot

1 Dot = 1 role + 1 permission set + 1 computer
|- isolated browser and workspace (survive stop and start)
|- conversations held across Web, voice, and Slack
|- background jobs plus human approvals handled
+- AG-UI, durable Threads, Channels SDK, tool permission structures

Thousands of GitHub stars, MIT, cloneable to self-host. Dot browser profiles and files persist on OpenBot's container supervisor and computer service. The Computer panel shows browser control, human takeover, files, terminal output, and activity. Service credentials stay server-side with a different computer credential derived per Dot.

The key scene sits in the README. Ask, browse, draft, human approval, save. A live computer view and a human review card appear inside chat, and the approved draft becomes an editable Space page.

Where to read first: 3 parts

Take the brief's action as is. Three parts before full clones.

Reading order:
1. background work (the unit of overnight jobs)
   - how jobs start, persist, and stop
2. approval card (where humans stop it)
   - Ask, browse, draft, [stop here], save
   - do approve, edit, and refuse branches live in code
3. resume (continuing)
   - how durable Threads restore talk, UI, and tool state
   - does it survive device and session moves

The three lock exactly into checkpoints and resume from the Durable post, approvals from the security post, and session permanence from the memory post. Structures read as prose so far show as code.

The CopilotKit context: channels and threads standardize

CopilotKit, the AG-UI protocol company, stands behind OpenDots. Same agents across web, mobile, Slack, and Teams.

Standard pieces OpenDots shows:
- AG-UI: the wire format between agents and UI
- durable Threads: talks surviving reloads, devices, sessions
- Channels SDK: Slack and friends as first-class channels
- Human-in-the-Loop: stop-then-continue (approval cards)

Read it paired with the product story in the Dots post. Products are the "what." OpenDots is the "how."

CodeBridge Mini Lab: replay 1 approval loop

1. Clone OpenDots (MIT, self-hostable)
2. Trace 1 approval loop:
   [ ] How an Ask becomes a background job
   [ ] Where browsing turns into a draft
   [ ] The approve, edit, refuse branches on the card
   [ ] Whether saving lands on a Space page
3. Map 1 of your jobs onto it:
   - example: "research rival news, draft, approve, file"
   - any action running without approval (block it if so)
4. Call it: seeing approval, resume, and permissions means understood

Same shape as fallback branches in the routing post. Stopping points are the whole design.

Conclusion: from watching to dissecting

One line to close.

Always-on hides not in staying on but in stopping and continuing.

OpenDots value is transparency, not polish. Background, approval, and resume show in code, so you can ask the same three of your agents. One task for today: read those 3 code parts before cloning. After reading, the next persistent agent you build changes.

Further reading

References

Go deeper with a course

To design pausing-and-continuing runs with approval gates, this course builds harness, loop, and graph layers exactly like the 3-part reading here.