---
title: "Slides: Automating Large Scale Refactors with Parallel Agents - Robert Brennan, OpenHands"
category: "slides"
video_id: "rcsliSIy_YU"
sourceLabels: ["Public YouTube video frames", "Public YouTube metadata"]
---

# Slides: Automating Large Scale Refactors with Parallel Agents - Robert Brennan, OpenHands

## Source Video
[Automating Large Scale Refactors with Parallel Agents - Robert Brennan, OpenHands](https://www.youtube.com/watch?v=rcsliSIy_YU)

## Relationship To World's Fair 2026
These slides are extracted from a public AI Engineer YouTube video connected to World's Fair 2026. Speaker-matched clips are supporting context unless later confirmed as exact session recordings; official livestream recordings are day-level/event-level source material.

## Related Scheduled Sessions
- No individual scheduled session mapping has been assigned yet; treat this as an event livestream deck.

## Extracted Slides
![[assets/slides/rcsliSIy_YU/slide-001.jpg]]

OCR text:

> Automating Massive
> Refactors with Agents
> OpenHands

![[assets/slides/rcsliSIy_YU/slide-002.jpg]]

OCR text:

> sc ened iiedinn teline Ticeniediae elena Do utyewr om € EDO ee eh Orne
> ° | re 5 ae Um
> a o re
> Cn ee ie ae ee ee 00000) 2 eo we om Og
> ne About Us
> a Mz |
> = ,
> - EB Robert Brennan OpenHands *
> CEO and Co-founder, An MiTlicensed
> ‘ ve OpenHands coding agent

![[assets/slides/rcsliSIy_YU/slide-003.jpg]]

OCR text:

> [ee Oo ot Briggs om ¢€ Tw Pr i a era
> ry Le is
> 7 iG a a to 3@ ™ ay Pre
> ; ; 2 ;
> Di a ie ae eae ee O000O* «© fo we om 6 B
> NE npn cert tune Neer a
> 2 A Brief History of LLM Coding
> — 2022: Context-unaware code snippets e
> "| oe e “Write python for bubble sort” ?
> Ta 2023: Context-aware code generation °
> ones @ 2
> = e® ‘Write a suite of unit tests for this function’ 2
> ‘ 2024: Single agents for atomic coding tasks. .
> bee e “Implement the GET /products endpoint and use & %
> | curl to validate that it works”
> vo oe 2025: Parallel agents for large-scale work ee ee ee
> . . e@ “Migrate our app from Redux to React Query”
> 5 coven ene no yan yan ode)

![[assets/slides/rcsliSIy_YU/slide-004.jpg]]

OCR text:

> a he oe BS ktm oe € ED ws ee a ret La
> ° Cn rr aghan
> r ra ee
> ; ; ; 9 ;
> Deine Gee ee ee C0000’ 2 8 oO ee om
> - Evolution of AI-Driven Development
> . ~~ Plugins + IDEs + Local Agents - »* CloudAgents + Orchestration ;
> - a, OpenHand
> =) CLI Pp Cloud SDK :
> - ao
> |
> - ae es
> _ ep en ccorson [I co
> "eee HS >
> _ Tactical Median Developer Early Adopter Agentic
> : ccs wash weeee ns 2025-11-22 14:38:38

![[assets/slides/rcsliSIy_YU/slide-005.jpg]]

OCR text:

> JFK27-B1.300
> 2025-11-22 14:41:33

![[assets/slides/rcsliSIy_YU/slide-006.jpg]]

OCR text:

> [i i co rd QZ. tee ehr ie ¢ OA 26 mF ew toy
> a Cn aa
> a soe Cae 4 nT? any
> eT ae ee * O2O00? = & oO wa - om. + BR
> ~ ee ; | | | |
> Coe Showcase: Automating Massive Refactors
> z= Chick to view video
> _™ . 6) ¥ rs ;
> weve 7 d
> oe |

![[assets/slides/rcsliSIy_YU/slide-007.jpg]]

OCR text:

> Cn i oc rd Re to ee 2 Oo. ee ee eerie
> oy 1. a a
> as : °c bs as a
> rerio O0000° 2% o -—- om +
> wae “ . . . :
> Fa Showcase: Automating Massive Refactors
> || Chick to wew video 2
> Vv . = | .
> ee ~

![[assets/slides/rcsliSIy_YU/slide-008.jpg]]

OCR text:

> ° see
> vat ieee ry
> camith48/OpenHends =
> - Deperrient » = Obce5 Details & LOA Metacata
> Stats mw tae
> oz eS
> oO ~ Code Metrics 14 tees) ‘
> teB3a " tt
> - 0 66.0 $96
> SeceOs: $93 138
> b794a3 8166 0.20
> . £]
> > Depersencws (9)
> ; Na
> r A c > Dependents (4)
> D
> 1 Li L/ ~~ odes (4)
> } ” OOONIRON20D Ver MAN ton on +
> —_ .
> Fad
> Lg . .
> OPENING EDD Lereetiditaryn emote workinmce Dy +
> 2025-11-22 14:54:08

![[assets/slides/rcsliSIy_YU/slide-009.jpg]]

OCR text:

> 1.Oper Refactorutl:asycremoteworkspace,ncryptinkeys,andQLutilties csmith49wants tomerge1commtintoain from refector/bate
> cth9coned5mntsao
> ndimprovecorrectness
> daedsyosowerouse.
> Splita verylongexecute_command mplementationintosmallerhepermethodsstaremote_command Fxed fle uploadidowmload endpoints to include server_urf and headers whenmaking HTTP cals. Added docstrings to hepermethodsand mproved ogging. Repiaced blocking time.sleep with asyncio.sleep to avoid biocking theevent loop. etch_bashevents_collect_cmmand_output toreducefunctionengthandimproveeadablity. Nocne Noneyet
> Adlanuogduoue.
> Addedmore detaled docstrings. Foxed inconsistent serialization context key (now usesexpose_secrets'consistenty). q s Br None yet
> forfactoryfunctionsandrow2dict.
> theseisues. Successtulyme
> nges;verifed presence of docstrings and type-safety checks. None yet
> etterarablesandissingocstngsonpublicuntions.Compledthecodetnsuretherearno nal behaviorwhileaddressinglongfunctionsblockingcalsnsyccodeinconsistentcontextky
> the theas
> 2025-11-22 14:58:18

![[assets/slides/rcsliSIy_YU/slide-010.jpg]]

OCR text:

> 2025-11-22 14:59:08

![[assets/slides/rcsliSIy_YU/slide-011.jpg]]

OCR text:

> , ne i he eo Me i he fF Oa PC ee a ed
> ° ee ee ge %
> F ; ; rae’ mF
> , , Ps
> Uae Oe ee ieee O0000" © Bo Home + ®
> 2 Me | aN FE LT, EES Gee ee Re sp
> oo Task Decomposition
> . “ Break your end-goal down into tasks that:
> yee e Are one(-ish) shottable .
> “ewe e Fitina single commit , a ad 2
> vo : e Can be executed in parallel oo, 7 :
> eee e Can be verified by a human as correct ~f ed _* »
> a ; . 2
> 4 / or incorrect °
> ee e Clear dependencies/ordering between
> . tasks
> (Cm)
>  - _.
> ; can vamgene son 2025-11-22 15:00:23

![[assets/slides/rcsliSIy_YU/slide-012.jpg]]

OCR text:

> JFK27-B1.300
> OpenHands
> 2025-11-22 15:02:53

![[assets/slides/rcsliSIy_YU/slide-013.jpg]]

OCR text:

> Gre hie tm tetery  Beemenete Bitten tet Weim tp DM bes ote ¢g ED 56 mF tee rey
> a a) fo) ‘ 7
> . e 2 ao a a
> . 7 . 2
> 2025-11-22 15:12:11

![[assets/slides/rcsliSIy_YU/slide-014.jpg]]

OCR text:

> CO oe ok ne a Sow tpeercain ¢ Ow 26 mw OF he tee ate
> ° [ | oad a a 64
> i Ca ane te
> , F . ; Po
> tw) ee be
> rede caer 5 5 = a
> cve-demo-ai-engineer
> 2025-11-22 15:13:01

![[assets/slides/rcsliSIy_YU/slide-015.jpg]]

OCR text:

> 口 Ca
> rbren/cve-demo-ai-engineer QTypetosearch
> <>Code Issues IPullrequests Actions Projects wiki Security Insights Settings
> cve-demo-ai-engineer/.openhands/microagents/repo.md inmain Cancel changes Commitchanges..
> Edit Preview Spaces No wrap
> We're buildingaprocessforremediatingCVEswithagents
> Relevant docs for the OpenHands SDK are at:docs.openhands.dev/sdk and github.con/OpenHands/software-agent-sdk
> Use Control+Shift + to toggle the tab key moving focus.Alternatively,use esc then tab to move to thenext interactive element on the page. 2025-11-2215:13:51

![[assets/slides/rcsliSIy_YU/slide-016.jpg]]

OCR text:

> Ce ee to i eS Qiwsse neta ¢€ ED SS, 28 wm FP we ISR tis
> ca Cn] Qo toe * Me
> 5 Car ee
> F " F e ;
> Nard
> 
> foresee a aes eras ao aes oars reat re Gnk sethn as AP moe
> 
> PE Beery eat
> eae vias microagents
> ore
> aa tet)
> re eee
> Banta
> rr
> remy eae’
> amie ene oa tea eta
> Loe
> Paar
> Cre eee
> eer
> Cat
> car ace Oa
> oe erence id
> 2025-11-22 15:14:21

![[assets/slides/rcsliSIy_YU/slide-017.jpg]]

OCR text:

> 0 ee ee a D : i en oe oe — Pe ee i ee had
> ra a] ee
> _ : Car 7 be . iB
> r . F a ,
> eels New personal access token (classic)
> een Nera
> Bape on aad ae ont Od a aT TPT aa Ree Ta ak Roar Le Core es Ce
> Serer Tren ean en cae aitelY felt fungal faa co Ocean ea re oan Gals eit es eo] f
> for Goan HT TES of canon used te
> cane ee eee
> Llc
> Bele
> Expiration
> RE CKLTER Craver sys yee
> Select scopes
> Sooper: cele te alesse for personal toners
> iPro)
> roms hee
> iy emer ears Caza
> [oe Sea bs
> be te oot ears 14.
> Pana mR nara CS
> worktiow
> 2025-11-22 15:14:46
> Paces E Le Tse

![[assets/slides/rcsliSIy_YU/slide-018.jpg]]

OCR text:

> OpenHands
> JFK27-B1.300
> 2025-11-22 15:15:11

![[assets/slides/rcsliSIy_YU/slide-019.jpg]]

OCR text:

> , eS Gr awrats- ¢€ HF &, a i a See
> ) Cn) fo) eS %
> a °c - 7 rs
> r . P ms E
> ord ,
> SESS Ea sse UC [ale
> a
> i 2025-11-22 15:15:57

![[assets/slides/rcsliSIy_YU/slide-020.jpg]]

OCR text:

> Ce er i ec Qostagwee ee. ¢ EA or ee a rr aro
> oa ee ©} oo
> sad _ Cary re F F
> , , , P ,
> Pre rSterase OO000" 2 Bo ome
> ee eh we ee me Ne moe A OP RF te ee et beer Ree ye
> we Vibecoding CVE Remediation: Setup
> e
> cena Access this presentation to copy/paste! dub.sh/openhands-workshop
> e Create a GitHub repo to hold your work ;
> Be / ® Get a GitHub token *
> github com, settings, lakens 2
> ‘ Scopes repo, workflow 2
> —_ export GITHUB_TOKEN=...
> = e Getan LLM Token “
> Mee | $10 free by stgning up for OpenHands »
> rT @ = app.all hands.dev/settings/apr-keys Pa
> Anthropic, OpenAl, etc will also work
> » export LLM_API_KEY-...
> | e Start an Agent Server
> eo 7 docker run -p 8000:86086 ghcr.io/openhands/agent-server :314348a-python!
> ee e Create AGENTS md, cursorrules, or an OpenHands microagent
> Point to docs openhands dev/sdk and github com/QpenHands/soltware-agent-sdk
> g CeO 2025-11-22 15:17:24

![[assets/slides/rcsliSIy_YU/slide-021.jpg]]

OCR text:

> c\'[oocepted]'}
> ith debug to see polling in action
> ('asctine'
> "levelname'
> 'INFO'.'name
> 'sockets.py",
> 'lineno':
> 'mossage
> 'openha
> nds.agent_server.sockets',
> Event Websocket Connected:922d8427-7e27-49a4-90d3-b16e7284455c*)
> `filename`
> file operations,and actions!
> 2825-11-2219:18:10.180,1evenae':“INF0',nme
> 'uvieor
> houldnow see **real-tise status updates
> n.access
> client_addr':null,request_line*:null,status_code
> '2825-11-2219:18:18,181*,1evelnome'INF0'.
> null)
> ('asctine
> 'uvicor
> n.occess'
> cllent addr':null,request line':null,*status_code
> null)
> 59K
> ('asctime'
> client.addr'
> NT.,T,
> null,
> "nane
> 'uvicor
> n.access'
> null.
> 'request.line'
> `levelnane'
> `INFO'
> "statun.code"
> 'openha
> null)
> nds.agent_server.sockets",
> 'asctime
> 'filename
> 'sockets.py'.
> 'lineno"
> "name
> ebsocket d1sconnected:922d8427-7c27-49a4-90d3-b16e7284455c)
> 'message
> 'Event
> 'asctime
> "levelname'
> `INFO'.
> nds.agent_server.sockets',
> 'filename
> 'sockets.py'.
> 'lineno':
> "name`
> 'openha
> *Event websocket disconnected:fc4aB483-abfc-45eB-Bab8-ce58dB558615)
> 'osctime
> 'INFO'
> nds.agent_server.sockets',
> 'filename'
> 'sockets.py'.
> "lineno'
> openha
> “Event websocket disconnected:bded8557-6ebf-4a73-996e-535caBfecec4')
> ('asctime'
> levelnane
> 'INFO'
> nds.agent_server.sockets'.
> "filename'
> 'sockets.py'.
> 'lineno':8s.
> 'message
> 'openha
> Event websocket disconnected:6ale94f5-g2Ba-48fe-a194-4f2aed5abe4a)
> C（'asctine
> `filename'
> 'server.py'.
> 'lineno′:264,
> 'levelname
> 'message'
> 'INFO'
> orn.error'
> 'Shutting do
> uvie
> ('asctine'
> 'Levelnane':
> "INFO'.
> Waiting for appllo
> 'name':
> 'uvicor
> n.error'
> "filena
> 'on.py".
> 1ineno:67,
> 'message'
> mversatsoc error(8]:
> STr
> ation shutdown,')
> C('asctine':
> 2825-11-2220:17:36.417','1evelnae:WARNING
> penhands.agent_server.vscode_service',
> "filename'
> 'vscode_service.py'.
> "'name'
> onvereatiorxrroe(0)
> vsCode server did not stop gracefully.killing proce
> neno':78,
> 'sessage':
> update step
> mith state_lock
> ('asctine'
> 2825-11-2228:17:36,428,1eve1name:INF0′,name*:uv1cor
> -devbex
> 10:180 git checkout
> -/git/cve-ge
> n.error',
> 'filename'
> "on.py".
> 1ineno:76,*essage*:'Appication shutdo
> -devbox-/git/cve
> (astime:*2825-11-2228:17:36,428.1evelnae:INF0
> wncomplete.`}
> "filename':
> `nane':
> :'uvicor
> direnv:unloading
> 10:19)cd
> n.error',
> 'server.py'.
> 1ineno:94,*messge
> 'Finishedserve
> edo-devbox-/git
> process[7].color_message':
> Finished server processuee1b36ndlu
> 28:17)ghclone rbren/ove-demo-ai-engineer
> Exoeption ignored in:function BaseSubprocessTransport.del..at Bx75e25s
> 1b[0]')
> Cloning into'cve-deno-al-engineer
> eote：Enumerating objecte:8, done.
> Traceback （most recent call last）:
> 69b748-
> Countingobjects:1ae（8/8）,done
> Conpressing ob]ects:10e（4/4）,done
> F1le*asyncio/base.subprocess.py，1ine 184.in close
> F1le*async1o/base_subprocess.py*，1ine 126,1ndel.
> renote:Tota]8（detae）.reused（delta a）,pack-reu
> F1le'asyncio/unix.events.py
> File*asyncio/unix.events.py”
> 1ine 568,in close
> Receiving cbjects:18en （8/8）.done.
> 1ine 592,in_clo
> 2017）cdcve-deno-a1-engineer/
> devbox-/git
> File'asyncio/base_events.py"
> line 799,in call soon
> stat:canot statxgit/FETOHEAD:
> Nosuch file or directory
> File'asyncio/base_events.py'
> 1ine 545.in_check_closed
> RuntineError:Event loop is closed
> git/cve-d
> slo+
> edo-devbox
> 2h32±59s
> 174.138.76.92d1sk
> Z2
> epu
> :8-bash*

![[assets/slides/rcsliSIy_YU/slide-022.jpg]]

OCR text:

> ockets',fllenane*：'sockets.py”
> 1ineno：53，essage
> Event webaocket Connected:fc4a
> 483-a6fc-45e0-8ab8-ce58d0558615')
> ('aectine':
> 2025-11-2219:18:10.173',1evelnaeINFO°
> "name'
> 'uvicorn.error'.
> e':
> 'wsproto.inplpy'.
> 11nno:259,mesge*172.17.0.1:36182
> ('asctine':
> 2825-11-2219:18:18,174'levelnome':
> .ONT.
> f1lename*:*sockets.py”.
> 1ineno:53,message
> `none'
> openhands.agent_server.s
> Bb77cd63-2891-4358-9ad3-fa4afbf7bcc9
> ockets',
> Event websocket Connected：922d8
> run openhands--resune 8b77cd53-2e91-4358-9ad3-fa4afbf7bcc9 to resume this conversation
> 427-7c27-49a4-98d3-b16e7284455c')
> `C
> ("asctine'
> 2025-11-2219:18:10,188,*1evelnam
> 'INFO'.
> direnv:1oading-/git/cve-demo-2/.envrc
> ddr:null,
> request line:null,“status code:null)
> 'uvicorn.access'
> 'client
> direnv:export +GITHU8_TOKENLLx_APIxEY
> ('asotime'
> 2025-11-2219:18:10,181,1evelname
> "INFO'.
> uvicorn.access'
> in2h1841
> 'requeet_line':null,status_code'
> null)
> "client
> -derbox
> openhands*c
> addr'
> null,
> 0T10S0,)
> 'INFO'
> -derbox-/git/eve-demo-22main+
> Ttnu:.ppe
> request.line：null“status.code*
> null)
> 'name'
> 'uvicorn.access'.
> 'client
> 28:18cd./cve-deno-ai-engineer/
> （asctime':2825-11-2219:18:44,948
> 'filename"
> "lineno":
> 'levelna
> direnv:unloading
> 'INFO'
> openhands.agent.server,s
> 2d8427-7c27-49a4-98d3-b16e7284455c)
> ockets'
> 'sockets.py'
> message"
> Event websocket disconnected:92
> do-devbox
> -/git/cve-
> （as0t1me':'2825-11-2219:18:44,948',
> 'INFO'
> 'socketo.py'
> 'openhands.agent.server.s
> 4a8483-a6fc-45e8-Bab8-ce58d558615')
> "filenase':
> 'lineno*:85,
> 'nessage'
> Event websocket disconnected:fo
> versation.error[]
> versatior
> （'asctime*;'2825-11-2219:18:44,948','1evelne
> 'sockets.oy'.
> .OI.
> 'openhands.agent_server.s
> ockets'
> 'filene
> 'linene*:85,
> 'nessoge'
> 'Event websocket disconnected:bd
> Update step
> (asctine:2025-11-22 19:18:44.948,*1evelnam
> edB557-6ebf-4a73-996e-535ca8fecec4)
> ith state lock
> 'sockets.py'.
> lineno：Bs,message'
> 'INFO'
> 'name':*openhands.agent_server.s
> devbox
> 11s
> ockets',
> Event ebsocket disconnected6a
> Be94f5-928a-48fg-a04-4f2aed5abe4a)
> -devbox
> C（asctime':*2825-11-2228:17:31.388*1evelname':*INF0*
> 19:19)cd
> ae':'server.py'.
> "nar
> "uvicorn.error",
> 'filen
> direnv:unloading
> ('asctime
> 'on.py"
> 1ineno*:67.essegewasting for ppl1cation shutdown.)
> `INFO'.
> nme
> 'uvicorn.error",
> 'filenas
> 20:17) gholone rbren/eve-deno-al-engineer
> devbox
> -/gtt
> Cloning into*cve-deno-ai-engineer'
> C(act1me':*2025-11-2220:17:36,417,1eve1na
> vscode_servicepy
> "WAANING','name
> 'lineno′:78,'es#ge
> jasluabespupquado,
> Enunerating objects:8,done.
> "filename':
> vSDude server
> enote:
> Counting objects:1ee （8/8). done.
> did not stop gracefully.killing process)
> ('osctime'
> 'lineno':76,'message*;
> Application ahutdown complete.)
> name':*uvicorn.error`,
> 'fileno
> Conpressing objects:1een（4/4）.done
> Total8（deltaa）.reusede（deltaa）.pack-re
> 'on.py'
> enote:
> (`asctine
> 'levelname'
> 'INFO'.
> "name`
> 'server.py
> 'lineno*：94,message*:Finished server process[7l*,color.message
> 'wicorn.error',
> "fslena
> Receiving cbjects)1ees（8/8）.done
> te/-xogaap-op
> nished server process[Lueetb[36ntdlub1b[an]’)
> 'F1
> 20:17)cdcve-deno-ai-engineer/
> Exception ignored in:<function BaseSubprocessTransport._del
> Tracebock (most recent call last):
> atax75e25a69b748
> -devbox-/git/eve-d
> 0-at-engineermain+
> Fileasyncio/base_subprocess.py
> Fijeamyncio/base.aubprocess.py,1ine184.1n clos
> 1ine 126,in_del
> total28k
> File*asyncio/umix.events.py”.
> File'asyncio/urdx.events.py"
> 4root docker4.ekNov2228:17
> line 568,
> Iine592,
> inclose
> drxr-xr-x12rootroot
> Fileasyncio/base_events.py
> inalose
> 7root docker 4.BkNov 2220:17
> 4.BKNov2228:17
> Line 799.
> tncall.soon
> 3root docker4.kNov 222:17
> .git
> File'asyncio/base.evente.py
> 1ine 54s,in_check.closed
> 1root docker
> Runtimerror:Event loop in cloed
> 23 Nov 2228:17 READE.md
> edo-devbox-2h32n59s
> -/git/cve-de
> d-36）174.138.76.92d1k

![[assets/slides/rcsliSIy_YU/slide-023.jpg]]

OCR text:

> [i ee ee, a Dd QT Beet tea g ow Pe rr tard
> od Ln! ce] o a :
> i 5 Cae are et
> r ey F
> S&2& OpenHands so ” OF Uperrurauopscninds
> (aervem feb GU tLe
> Be ¢ On thn page
> Lay a
> ME ee ee
> Wperrtanets Coad wen yaa
> ae Quan Stem tet ine ee
> tates
> Getting Started
> caesenyy snacmcoines
> + Executetes Beery Uteng Doctor
> Fa a catenin
> Req e Pyro CMe aed nn stale
> tnetat Operands
> ve tool tratatt dopennsnas
> Run Opentands.
> Upgrade Opentiands
> sR gyrate eaten ay
> se su tees : 2025-11-22 15:18:39
> i -

![[assets/slides/rcsliSIy_YU/slide-024.jpg]]

OCR text:

> Cn co eh or Ld QM ket ate gg Oo. ee es ere
> ° [| co) on . * f
> . © 8 Tbe Es
> , ‘ A a &
> | eae wren
> of
> =
> ry
> a
> ry
> 2025-11-22 15:19:04

## Slide-Derived Subjects To Review
Subject extraction uses video title, related session titles/descriptions, transcript context, and OCR text when available. OCR is best-effort and should be reviewed against the embedded slide images.
