저는 최근 개발은 물론이고 일상에서도 에이전트 브라우저를 많이 쓰고 있어요.
에이전트 브라우저라고 부르는 것들은 요약에서 끝나지 않고 직접 페이지를 열고 다니면서 일을 하는 똑똑한 녀석이죠.
저는 Aside를 계속 쓰고 있었는데 옆자리 팀원은 Ego를 쓰고 있더라구요?
주위에서 많이들 사용하는 Aside, ego lite, Dia 세 개를 직접 써보고 제 업무에 맞는 녀석을 정해보려고 합니다!
내 GitHub에서 star한 레포를 전부 확인해서, 최근 한 달(2026-09-21 ~ 2026-10-21) 안에 새 릴리즈가 나온 레포만 골라 표로 정리해줘. 열: 레포, 최신 릴리즈, 날짜, 주요 변경점 한 줄.
star 목록은 로그인해야 내 것으로 보이고 레포 25개를 하나씩 열어봐야 해서 사람이 하면 꽤 귀찮은 일이에요.
정답은 미리 GitHub API로 뽑아뒀습니다. (5개)

결론부터 말하면 셋 다 5개를 전부 맞혔어요.
그런데 거기까지 가는 방식이 셋이 완전히 달랐습니다.
Dia는 내가 보던 페이지에서 시작했어요
Dia는 Arc를 만든 The Browser Company의 브라우저예요.
작년 9월에 Atlassian이 회사를 인수했죠.
star 목록 페이지를 열어둔 채 오른쪽 위 Chat을 눌러 같은 문장을 붙여넣었어요.
Dia는 지금 보고 있는 페이지부터 읽었어요.
star 목록에는 레포마다 "Updated 3 days ago" 같은 마지막 업데이트 날짜가 붙어 있는데, 이걸 보고 9월 21일 이후에 움직인 레포만 남겨 후보를 9개로 줄였습니다.

나머지 16개는 아예 열어보지 않았어요.
답에도 그 이유를 적어뒀더라구요.
오래된 태그로 뒤늦게 릴리즈를 만드는 드문 경우가 아니면 새 릴리즈가 있을 수 없다고요.
사람이 쓰는 지름길이랑 똑같아서 좀 웃겼어요 ㅎㅎ
후보 레포의 릴리즈 페이지를 읽기 전에는 멈추고 물어봤어요.

이 대화에는 연결된 앱의 개인 정보가 들어 있고 외부에서 온 내용은 안전하지 않을 수 있다는 경고가 같이 떠요.
보고 있는 페이지 밖의 사이트를 읽을 때마다 사람의 허락을 받는 구조예요.
Allow once를 누르니 표가 나왔습니다.

날짜는 한국 시간으로 바꿔서 적었고, bloc이나 supabase-flutter처럼 레포 하나에 패키지가 여러 개 들어 있는 경우도 따로 짚어줬어요.
대신 중간에 제가 버튼을 눌러줘야 해서 혼자 끝까지 가지는 않았어요.
Aside는 화면을 거의 쓰지 않았어요
Aside는 YC 출신 팀이 만든 크로미움 기반 브라우저예요.
주소창이나 채팅에 일을 적으면 브라우저 안의 에이전트가 처리합니다.
모델은 Aside 자체 모델 말고도 쓰고 있던 Claude 구독을 연결할 수 있어요.
가벼운 일은 Haiku, 무거운 판단은 Opus처럼 역할마다 모델을 따로 고르게 되어 있더라구요.

처음엔 여기서 막혔어요.
Claude 연결이 끊겨 있었는데, Claude Code에서 Aside를 부르면 아무 답 없이 끝나기만 했거든요.
터미널에서 Aside CLI로 직접 돌려보고 나서야 Authentication failed for "claude-code"라는 에러를 봤어요.
Models에서 Claude를 다시 연결하니 바로 됐습니다.
같은 일을 시키고 Aside 창을 몇 초마다 캡처해뒀는데, 끝날 때까지 화면이 한 번도 바뀌지 않았어요.
작업 기록을 보니 GitHub용 스킬을 먼저 읽고, 탭을 열어 클릭하는 대신 릴리즈 데이터를 바로 받아오고 있었어요.
Swift 6.4.1처럼 릴리즈 노트 본문이 비어 있으면 웹 검색으로 Swift 포럼 공지까지 찾아가서 변경점을 채웠고요.
49초 만에 끝났고 다섯 개 다 맞았어요.
주요 변경점 칸은 셋 중에 Aside가 가장 충실했어요.
supabase-flutter도 GitHub이 Latest로 표시한 typegen 패키지 대신 본체인 supabase_flutter 릴리즈를 골랐고, 왜 그렇게 했는지도 적었어요.
재밌는 건 star 목록도 공개 API로 가져왔다고 스스로 밝힌 부분이에요.
그래서 비공개 레포에 누른 star는 빠졌을 수 있다고 덧붙였어요.
로그인된 브라우저를 갖고 있으면서도 이번 일에는 로그인이 필요 없다고 판단한 거죠.
ego lite는 Claude Code가 운전했어요
ego lite는 CitroLabs가 만든 크로미움 브라우저예요.
앞의 둘과 달리 브라우저 안에 AI가 없어요.
설치하면 Claude Code, Codex, Cursor 같은 코딩 에이전트에 ego-browser 스킬이 깔리고, 에이전트가 그 스킬을 읽고 브라우저를 조작합니다.
그래서 이번엔 터미널에서 Claude Code에게 같은 문장을 줬어요.
에이전트는 Space라는 별도 작업 공간에서 움직여요.
제 로그인 상태는 그대로 쓰면서 제가 보던 탭은 건드리지 않습니다.

화면 아래 바에서 에이전트에게 조종을 넘기거나(Return to agent) 멈출(Stop) 수 있어요.
넘기고 나니 제 화면은 원래 보던 Space로 돌아가고 에이전트는 뒤에서 혼자 일했어요.
일하는 모습을 보려면 그 Space를 직접 열어야 합니다.
Claude Code는 이런 스크립트를 짜서 ego lite에 보냈어요.
코드에서는 Space를 taskSpace라고 부릅니다.
const task = await taskSpace("star 레포 릴리즈 정리");
const page = task.page("p1");
await page.goto("https://github.com/song1900?tab=stars");
const repos = await page.evaluate(() =>
[...document.querySelectorAll("#user-starred-repos h3 a")].map((a) => a.getAttribute("href").slice(1))
);
for (const repo of repos) {
await page.goto(`https://github.com/${repo}/releases`);
// 첫 번째 릴리즈의 제목과 날짜를 읽는다
}
레포 25개의 릴리즈 페이지를 35초 만에 다 돌았어요.
그런데 한 번에 되지는 않았어요.
처음엔 Releases 링크를 누르는 데서 멈췄어요.
레포 페이지에 같은 주소로 가는 링크가 "Releases"와 "+ 28 releases" 두 개 있었는데, ego-browser는 셀렉터가 정확히 하나만 걸려야 동작해서 에러를 냈습니다.
두 번째엔 끝까지 돌았는데 첫 번째 레포(ponytail)를 놓쳤어요.
클릭으로 들어간 페이지는 주소가 먼저 바뀌고 내용이 조금 늦게 그려지는데, 그 사이에 읽어버린 거예요.
릴리즈 목록이 뜰 때까지 기다리게 고치니 제대로 나왔습니다.
두 번의 실수는 브라우저가 아니라 스크립트를 짠 Claude Code 몫이에요.
ego lite는 시킨 대로 정확히 움직이고 판단은 전부 바깥 에이전트에게 맡깁니다.
날짜도 GitHub이 주는 UTC 그대로 적어서 ponytail은 Aside와 하루가 달랐어요(10-16과 10-17).
셋 다 맞혔으니 남는 건 방식
| Dia | Aside | ego lite | |
|---|---|---|---|
| 일을 시키는 곳 | 보고 있는 페이지 옆 채팅 | Aside 채팅 (CLI로도) | 바깥 코딩 에이전트 |
| 웹을 다루는 방식 | 페이지를 읽음 | 데이터를 바로 받아옴 | 에이전트가 짠 스크립트로 조작 |
| 걸린 시간 | 1분 넘게 (허락 대기 포함) | 49초 | 35초 (실패 두 번 뒤) |
| 일하는 모습 | 채팅에 단계별로 보임 | 화면 변화 없음 | 별도 Space, 열어야 보임 |
| 확인을 받는 순간 | 다른 사이트를 읽기 전 | 이번 작업에선 없음 | 없음 (언제든 넘겨받기 가능) |
| 정답 | 5/5 | 5/5 | 5/5 |
정확도로는 고를 수가 없었어요.
고르는 기준은 결국 제가 어디에 앉아 있느냐였어요.
브라우저 앞에서 페이지를 보다가 궁금해지면 Dia가 제일 자연스러워요.
보던 화면에서 시작하고, 낯선 사이트로 넘어갈 때마다 물어봐 주니까 맡기는 마음도 편하고요.
터미널에서 Claude Code와 일하는 중이라면 ego lite나 Aside가 맞아요.
ego lite는 Claude Code가 이미 들고 있는 맥락으로 브라우저까지 직접 다루고, Aside는 일을 통째로 넘겨받아 빠르게 끝냅니다.
한 가지는 셋 다 같았어요.
에이전트는 제 로그인 상태로 일하고, 제가 볼 수 있는 건 전부 볼 수 있어요.
Dia의 경고창 문구처럼 읽던 페이지에 숨은 문장 하나가 에이전트에게는 지시로 읽힐 수도 있고요(프롬프트 인젝션).
이번 일은 읽기만 하는 작업이라 괜찮았지만, 메일을 보내거나 결제를 하는 일이라면 어디서 멈춰 세울 수 있는지부터 확인해볼 것 같아요 🙃
'개발' 카테고리의 다른 글
| [AI] LLM 출력의 어디까지를 코드가 맡아야 할까? (0) | 2026.09.27 |
|---|---|
| [Python] 연결이 끊겨도 돌던 LLM 답변 (0) | 2026.09.07 |
| [iOS / WWDC26] @State 매크로 적용 범위 (0) | 2026.08.11 |
| [iOS] 셀 높이를 모르는 채팅 리스트의 스크롤 문제 (0) | 2026.04.22 |
| [iOS / WWDC25] 리뷰 (0) | 2025.06.15 |