2026년에 코딩 에이전트를 노트북에 두는 실패는 모델이 약해서가 아니다. 덮개를 닫으면 프로세스가 죽고, 홈에는 개인 파일이 섞이며, API 키가 셸 기록에 남는다. Linux VPS는 항상 켜 둔 실행 환경과 손안의 편집기를 가를 수 있다. 이 글은 업체 가입에서 시작해 VS Code나 Cursor로 그 머신의 파일을 고치는 데서 끝난다. 인수는 “SSH가 된다”가 아니다. 노트북을 끊어도 tmux 세션이 남아 있고, 에이전트가 크게 고치기 전에 스냅샷이 있는 것이다.
AI 코딩 환경이 노트북을 떠나는 이유
예전 방식은 노트북에 CLI를 깔고 에이전트가 홈 디렉터리를 직접 고치게 한다. 새 방식은 작업 트리, 의존성 캐시, 긴 세션을 개발만 하는 VPS에 두고, 노트북은 화면과 키 입력만 맡긴다. 갈등은 “클라우드가 비싼가”가 아니다. 실행 경계다. 덮개를 닫으면 로컬 프로세스가 죽는다. 시스템 업데이트는 긴 작업을 자른다. 같은 디스크에는 브라우저 로그인과 개인 저장소가 있다. VPS는 이것들을 에이전트의 기본 쓰기 범위에서 뺀다.
VPS가 풀지 못하는 일도 있다. Linux VPS에는 macOS가 없으니 iOS 서명도 Xcode도 없다. 학습 클러스터도 아니다. 호스팅된 모델을 부르는 코딩 에이전트가 쓰는 것은 메모리, 디스크, 안정된 세션이지 데이터센터 GPU가 아니다. 원격으로 저장소를 고치는 일이 아니라 로컬 추론이 목표면 먼저 AI PC 구매 가이드를 본다. 애플리케이션을 쓰려고 GPU 머신을 사지 않는다.
체감은 요금제 이름보다 리전이 먼저 정한다. Remote SSH 지연은 나와 VPS 사이에 있고, 모델 API 지연은 VPS와 모델 쪽에 있다. 동아시아에 앉아 머신이 미국 동부라면 모델이 빨라도 키 입력이 먼저 느려진다. 자리 가까운 리전을 고른 다음 코어 수를 말한다.
VPS는 주인이 분명한 개발 전용기로 다룬다. 메일과 채팅까지 올리는 여분 컴퓨터가 아니다. 개인 로그인과 에이전트가 같은 홈을 공유하는 순간, 노트북 문제를 남의 하드웨어 위에 다시 만든 것이다. 머신은 하나, 일은 하나, 사용자는 dev. 이 제약이 있어야 나중에 인수가 된다.
AI 코딩 환경을 다섯 층으로 나눈다
광고 수식어가 아니라 층으로 산다. 점프 호스트, 코딩 VPS, 빌드 머신, macOS 노드, GPU 클라우드는 다른 질문에 답한다. 이것들을 한 종류의 “클라우드 서버”로 비교하면 2GB에서 Node를 돌리고, Linux에서 iOS를 컴파일하려 한다.
| 층 | 맡은 일 | 부족할 때의 증상 | 넣지 말 것 |
|---|---|---|---|
| 점프 호스트 | SSH만 | 설치 도중에 프로세스가 죽는다 | 에이전트, 데이터베이스, 컨테이너 |
| 코딩 VPS | git, 언어 런타임, CLI 에이전트 하나, tmux | 병렬 테스트와 컨테이너가 메모리를 다툰다 | Xcode, 모델 학습 |
| 빌드 머신 | 더 많은 코어와 메모리, 컨테이너 | 대화형 편집이 느려진다 | 일상 브라우저 로그인 |
| macOS 노드 | 서명, 시뮬레이터, Apple 도구 체인 | Linux에는 그 도구가 없다 | 범용 Linux 호스트로 취급 |
| GPU 클라우드 | 학습과 큰 추론 | 버그 수정 사이에 GPU가 논다 | 일상 저장소 수정 |
코딩 층의 실사용 하한은 4 vCPU, 메모리 8GB, 디스크 약 80GB다. 1GB나 2GB는 점프 호스트일 뿐이다. 디스크는 node_modules, 언어 캐시, 체크아웃 몇 개를 담는다. 루트가 대략 80퍼센트를 넘으면 디스크를 늘리기 전에 캐시를 비운다. 네트워크 장애처럼 보이는 모호한 오류를 기다리지 않는다.
호스팅된 모델을 기다리는 에이전트에서는 코어 수가 생각보다 덜 중요하다. 상주는 편집기 서버, 언어 서버, Node 또는 Python, 그리고 에이전트다. 그래서 8GB는 사치가 아니라 하한이다. 같은 머신에서 Docker와 브라우저급 E2E까지 돌릴 거면 한 단계 올린다. 리팩터 한가운데서 한계를 발견하지 않는다.
분수령은 모델이 아니라 원격 진입점이다
모델 실력은 분수령이 아니다. 실행 경계가 어느 머신에 있는지가 분수령이다. 한 사람이 Cursor와 Claude Code를 같이 써도, 하나는 노트북 사본을 고치고 다른 하나는 VPS 체크아웃을 고치면, 눈에 보이는 diff는 에이전트가 고쳤다고 믿는 diff가 아니다.
| 도구 | 진입 | 실행 | 컨텍스트 | 맞는 사람 |
|---|---|---|---|---|
| VS Code Remote SSH | 로컬 편집기가 VPS에 붙는다 | 터미널, 디버그, 확장은 원격에서 돈다 | 원격 저장소 | 익숙한 편집기를 남기고 싶은 사람 |
| Cursor Remote SSH | 같은 SSH | 자동완성과 에이전트는 원격 파일을 고친다 | 원격 작업 공간 | 편집기와 에이전트가 같은 체크아웃을 보게 하고 싶은 사람 |
| Claude Code 또는 Codex CLI | VPS의 tmux | 파일 수정과 테스트 실행이 된다 | 일부러 연 디렉터리 | 덮개를 닫아도 이어갈 긴 작업 |
| 원격 Mac | 원격 macOS | Xcode, 서명, iOS Simulator | Apple 프로젝트 | 도구 체인이 macOS를 요구하는 사람 |
이 글은 모델을 순위 매기지 않는다. 진입, 실행, 컨텍스트의 차이는 Pi, Claude Code, Codex 비교에 있다. 여기서는 CLI 하나를 골라 tmux에 넣고, 편집기를 같은 머신의 같은 체크아웃에 연결하면 된다.
Remote SSH 첫 접속은 호스트 키를 신뢰할지 묻는다. 수락하기 전에 업체 콘솔에 나온 지문과 비교한다. 그다음 편집기가 여는 것은 원격 폴더여야 하고, 점점 어긋나는 동기화 사본이 아니다. 상태 표시줄이 아직 로컬이면 잘못된 디스크를 고치려는 것이다.
요금제 이름이 아니라 일로 머신을 고른다
| 이런 경우 | 고른다 | 고르지 않는다 |
|---|---|---|
| 모델과 대화만 하고 저장소는 고치지 않는다 | 로컬 클라이언트 | 어떤 VPS도 |
| 웹이나 백엔드를 쓰고, 덮개를 닫아도 테스트가 계속되길 원한다 | 8GB 이상의 코딩 VPS와 tmux | 1GB 점프 호스트 |
| 컨테이너와 E2E를 동시에 돌린다 | 메모리를 한 단계 올린 빌드 머신 | 대화형 편집과 8GB를 나누는 것 |
| iOS를 빌드하거나 Xcode를 쓴다 | 원격 Mac 대여 | Linux VPS |
| 가중치를 학습한다 | GPU 클라우드 | 이 코딩 VPS |
| 혼자 원격으로 고치는 일이 아니라 팀의 긴 자동화가 필요하다 | 클라우드 Mac 위의 자동화 | 개인 VPS에 파이프라인을 넣는 것 |
개인 코딩 VPS와 노트북의 차이는 세션과 디스크 경계이지 “더 똑똑함”이 아니다. 팀 파이프라인에는 권한, 로그, 누가 로그인할 수 있는지에 대한 기록도 필요하다. 그것은 다른 머신이다. 두 번째 사람이 필요하다고 이 절차의 dev에서 비밀번호 로그인을 가볍게 다시 켜지 않는다.
이 정도면 되는 조합
시스템은 Ubuntu 24.04 LTS. 사용자는 dev. sudo는 여전히 비밀번호를 묻고, 에이전트는 root로 돌리지 않는다. SSH는 ed25519만 쓴다. 비밀번호 로그인은 끄되, 키 로그인이 이미 되고 업체 웹 콘솔이 열려 있을 때만 끈다. 런타임은 git, Python 3, Node 22 LTS, tmux. API 키는 ~/.config/ai-dev/provider.env에 두고, 디렉터리는 700, 파일은 600, 경로는 저장소 무시 목록에 넣는다.
편집기 쪽은 VS Code 또는 Cursor의 Remote SSH. Host 블록은 VPS가 아니라 내 컴퓨터의 ~/.ssh/config에 둔다. 긴 작업은 agent처럼 이름이 고정된 tmux에 넣는다. 에이전트에게 넓은 수정을 시키기 전에 업체 콘솔에서 스냅샷을 뜬다.
Node 22 LTS는 배포판이나 그 시점의 NodeSource 안내로 설치한다. 인수는 node -v이지 “스크립트가 오류를 안 냈다”가 아니다. Python과 git도 같다. 버전 문자열은 관찰이고, 조용한 설치 스크립트는 관찰이 아니다.
환경을 무효로 만드는 다섯 가지
- 점프 호스트 메모리로 코딩 스택을 돌린다. Node가 설치 도중에 죽는다. 네트워크 장애처럼 보이지만 메모리다.
- 키가 되기 전에 비밀번호 로그인을 끈다. 순서는 새 키 세션이 성공하고, 예전 콘솔을 열어 둔 채, 그다음 sshd를 바꾸는 것이다.
- API 키를 명령줄에 적는다. 셸 기록에 들어가고 에이전트도 그 기록을 읽을 수 있다. 키는 600 파일에서만 세션으로 들어온다.
- dev에 비밀번호 없는 sudo를 준다. 에이전트는 명령을 실행할 수 있다. 비밀번호 없는 sudo는 잘못된 명령 하나로 sshd나 방화벽을 바꿀 수 있다. sudo 비밀번호는 남긴다.
- iOS 프로젝트를 Linux에 클론하고 xcodebuild를 찾는다. 그 도구는 나타나지 않는다. 처음부터 원격 Mac에 둔다.
여섯 번째의 조용한 실수는 에이전트에게 홈 전체를 보여주는 것이다. 버려도 되는 저장소를 작업 공간으로 연다. 캐시와 키 파일은 옆에 있어도 되지만 프롬프트 컨텍스트도 git 트리도 아니다. 에이전트의 첫 행동이 점 파일을 “정리”하는 것이면 디스크를 너무 많이 넘긴 것이다.
가입부터 원격 개발까지 일곱 단계
각 단계에는 관찰할 결과가 있다. 그 결과를 보기 전에는 다음으로 가지 않는다.
- 가입. 2단계 인증을 켜고, 가까운 리전을 고르고, 공인 IP를 적는다. 청구 메일과 복구 코드는 곧 에이전트에게 넘길 머신이 아니라 내 비밀번호 관리자에 둔다.
- 키. 내 컴퓨터에서 ed25519를 만들고
.pub만 업체에 붙인다. 개인 키는 노트북에 남긴다. - 사용자. dev를 만들고 sudo에 넣는다. dev로 키 로그인이 된 뒤에 root 로그인과 비밀번호 로그인을 끈다. 그 변경이 확인될 때까지 이미 열린 콘솔은 닫지 않는다.
- 런타임. git, 컴파일러, Python, tmux, Node 22 LTS를 설치한다. 버전 명령으로 확인하고, 조용한 설치 스크립트로 확인하지 않는다.
- 저장소. dev로 버려도 되는 테스트 저장소를 클론하고 기존 테스트를 돌린다. 에이전트가 나중에 받을 것은 그 디렉터리이지 홈 전체가 아님을 확인한다.
- 에이전트. 업체의 현재 문서대로 CLI 하나를 설치한다. 키는 600 env 파일에서 읽는다. tmux 안에서 띄운다. 첫 세션은 저장소 구조를 설명하게 하고, 리팩터는 시키지 않는다.
- 원격 편집. 로컬 SSH 설정에 Host를 넣고 VS Code 또는 Cursor로 접속해 파일 하나를 고친 뒤 테스트 브랜치에 커밋한다. 노트북을 끊고 콘솔에서
tmux attach -t agent를 실행한다. 세션이 남아 있으면 스냅샷을 뜬다. 그 관찰이 환경의 완성이다.
ssh-keygen -t ed25519 -C "ai-dev-vps" -f ~/.ssh/id_ed25519_ai_vps # 올리는 것은 id_ed25519_ai_vps.pub 뿐
sudo adduser dev sudo usermod -aG sudo dev sudo apt update sudo apt install -y git tmux build-essential python3 python3-venv python3-pip # Node 22 LTS는 배포판 또는 현재 NodeSource 안내 node -v python3 --version git --version
Host ai-vps HostName YOUR_VPS_IP User dev IdentityFile ~/.ssh/id_ed25519_ai_vps IdentitiesOnly yes
mkdir -p ~/.config/ai-dev chmod 700 ~/.config/ai-dev install -m 600 /dev/null ~/.config/ai-dev/provider.env # provider.env 한 줄. 예: ANTHROPIC_API_KEY=replace-me tmux new -s agent
/etc/ssh/sshd_config.d/99-ai-dev.conf에 PermitRootLogin no, PasswordAuthentication no, PubkeyAuthentication yes를 쓰기 전에 다른 키 세션을 연다. 업체 콘솔은 남겨 두고, 유일한 문을 스스로 잠그지 않는다.
SSH만 허용하고 나머지는 거부하는 방화벽은 같은 단계의 일부이지 별도 프로젝트가 아니다. 업체 패널이 이미 트래픽을 거르고 있다면, 나를 잠그는 두 번째 규칙을 겹치지 않는다. 제어를 하나 바꾸고, 키 로그인을 시험하고, 다음을 바꾼다. 이 부분의 롤백은 콘솔이고, 에이전트의 롤백이 스냅샷인 것과 같다.
요금제를 가르는 질문
1GB나 2GB VPS로 AI 코딩이 되나요?
안 됩니다. 그 크기는 SSH만 살립니다. Node, 언어 서버, 코딩 에이전트가 같이 떠 있으면 일상 작업의 하한은 8GB입니다. Docker와 병렬 테스트는 한 단계 더 올립니다.
코딩 에이전트에 GPU VPS가 필요한가요?
호스팅된 모델을 호출하기만 하면 필요 없습니다. GPU는 학습과 큰 로컬 추론에 남깁니다. 일상 저장소 작업에서 사는 것은 메모리, 디스크, 가까운 리전입니다.
Linux VPS에서 iOS를 빌드할 수 있나요?
없습니다. 서명, 시뮬레이터, xcodebuild는 macOS 쪽입니다. 원격 Mac을 쓰고, Linux에 나타나지 않을 도구를 오후 내내 찾지 않습니다.
API 키를 VPS에 두어도 되나요?
내가 관리하는 머신이고, 권한이 좁으며, 저장소가 그 파일을 커밋할 수 없을 때만 상대적으로 안전합니다. 파일은 600, 디렉터리는 700입니다. 셸 기록에 남기지 말고 root 에이전트에게 맡기지 않습니다.
SSH가 되면 환경이 끝난 건가요?
아닙니다. 인수는 노트북을 끊어도 tmux가 남고, 에이전트가 테스트 저장소를 고칠 수 있으며, 그 전에 스냅샷이 있는 것입니다.
판단이 놓이는 자리
실행 경계를 먼저 정하고 그다음에 가입한다. 코딩 VPS는 덮개를 닫아도 계속 돌아가야 하는 Linux 저장소에 맞다. Xcode와 서명은 macOS 노드로 간다. 학습은 GPU로 간다. 원격 개발이 갖춰지는 때는 일곱 단계 모두에 관찰이 있을 때이지, SSH 배너가 뜰 때가 아니다. 문이 열려 있다는 것은 문이 열려 있다는 뜻일 뿐이다.