이 전체가, 왜 안 바꾸냐는 말을 들을 만큼 오래된 노트북에서 돕니다. 그게 바로 요점입니다.
머신
인텔 Core i7-7700HQ — 2017년대 모바일 칩, x86_64, 애플 실리콘 아님. 절대 잠들지 않습니다. 이 한 가지 성질(상시 가동)이 이걸 서버로 만듭니다: 예약 작업·봇 대시보드·렌더 파이프라인을 24시간 호스팅합니다.
여기 사는 것:
- 웹앱 34개 안팎 — 여기서 만들고 배포.
- 페이퍼 트레이딩 봇 몇 개 — 실제 돈이 아니라 실험.
- 영상 파이프라인 — 텍스트→숏츠, 로컬 렌더.
launchd예약 자동화 — 예: 데일리 게시 잡.
구성
- 에이전트 오케스트레이션: 코딩 에이전트(Claude Code·Codex)로 대부분을 만듭니다. 이들을 돌리는 환경은 맨 터미널 → cmux → Orca로 진화했고, 그건 별도 글입니다.
- 스케줄링: 반복되는 건 전부
launchdLaunchAgent. 저를 문 함정 하나: LaunchAgent는 GUI 사용자가 실제로 로그인해 있을 때만 로드됩니다 — 재부팅 후 macOS 로그인 화면에 머물면 아무것도 기동 안 합니다. - 원격 접속: Tailscale로, 아무것도 공개 노출하지 않고 폰에서 봇 대시보드를 확인합니다.
- 알림: 실제로 반응할 봇에만 Telegram(페이퍼 봇은 의도적으로 무음).
플레이스홀더 — 실제 도식 예정.
왜 구형 하드웨어가 오히려 도움이 됐나
최신 파이썬(3.14) 위의 구형 인텔 맥은 훌륭한 강제 장치입니다. 영상·미디어 wheel은 프리빌트 바이너리가 늘 있진 않아서, 컴파일과 씨름하는 대신 static ffmpeg(imageio-ffmpeg 경유)와 결정론적·diff 가능한 파이프라인에 기댑니다. 제약이 어차피 원하던 것들로 밀어줬습니다: 고정 static 바이너리, launchd의 절대경로(그 PATH엔 /usr/sbin이 없음), 새 머신이 필요한 것에 의존하지 않기.
솔직한 부분
혼자서 놀랄 만큼 많은 걸 돌리는 데 새 하드웨어도 클라우드 청구서도 필요 없습니다. 필요한 건 계속 켜져 있는 머신과, 크래시·재부팅을 견디는 규율입니다: 멱등한 예약 작업, 드리프트하지 않는 바이너리, 대시보드를 보는 원격의 눈. 구형 노트북은 제가 우회하는 한계가 아니라, 전체를 정직하게 유지하는 제약입니다.
개별 조각 — 에이전트 환경·Tailscale·Telegram·launchd 함정 — 은 각각 별도 글로. 이건 지도입니다.