← 에세이 /Post · 02 of 27 · Making

왜 NeuroTerm을 만들기 시작했는가

에이전트는 보드의 시리얼 콘솔을 볼 수 없어서 내가 로그를 날랐다. 그 자리를 터미널이 맡고, 기술이 바뀌면 바로 따라가도록 NeuroTerm을 만든다.

·3 min read · · · #neuroterm#terminal#ai-agents#embedded-systems#maker
왜 NeuroTerm을 만들기 시작했는가

나는 보드를 MobaXterm으로 봤다. 시리얼 콘솔을 열고, SSH로 붙고, 부팅 로그를 지켜보는 일을 다 그 창에서 했다. 손에 익은 도구였고 필요한 기능은 대부분 있었다.

2026년 초부터 다른 개발 도구들은 빠르게 바뀌었다. 편집기에는 LLM이 들어와 코드를 같이 쓰고, IDE는 저장소 전체를 읽고 설명해 준다. 그런데 내가 보드를 보는 터미널에는 그런 변화가 오지 않았다. 왜 임베디드 소프트웨어 도구에는 최신 기술이 빠르게 반영되지 않을까. 기다린다고 달라질 것 같지는 않았다.


이 질문이 실제 불편으로 바뀐 건 Claude Code와 Codex를 쓰기 시작하면서다.

에이전트는 저장소를 읽고, 빌드를 돌리고, 실패한 테스트를 고친다. 컴퓨터 안에서는 꽤 많은 일을 혼자 한다. 하지만 임베디드 개발에서 중요한 일은 책상 위의 보드에서 일어난다. 커널이 어디서 멈췄는지, 드라이버가 무슨 에러를 냈는지는 시리얼 콘솔에만 찍힌다. 에이전트는 그 화면을 볼 수 없었다.

그래서 내가 중간에서 날랐다. 에이전트가 로그를 달라고 하면 콘솔에서 복사해 붙여 넣고, 에이전트가 명령을 알려 주면 보드 쪽 창에 다시 쳤다. 코드는 에이전트가 쓰는데 로그는 내가 옮기고 있었다.

주변 개발자들도 비슷한 데서 막혀 있었다. Claude Code나 Codex를 적극적으로 쓰기 시작한 사람들은 Warp나 Herdr 같은 다른 터미널로 옮겨 갔다. 그런데 보드를 디버깅할 때는 다시 MobaXterm을 열었다. 에이전트는 Windows Terminal이나 새 터미널에서 돌리고, 보드는 MobaXterm에서 본다. 다들 터미널을 두 개씩 띄워 놓고 일하고 있었다.

어느 쪽이든 에이전트와 보드 사이에는 늘 사람이 끼어 있었다. 나는 그 자리를 터미널이 맡았으면 했다. 에이전트가 보드의 콘솔을 직접 읽고 필요하면 직접 입력할 수 있다면, 내 보드 위에서도 에이전트가 개발하고 디버깅할 수 있다. 그런 터미널을 찾지 못해서 직접 만들기로 했다.


방법은 Computer Use에서 빌려 왔다. 모델이 화면을 보고 마우스와 키보드를 쓰게 하는 기능이다. 임베디드 개발자에게 그 화면은 대부분 터미널이니, 같은 일을 터미널에서 하면 된다고 생각했다.

그렇게 만든 게 Terminal Use다. 에이전트가 시리얼, SSH, WSL 탭의 출력을 읽고, 원하는 줄이 나올 때까지 기다리고, 내가 허락하면 그 탭에 직접 입력한다. 입력하기 전에는 그 탭에서 먼저 묻는다. 보드에서는 잘못 친 명령 하나로 플래시가 지워지거나 보드가 재부팅될 수 있어서다.

에이전트와 같은 터미널에서 일하려면 그것만으로는 모자랐다. 그래서 필요한 것들을 하나씩 채워 넣었다. NeuroTerm을 다시 켜면 탭마다 하던 Claude Code나 Codex 대화를 이어서 열 수 있다. 에이전트가 일을 마치거나 내 입력을 기다리면 알림이 뜨고, 작업 표시줄이 깜빡이고, 그 탭에 표시가 남는다. 스크린샷이나 파일을 SSH 탭에 붙여 넣으면 NeuroTerm이 원격 호스트로 올리고 경로를 대신 입력해 주니, 원격에서 돌아가는 Claude Code도 그 이미지를 바로 받는다.

플러그인은 열어 두고 싶었다. 보드마다 프로토콜도 다르고 로그 모양도 다르다. 내가 모든 보드에 맞는 기능을 다 만들 수는 없다. 대신 에이전트에게 부탁하면 누구든 자기 보드에 맞는 플러그인을 마음껏 만들 수 있게 했다. 로그 패널이든, 프로토콜 디코더든, 자기가 자주 보는 크래시 패턴을 찾아 표시해 주는 마커든 상관없다. 에이전트가 NeuroTerm의 플러그인 도구로 만들고 검사까지 하면, 나는 한 번 허락하기만 하면 된다. 플러그인은 샌드박스 안에서 돌아간다.


그래서 내가 만들려는 건 기술이 바뀌면 그 변화가 바로 반영되는 터미널이다. 에이전트가 할 수 있는 일이 늘어나면, 보드 앞에서 할 수 있는 일도 그만큼 바로 늘어나야 한다. 왜 임베디드 도구에는 최신 기술이 빠르게 반영되지 않을까. 처음에 품었던 그 질문에 내가 내놓을 수 있는 답은 이것뿐이다.

출발점은 내 일이다. 나는 로보틱스, Linux BSP, 실시간 통신, 엣지 AI 통합을 한다. 기능을 넣을지 말지는 이 일이 실제로 빨라지는지를 먼저 보고, 그다음에는 진짜 보드 앞에서 그 기능을 믿고 맡길 수 있는지를 본다. 편해도 믿을 수 없는 기능이라면 보드 앞에서는 결국 쓰지 않게 된다.

결국 이 터미널은 내가 쓰려고 만든다. 요즘은 다들 그렇다. 에이전트가 있으니 불편한 게 생기면 필요한 도구를 직접 만들어 쓰는 일이 어렵지 않다.

다만 만든다면 확실하게 만들고 싶었다. 내 컴퓨터에서만 돌아가는 도구로 끝내고 싶지는 않았다. 다른 임베디드 개발자가 받아서 자기 보드에 붙여 보고 쓸 만하다고 인정할 수 있는 제품, 내놓고 부끄럽지 않은 제품이어야 했다.

빠르게 바꾸는 것과 부끄럽지 않게 만드는 것은 서로 부딪친다. 에이전트에게 구현을 맡기면 코드는 금방 나온다. 그런데 그대로 두면 그럴듯하지만 어디서 본 듯한 결과가 쌓인다. 테스트를 통과했다고 해서 내가 원하던 모양이 되는 것도 아니다. 그래서 나는 터미널과 함께, 내 취향이 끝까지 살아남는 시스템을 만들고 있다.

내가 하는 일은 의도와 취향을 전하는 것이다. 이 기능이 무엇을 위해 있는지, 화면에서 무엇이 먼저 보여야 하는지, 어떤 동작은 절대 하면 안 되는지를 말한다. 구현은 에이전트들이 맡는다. 그리고 한번 맞춘 동작은 수천 개의 테스트가 지킨다. 다음 기능을 빠르게 넣다가 예전에 맞춰 둔 것이 슬쩍 무너지면, 테스트가 먼저 알아챈다. 빠르게 바꿔도 부끄럽지 않을 수 있는 건 그 덕분이다.

그 시스템이 있어서 이번 10월에는 1.11, 1.12, 1.13을 열흘 간격으로 낼 수 있었다. 10월 28일에 낸 1.13에는 나와 에이전트, 보드가 한 일을 보드마다 하루 단위로 남기는 Work memory가 들어갔다. 그런데 Windows를 끄거나 작업 관리자에서 NeuroTerm을 종료하면 열어 둔 탭이 사라지는 문제가 남아 있었다. 내가 원하는 모습은 분명했다. PC를 그냥 꺼 버린 뒤 다시 켜도, 모든 탭이 원래 자리와 이름, 작업 폴더, 스크롤백까지 그대로 돌아와야 한다. 복원할지 묻는 창도 없이. 에이전트가 그걸 구현했고, 다음 날 1.13.1로 냈다. 이제 그 동작도 테스트가 지킨다.


NeuroTerm은 neuroterm.dev에서 받을 수 있다. Windows와 Linux에서 돌아가고, 개인에게는 무료다. 지금 모습이 되기까지 돌아간 길도 있는데, 그 이야기는 다른 글에서 따로 적으려 한다.

LLM은 몇 달마다 할 수 있는 일이 달라진다. 내가 일을 하는 동안은 그 변화를 따라가며 계속 업데이트할 생각이다. 내가 쓸 거니까. 그리고 내놓은 이상, 부끄럽지 않게.

ecro
글쓴이 ecro

LLM 펌웨어 벤치마크를 만들었습니다. EmbedEval →

프로젝트에 맞는 Claude Code / Cursor / Codex 하네스를 생성하는 도구를 만듭니다. harness-maker →

에이전트와 같은 보드를 함께 다루는 시리얼, SSH 터미널을 만들고 있습니다. NeuroTerm →

댓글

댓글 불러오는 중...