환경과 실행 상태 분리
dev·staging·prod 같은 Environment는 읽기 전용 값으로 두고, 요청·컬렉션 범위의 Vars와 실행 중 캡처 값을 별도로 관리합니다. 로그인 토큰처럼 다음 요청에서 이어지는 값은 런타임 상태로 다룹니다.
API를 확인하기 위해 계정을 만들고 워크스페이스를 서버에 올리는 대신, 요청 작성부터 명세 동기화·실시간 통신·Git 기록까지 로컬에서 끝내는 Electron API 클라이언트를 만들었습니다. 기능을 늘리는 것보다 개발자가 반복해서 옮겨 다니는 작업을 한 흐름으로 묶는 데 초점을 맞췄습니다.
API 개발에서는 요청을 보내는 일 자체보다 주변 작업이 더 자주 반복됩니다. 환경별 값을 바꾸고, 로그인 응답에서 토큰을 꺼내 다음 요청에 넣고, OpenAPI가 바뀌면 컬렉션과 차이를 확인하고, 검토한 결과를 Git에 남겨야 합니다. SSE나 WebSocket을 확인할 때는 다시 다른 도구를 켜게 됩니다.
이 흐름을 클라우드 워크스페이스가 아니라 로컬 파일과 로컬 실행을 기준으로 묶었습니다. 서버 계정이 없어도 바로 시작하고, 팀에 공유할 것은 컬렉션과 명세 같은 파일로 남기도록 경계를 정했습니다.
API 클라이언트의 가치는 요청 버튼이 아니라, 요청 전후의 반복 작업을 얼마나 줄이는가에 있다고 봤습니다.
dev·staging·prod 같은 Environment는 읽기 전용 값으로 두고, 요청·컬렉션 범위의 Vars와 실행 중 캡처 값을 별도로 관리합니다. 로그인 토큰처럼 다음 요청에서 이어지는 값은 런타임 상태로 다룹니다.
모든 요청에 적용할 전처리·후처리를 작성하고 QuickJS Worker 안에서 시간과 메모리 제한을 둬 실행합니다. 파일·셸·임의 네트워크 접근은 노출하지 않았습니다.
OpenAPI 3.x JSON/YAML을 연결하면 먼저 변경 검토 화면을 만들고 breaking change와 충돌을 분류합니다. 현재 값 유지·명세 값 반영을 선택한 뒤 체크한 엔드포인트만 적용하며 직전 동기화는 복원할 수 있습니다.
REST 요청과 같은 앱에서 SSE와 WebSocket 연결을 열고 메시지 흐름을 확인합니다. 실시간 기능만 확인하기 위해 별도 클라이언트로 이동하는 단계를 줄였습니다.
OpenAPI 변경 검토 흐름은 UI뿐 아니라 MCP 인터페이스에도 노출했습니다. Agent가 변경 목록을 읽고 검토하더라도 실제 반영 전에는 같은 충돌·선택 규칙을 거치도록 해, 자동화가 앱의 상태 모델을 우회하지 않게 했습니다.
Electron renderer가 직접 파일·Git·네트워크 권한을 모두 갖게 두지 않고 main process의 IPC 경계를 통해 필요한 기능만 노출했습니다. 워크스페이스는 로컬에 저장하고 민감 값은 공유 컬렉션 파일에서 분리합니다.
전후처리 스크립트는 앱 프로세스 안에서 그대로 eval하지 않고 Worker의 QuickJS 런타임에서 제한된 API만 제공합니다. OpenAPI 동기화도 새 명세를 곧바로 덮어쓰지 않고, 비교 결과를 중간 상태로 만들어 사용자의 결정 이후 저장합니다.
로컬-first는 권한을 크게 열어두는 뜻이 아니라, 파일·스크립트·Git·네트워크 권한을 사용자가 이해할 수 있는 작업 단위로 나누는 방식으로 구현했습니다.
macOS Apple Silicon과 Intel 빌드를 GitHub Releases로 배포하고 Homebrew Cask 설치 경로를 제공했습니다. 릴리즈 워크플로가 새 버전의 Cask 버전과 SHA-256을 갱신하도록 연결해 코드가 완성된 뒤의 배포 작업도 자동화했습니다.
Electron smoke test는 임시 워크스페이스·임시 Git 저장소·테스트 HTTP 서버를 사용해 실제 사용자 데이터와 분리했습니다. 요청 실행과 저장, 명세 동기화, Git 흐름을 기능 단위가 아니라 실제 앱 경계에서 검증하는 쪽을 택했습니다.
Homebrew Cask와 GitHub Releases로 설치 경로 제공
아키텍처별 빌드와 Cask 갱신을 릴리즈 파이프라인에 연결
공식 기능은 유료 등급 없이 공개하고 AGPL-3.0-only로 소스 공개
Free Rider는 새로운 프로토콜을 발명한 프로젝트가 아닙니다. 대신 이미 개발자가 하던 요청·변수·명세·실시간 연결·Git 검토를 한 데이터 모델과 한 실행 흐름 안에 배치했습니다.
그 과정에서 데스크톱 앱의 권한 경계, 명세 변화의 안전한 반영, 로컬 파일과 자동화 Agent가 함께 쓰는 인터페이스, 설치·업데이트까지 포함한 배포 운영을 한 제품 안에서 다뤘습니다.
API 요청 화면을 만드는 데서 멈추지 않고 OpenAPI 변화 검토, 스크립트 실행 경계, 실시간 통신, Git 기록과 배포까지 연결했습니다.
Free Rider 문서 보기 ↗