OpenAI Codex 데스크탑 앱을 — "내가 원하는 대로 뜯어고치는" 비공식 tweak 시스템. Electron app.asar 패치 + Loader/Runtime/Tweak의 3단 분리 + ESM 모듈로 작성된 tweak. 한 줄 설치 curl ... | bash. macOS·Linux·Windows. JavaScript 53% / TypeScript 45%. 3,200+ stars의 레포가 TrendShift 19위에 오른 이유 — 사용자가 직접 IDE를 모드한다는 시대 정신.
OpenAI Codex 데스크탑 앱이 — 부족한 부분을 사용자가 직접 채운다는 발상.
OpenAI는 2025년 후반 — Codex 데스크탑 앱을 출시했다. ChatGPT의 코딩 모드를 — Electron으로 패키징한 IDE. 강력하지만, 모든 IDE처럼 — 사용자마다 원하는 게 다르다. 어떤 키보드 단축키를 추가하고 싶고, UI 레이아웃을 살짝 바꾸고 싶고, 더 작은 폰트를 쓰고 싶다.
OpenAI에 "기능 추가해주세요" PR하는 것보다 — "내가 그냥 직접 패치한다"가 더 빠른 사람이 있다. 그게 codex-plusplus다. BetterDiscord, Vencord의 — Codex 버전. Discord를 사용자가 직접 모드하는 문화가 — Codex 데스크탑에도 도착.
핵심 기술적 도전: Electron 앱의 코드 사인을 우회하면서 — 자동 업데이트(Sparkle)가 패치를 덮어쓰는 걸 막는다. app.asar 패치, ElectronAsarIntegrity SHA-256 재계산, macOS ad-hoc re-sign, 런치 에이전트로 업데이트 후 자동 재패치. "Electron 앱 내부를 정확히 이해해야 가능한 것"이라 — 기술적 진입장벽이 높다.
asar 파일을 풀고 코드를 수정한 후 다시 묶으면 — 앱을 모드한 것. 단점: 코드사인이 깨진다.Info.plist(macOS) 또는 metadata에 — asar의 SHA-256 해시가 저장. 앱 시작 시 검증. 해시가 안 맞으면 앱이 안 뜬다. codex-plusplus는 — 패치 후 SHA-256을 다시 계산해 Info.plist에 쓴다.import/export 키워드. CommonJS(require)의 후속. codex-plusplus의 tweak은 — ESM 모듈로 작성. "브라우저·Node·Electron 어디서나 동일하게 작동".codesign --force --deep --sign -로 ad-hoc 재서명. "인증되지 않은 개발자"로 macOS가 경고하지만 — 첫 실행 시 사용자가 허용하면 된다.전체 글의 핵심 메시지.
핵심은 3단 분리 아키텍처다. ① 앱 안: 최소한의 loader stub만 패치 (한 번). ② 사용자 디렉토리: runtime 본체 (hot-reloadable). ③ tweaks 폴더: 각 tweak 모듈. "앱 본체는 거의 안 건드리고 — runtime/tweaks는 무한히 갈아낄 수 있게". Discord 모드 커뮤니티가 — 10년간 갈고 닦은 모범 답안을 Codex 앱에 직접 적용.
두 번째 매력: 한 줄 설치 — curl ... | bash. 사용자 수동 작업이 거의 없음. 자동 업데이트와도 공존(launch agent가 — 업데이트 후 자동 re-patch).
37 stars의 신생이 — TrendShift 19위에 올라온 모멘텀 이유.
① "OpenAI Codex 데스크탑 앱의 부족함"이라는 깔린 수요. Cursor·Claude Code 같은 경쟁자에 비해 — Codex 앱은 UI·단축키·확장성에서 아직 약하다. 사용자가 — "내가 직접 고친다"로 향하는 게 자연스럽다. 그 출구가 codex-plusplus.
② "BetterDiscord 패턴의 정통성". Vencord·BetterDiscord가 — 사용자 수십만 명에게 검증된 패턴. "앱을 패치하지만 — 안정성을 유지하는 법"이 그 커뮤니티에 다 정리되어 있다. codex-plusplus는 — 그 패턴을 단순 이식.
③ "한 명의 인디 개발자 vs 거대 회사" 서사. README 위에 — "Status: alpha. PRs welcome.". 한 명(@b-nnett)이 — OpenAI를 상대로 비공식 modding 시스템을 만든다는 — DIY 정신. 모멘텀 폭발의 정확한 형태.
④ "사용자가 직접 IDE를 모드한다는 시대 정신". Cursor·Claude Code는 — 회사가 제공하는 SKILL.md·Plugin 시스템을 따라야. 반대로 — codex-plusplus는 사용자가 직접 — 회사 권한 없이 패치. "AI 코딩 도구의 BetterDiscord화"를 — 좋아하는 사람은 분명히 있다.
Electron + Node.js + 깊은 OS-specific 마법.
Electron asar (앱 패치), node:crypto SHA-256 (무결성 재계산), plist 파싱 (macOS), codesign CLI (macOS ad-hoc 서명), launchd (macOS) / systemd (Linux) / Task Scheduler (Windows) — 자동 재패치용.
ESM(ECMAScript Module) 기반. manifest.json(이름·버전·작성자·githubRepo) + index.js(start()/stop() 생명주기). 런타임이 — .ts도 즉석 트랜스파일. "hot-reloadable" — 저장하면 즉시 반영.
@codex-plusplus/sdk 패키지가 — tweak 작성용 API 제공. api.settings.registerPage()(설정 패널 등록), api.log.info()(로그), api.commands.add()(명령어 추가) 등. "VSCode 확장 API의 미니어처".
OpenAI Codex는 — Sparkle(macOS·Linux) 또는 자체 업데이터로 자동 업데이트. 업데이트 시 — codex-plusplus 패치가 덮어쓰여진다. 해결: launch agent(macOS Launch Daemon)가 — 업데이트 감지 후 자동 re-patch. 사용자 개입 0.
"건드릴 곳 적게, 갈아낄 곳 많게"의 패턴.
[Codex.app 본체] ← 한 번만 패치
└── Contents/Resources/app.asar
└── 진입점이 → loader.cjs 로 교체 (한 줄 require)
┌──── loader가 부팅 시 작동 ────┐
│ │
▼ ▼
[Runtime in user-data-dir] [Tweaks in user-data-dir]
~/Library/Application ~/Library/Application
Support/codex-plusplus/ Support/codex-plusplus/
runtime/ tweaks/
↑ ↑
hot-reloadable hot-reloadable
(GitHub release로 업데이트) (사용자가 자유 추가)
┌─── 자동 업데이트 ───┐
│ GitHub Codex++ │ [Update Watcher] (launch agent)
│ 새 release 감지 │ → 업데이트 시 자동 repair
│ daily 확인 │ (asar 다시 패치)
└────────────────────┘
asar 안에 — "require('/path/to/loader.cjs')" 한 줄만 추가. 다른 모든 로직은 — 사용자 디렉토리의 runtime에. 그래서 — 자동 업데이트가 와도 patch 자체는 — 다시 1줄만 적용. 무결성 SHA 재계산도 빠르다.
"Info.plist의 SHA-256을 다시 쓰기 + Electron Framework binary의 EnableEmbeddedAsarIntegrityValidation 플립". 한 가지가 실패해도 — 다른 게 막아준다. "공격적 우회 — 그러나 정직"(README가 모든 step을 명시).
각 tweak은 — start(api)로 부팅 시 호출, stop()으로 비활성화 시 정리. 사용자가 설정 패널에서 토글 → 즉시 적용 (재시작 X). "OS의 데몬과 같은 라이프사이클"을 — Electron 안에서 흉내.
각 tweak의 manifest.json에 — githubRepo: "owner/repo". Codex++는 — 매일 GitHub Releases 체크. 새 버전 있으면 — Settings에 "Update Available" 표시. 자동 설치는 안 함. 사용자가 release notes·diff를 보고 — 수동 교체. 보안 의식.
monorepo + 디스크 위 사용자 디렉토리.
codex-plusplus/ (저장소) ├── docs/ │ ├── ARCHITECTURE.md ← 시스템 전체 그림 │ ├── WRITING-TWEAKS.md ← Tweak 작성 API │ └── ... ├── packages/ ← monorepo (npm workspaces) │ ├── installer/ - install.sh가 깐 CLI (uninstall, status, repair, doctor) │ ├── loader/ - app.asar 안에 들어가는 진입 stub │ ├── runtime/ - tweak 발견·로드·생명주기 관리 │ ├── sdk/ - @codex-plusplus/sdk — tweak 작성용 API │ └── native-host/ - native OS bridge (Objective-C++) ├── tweaks/ ← tweak 작성 가이드 │ └── AGENTS.md - tweak 작성 가이드 ├── install.sh ← 한 줄 설치 스크립트 ├── CHANGELOG.md ├── SECURITY.md ← 보안 모델 + 신고 정책 ├── package.json ← npm workspaces ├── tsconfig.base.json └── README.md 사용자 디스크 상태 (설치 후): ~/Library/Application Support/codex-plusplus/ (macOS) ├── source/ ← Codex++ CLI 소스 (repair·uninstall용) ├── runtime/ ← 부팅 시 로드되는 본체 ├── tweaks/ ← ESM 모듈 + manifest 모음 ├── backup/ ← 패치 전 asar 백업 (uninstall 시 복원용) └── config.json ← 사용자 설정
흥미로운 디테일: monorepo로 잘 쪼개져 있다. 5개 패키지 — installer / loader / native-host / runtime / sdk. 각자 독립 build·테스트. "신생 alpha 레포지만 — 아키텍처는 성숙". 메인테이너가 — Discord 모드 커뮤니티 경험자일 가능성 높다.
Electron 내부 + 사용자 모드 시스템 디자인 양쪽.
app.asar 구조, Info.plist의 ElectronAsarIntegrity, codesign 메커니즘. Electron 앱을 — 외부에서 합법적으로 모드하는 법의 교과서. 자기 회사 Electron 앱의 — 디버깅·확장·QA에도 그대로 응용 가능.
"앱 본체 거의 안 건드리고 — 무한히 확장 가능한 구조"의 패턴. 자기 앱을 — 이 구조로 설계하면 — 사용자가 자발적으로 확장 생태계를 만들어 준다. VSCode가 — 같은 원리로 확장 1만+ 개를 가졌다. 작은 앱도 같은 패턴 가능.
"무결성 검증을 우회한다"는 — 보안 관점에선 위험할 수 있다. 그런데 README에 — 모든 step을 명시하고 SECURITY.md를 따로 둔다. "사용자가 알고 동의하는 우회". 자기가 — 보안 민감 도구를 만들 때 — 어떻게 사용자에게 정직할지의 모범.
3개 OS에서 — "백그라운드 워치독으로 자동 작업"을 동일하게 구현. macOS는 LaunchAgent, Linux는 systemd unit, Windows는 Task Scheduler. 크로스 플랫폼 데몬의 모범. 자기 CLI에 — 같은 패턴 적용 가능.
이 레포의 본질은 — "Discord 모드 커뮤니티의 10년 노하우를 Codex 앱에 단순 이식". 자기가 좋아하는 데스크탑 앱(Slack, Spotify, Notion)의 — 모드 시스템을 디자인할 때 — 같은 패턴을 그대로 쓸 수 있다.
매우 가볍다.
OS: macOS·Linux·Windows 모두. 전제: OpenAI Codex 데스크탑 앱이 깔려 있어야. 설치 시점: Node.js 20+ (한 번만 — 설치 스크립트가 사용). 실행 시점: Node.js 불필요 (loader가 Electron 안에서 동작).
macOS는 — /Applications/Codex.app 안의 파일을 수정. 권한 요구. macOS Gatekeeper가 — ad-hoc 재서명된 앱을 "신뢰할 수 없음"으로 표시할 수 있다. 첫 실행 시 — System Settings → Privacy & Security에서 "Open Anyway" 클릭.
asar 패치는 — 항상 실패 가능성. codex-plusplus는 — 패치 전 원본을 ~/Library/Application Support/codex-plusplus/backup/에 보관. 문제 발생 시 uninstall 명령으로 즉시 복원. "하지만 이 백업 시스템 자체도 신뢰 필요" — 정식 출시 전 alpha 단계라는 점 기억.
난이도별 4개.
OpenAI Codex 앱이 깔린 상태에서 — curl -fsSL https://raw.githubusercontent.com/b-nnett/codex-plusplus/main/install.sh | bash. Codex 재시작 → Settings → Codex Plus Plus에서 — 키보드 단축키·UI 개선 tweak 활성화. 자기 일상 코딩 환경의 차이를 30분 만에 체감.
docs/WRITING-TWEAKS.md 정독 → "command palette에 명령어 추가" 같은 간단한 tweak. ~/Library/Application Support/codex-plusplus/tweaks/my-tweak/에 manifest.json + index.js. 저장 후 Codex 재시작. "내 IDE를 내가 진짜로 개조했다"의 첫 경험.
자기 tweak을 — GitHub 레포로 publish. manifest.json의 githubRepo 명시. v0.1.0 release. 그러면 — codex-plusplus가 자동으로 — "Update Available"을 매일 체크. 다른 사용자가 — manifest 가져다 깔면 — 자기 tweak이 — 분산 배포되는 첫 모드.
README에 명시: "Status: alpha. 각 플랫폼에서 real-device testing 필요". Linux 환경에서 — install.sh를 손에 들고 1줄씩 정직 테스트. 깨지는 부분을 수정 PR. "신생 alpha 레포에 — 의미 있는 핵심 PR". OSS 이력서의 결정타.
이 레포에서 출발해 — Electron 모드·시스템 디자인으로.
이 레포의 코드를 — 한 줄씩 정독. asar 포맷 문서, Apple codesign 매뉴얼, Sparkle 자동 업데이터, Electron context isolation. "Electron 앱을 만든 사람보다 — Electron 앱을 모드하는 사람이 더 잘 안다"의 영역.
10년 검증된 — 모드 매니저의 정답. plugin loader 패턴, settings UI 주입, hot reload. codex-plusplus와 비교하면서 — "같은 문제를 둘이 어떻게 다르게 풀었나"의 비교 학습.
자기가 만드는 데스크탑/모바일 앱에 — Loader/Runtime/Tweak 3단 구조. ESM 모듈 + manifest. VSCode 확장처럼 — 사용자가 자발적으로 생태계를 만들어 준다. "앱의 가치를 — 자기 코드가 아니라 사용자 코드가 만든다".
macOS LaunchAgent / Linux systemd / Windows Task Scheduler. — 같은 작업을 3개 OS에서. 이 패턴이 — 자기 CLI에 백업·동기화·모니터링을 얹을 때 그대로 사용 가능.
레포·생태계 안에서 자주 보는 용어.
loader.cjs는 — 사용자 디렉토리의 runtime을 require할 뿐. 최소 책임 원칙.codesign --force --deep --sign - — "개발자 인증서 없이 — 그냥 자기 자신을 서명". Apple Developer 계정 없이도 — macOS에서 앱 실행 가능 (Gatekeeper 경고만). codex-plusplus가 — asar 수정 후 다시 서명할 때 쓰는 방법.tweaks/ 디렉토리를 스캔, 각 manifest.json을 읽고, index.js를 동적 import. "실행 중 새 코드 흡수".레포·관련 자료.
레포 본체: github.com/b-nnett/codex-plusplus
문서: ARCHITECTURE.md · WRITING-TWEAKS.md · SECURITY.md
유사 모드 매니저: Vencord(Discord), BetterDiscord, Spicetify(Spotify).
OpenAI Codex 앱: chatgpt.com/codex