Skip to the content.

01 — 소개

현장 영업과 납품을 거쳐, 사람의 다음 한 걸음을 돕는 소프트웨어를 만듭니다

실험적인 학습 저장소에서 시작해 실제 사용할 수 있는 도구형 프로젝트까지 단계적으로 확장해 왔고, "정보 전달을 넘어 실제 행동을 돕는다"는 관점으로 재난 대피 안내와 API 도구화, 의존성 보안 점검처럼 사용자의 다음 행동을 만들어 주는 소프트웨어에 집중합니다

Python Streamlit, Pandas, Folium Rust egui/eframe Go GitHub CLI DevOps GitHub Actions AI MCP, 에이전트 도구화

02 — 경력과 이력

경력과 이력

2016.07 – 2017.07, 2022.04 – 2025.04 — 합산 약 4년
영업관리, 자재 납품 — 효상안전종합상사

건설 현장에 들어가는 자재와 안전용품을 다루는 회사에서 자재 납품 실무로 시작해 영업관리까지 맡으며 약 4년간 근무했고, 거래처를 직접 응대하고 일정과 재고, 납기를 조율하며 현장의 요구를 절차와 데이터로 정리해 처리했습니다

  • 2022.04 – 2025.04 영업관리와 자재 납품 — 거래처 영업 관리, 일정과 재고, 납기 조율, 고객 직접 응대
  • 2016.07 – 2017.07 자재 납품 — 건설 현장 자재 납품 실무
2017.07 – 2018.07
교환학생 (어학연수) — UNAM CEPE, 멕시코 국립자치대학교

멕시코 국립자치대학교(UNAM) 외국인 교육센터(CEPE)에서 1년간 교환학생으로 스페인어와 멕시코 문화를 공부했고, 낯선 환경에 빠르게 적응하고 다른 언어와 문화권 사람들과 소통하는 법을 익혔습니다

자격과 면허
🚜 굴삭기 운전 🏗️ 지게차 운전 🚛 1종 대형 운전면허

주요 프로젝트 01

영남권 실시간 재난 대피 안내 대시보드

rad1092/project_dashboard
4인 팀 — 백엔드 / 아키텍처 담당
PythonStreamlitPandasFoliumOSRMSeleniumSQLitepytest

재난문자는 "무슨 일이 일어났는지"만 알려줄 뿐, "지금 어디로, 어떻게 대피해야 하는지"까지 안내하는 대시보드를 만들었습니다

4인팀, 백엔드/아키텍처 담당
4멀티페이지 구성
5지원 권역 (대구, 울산, 부산, 경북, 경남)
AI처음 다뤄 보는 기술 스택이 많았는데 AI 도구를 적극 활용해 단기간에 구현 역량을 끌어올렸고, 새로운 도구를 실전에서 빠르게 익히며 AI를 개발 파트너로 부리는 실용적인 방식을 체득한 프로젝트입니다

문제

재난문자는 발생 사실만 알릴 뿐 특보 데이터와 대피소 정보가 흩어져 있어 위기 상황에서 빠른 판단이 어려웠고, 정적 공공데이터와 실시간 재난문자, 사용자 위치, 외부 경로 API를 함께 쓰는 서비스라 단순 화면 시각화보다 데이터가 끊기지 않게 불러오고 추천하고 길을 찾아주는 구조가 핵심이었습니다

내 역할 — 4인 팀, 백엔드 / 아키텍처

  • 전체 대시보드 아키텍처 설계를 담당
  • 데이터 경로 관리와 CSV 검증, 정규화, 실시간 재난문자 처리, 대피소 추천 로직, OSRM 경로 조회와 장애 대응(fallback) 구조를 설계하고 구현
  • 지도 시각화와 테스트 구성 등 핵심 기능 구현을 주도

한 일

  • 안 끊기는 데이터 로딩 — 환경변수 → Streamlit secrets → 저장소 기본 경로를 순서대로 탐색하는 로딩 계층을 만들고, 한글 CSV 인코딩과 필수 컬럼 검증을 처리
  • 대피소 추천 엔진 — 재난 유형별 전용 대피소 우선 추천 → 지역 단위 fallback → 하버사인(Haversine) 거리 계산 → 수용 인원 기반 정렬을 결합
  • 실시간과 모의 데이터 — Selenium 크롤러로 재난문자를 모아 앱 내부 표준 형식으로 변환하고, 크롤링이 어려운 상황을 대비해 모의 재난문자 생성기도 구현
  • 경로 안내 — OSRM 도보 경로를 사용하되 API 실패 시 직선거리 기반 대체 경로를 자동으로 표시
  • 구조와 검증 — Streamlit 멀티페이지(Home, 시뮬레이션, 실시간 안내, 분석)를 일관되게 구성하고, Folium 지도로 위치와 대피소, 경로를 한 화면에 표시하고 pytest로 경로 계산과 세션 상태, 페이지 import를 검증

결과

  • 사용자는 재난 유형과 현재 위치에 맞는 대피소를 추천받고, 외부 API나 실시간 수집이 실패해도 대체 경로와 모의 데이터로 서비스 흐름이 끊기지 않게 되었습니다
  • 단순 Streamlit 시각화가 아니라 데이터 처리와 추천, 실시간 수집, 장애 대응을 포함한 재난 안내 구조로 확장
  • Folium과 OSRM, Streamlit을 실제로 연동한 작동하는 대시보드를 완성하고, 처음 다루는 기술을 빠르게 익혀 실전에 적용했습니다

주요 프로젝트 02

API를 로컬 MCP 도구로 · FirstCall

rad1092/firstcall-local-api-workbench
개인 프로젝트 · v0.3.1 · macOS Apple Silicon
Rustegui / eframefirstcall-cliMCP

API 요청을 가져와 검증하고 용도와 입력을 설명해, AI 클라이언트가 실제로 호출할 수 있는 로컬 MCP 도구로 내보냅니다.

기존 API를 AI 작업 흐름에 연결하려는 개발자를 위한 도구입니다. curl·OpenAPI 요청에서 인증과 일반 입력을 구분하고, 함께 제공하는 네이티브 CLI가 내보낸 도구를 실행합니다.

2요청 입력 — curl·OpenAPI
2사용 방식 — 데스크톱 GUI·CLI
1현재 배포 대상 — macOS Apple Silicon
AIRust 코어 설계와 여러 입력 형식 처리, 테스트, 문서 작성 과정에서 Claude를 페어 프로그래밍 파트너로 활용했고, 무엇을 만들지와 지켜야 할 규칙은 제가 정하면서 반복 구현과 예외 상황 점검 속도를 AI로 끌어올렸습니다

문제

HTTP 요청을 AI 도구로 연결하려면 주소뿐 아니라 검증한 동작, 이해할 수 있는 입력과 연결 설정이 필요합니다. FirstCall은 요청 이력과 레시피를 로컬에 저장하며, 요청 검증과 도구 호출은 사용자가 선택한 API로 직접 보냅니다.

사용 흐름

요청을 읽고 입력을 채워 실제 검증 요청을 보냅니다. 성공한 요청에 도구 설명을 붙여 새 MCP 패키지로 내보내고, AI 클라이언트에 연결 설정과 인증 환경 변수를 제공합니다. 런타임이 함께 들어 있어 데스크톱 내보내기에 코드 빌드나 npm 설치가 필요하지 않습니다.

v0.3.1에서 달라진 점

선택 query·header를 비워 두면 해당 항목 전체가 요청에서 생략됩니다. 지정한 값과 필수 입력 검사는 유지합니다. 패키지나 앱을 옮긴 뒤에는 connect --package로 현재 절대 경로의 연결 설정을 다시 얻을 수 있으며, 이 작업은 패키지를 수정하거나 API를 호출하지 않습니다.

지원 범위와 직접 해보기

v0.3.1은 macOS Apple Silicon 앱·CLI 배포판이며 ad-hoc 무결성 서명만 있고 Apple 공증은 없습니다. Try an example에서 공개 GitHub 저장소 조회를 검증하고 MCP 도구로 내보내며 시작할 수 있습니다. 런타임은 GET·HEAD를 기본 허용하며 쓰기는 명시적으로 허용해야 합니다. 이번 버전의 Windows·Linux·Intel Mac 바이너리는 제공하지 않습니다.

주요 프로젝트 03

PR 의존성 리스크 점검 확장 · gh-dep-risk

rad1092/gh-dependency-risk
개인 프로젝트 · v0.2.0 릴리스
GoGitHub CLI ExtensionDependency Review APIGitHub Actions

코드 변경(PR)에 새로 들어온 외부 라이브러리가 보안상 위험하지 않은지, 리뷰어가 명령어 한 번으로 확인하게 해주는 도구입니다

11점검 가능한 생태계 (npm, pip, Go, Maven 등)
1설치 = 명령어 한 줄
0서버, DB, 상시 인프라
AInpm, pip, Go 등 도구마다 다른 라이브러리 기록 방식을 정리하고 예외 상황을 점검할 때 AI를 활용해 빠르게 테스트 케이스를 갖췄고, "어디까지 지원하고 무엇은 지원하지 않을지" 범위는 제가 직접 정했습니다

문제

요즘 소프트웨어는 외부 라이브러리를 수십~수백 개씩 가져다 쓰고, 그중 하나에 취약점이 있으면 전체가 위험해지는데, 리뷰어가 PR에 새로 추가된 라이브러리의 위험을 코드 검토 중에 빠르게 파악하긴 어려웠고, 그렇다고 상시 켜두는 서버나 DB 같은 무거운 시스템은 작은 팀엔 부담이었습니다

내 역할 — 개인 프로젝트, 설계부터 배포까지

  • 설치와 운영 부담 없이 리뷰어가 필요할 때만 실행하는 가벼운 도구로 방향을 잡음
  • 이미 쓰는 GitHub 로그인을 그대로 활용해 바로 실행되게 설계
  • CI를 실패시키지 않고 리뷰어의 판단을 돕는 형태로 결과를 전달하도록 결정

한 일

  • 서버 대신 GitHub CLI 확장(작은 실행 파일 하나)으로 만들어 설치 한 줄로 끝나게 했습니다
  • 먼저 GitHub 공식 보안 데이터를 사용하고, 불가능할 때만 프로젝트 파일을 직접 읽는 대체 방식으로 전환
  • 점검 대상(npm, pip, Go 등)과 지원 범위를 명확히 한정해 과한 분석으로 잘못된 결과를 내지 않도록 문서로 명시
  • 결과는 PR 댓글로 깔끔하게 정리(중복 없이 갱신)하고, 자동 테스트에 더해 npm과 pnpm, Yarn 실제 PR 픽스처 저장소로 스모크 테스트를 돌려 안정성을 검증

결과

  • gh extension install rad1092/gh-dep-risk 한 줄로 설치하고 사용 가능
  • npm, pip, Go, Maven 등 11개 생태계의 라이브러리 위험을 확인
  • CI를 멈추지 않고 리뷰 흐름 안에서 보안을 점검하는 가벼운 방식을 만들었습니다

2026.10 — 오픈소스

도구 모음과 최근 업데이트

API 연결, 문서·파일 검토, 작업 계획과 소프트웨어 테스트·디버깅을 위한 9개 프로젝트입니다. 현재 공개 릴리스와 직접 따라 할 수 있는 시작 경로를 연결했습니다. 사전 공개 여부와 운영체제별 범위는 각 안내에서 확인할 수 있습니다.

FC↗

FirstCall

API를 AI 클라이언트에 연결하려는 개발자가 curl·OpenAPI 요청을 실제로 검증하고, 용도와 입력을 설명한 로컬 MCP 도구로 내보냅니다.

Rust · GUI · CLI · MCP
AN↗

Annotrail

PDF 주석 이전

논문·교재 개정판을 읽는 사용자가 이전 PDF의 하이라이트와 댓글을 새 PDF의 텍스트와 대조하고, 승인한 주석을 새 파일로 옮깁니다.

Java · PDFBox
CB↗

ConflictBench

Syncthing 충돌 검토

Syncthing 사용자가 충돌 파일의 텍스트·이미지·메타데이터를 비교하고, 원본 유지·충돌본 사용·둘 다 보존 중 하나를 직접 선택합니다.

C++ · Qt
SS↗

ShopShift

소규모 작업장의 계획 담당자가 ERP에서 내보낸 CSV·XLSX로 일일 작업을 배치하고, 잠금과 수동 시작 시각을 유지하며 충돌과 대안을 검토합니다.

Python · PySide6 · OR-Tools
TP↗

Treeport

내보내기·압축·배포 파이프라인 개발자가 폴더, ZIP 또는 JSONL 목록의 이름 충돌과 경로 길이를 대상 모델에 맞춰 읽기 전용으로 검사합니다.

Go · CLI
LC↗

Lifecase

하위 프로세스를 실행하는 앱 개발자가 제어된 네이티브 fixture로 프로세스 종료, 출력 EOF, 취소와 자식 프로세스 정리를 각각 테스트합니다.

C++ · .NET · Go
PS↗

PaperStager

묶음 PDF를 정리하는 사용자가 페이지 미리보기로 문서 경계를 나누고, 텍스트 규칙으로 제안된 파일명을 검토한 뒤 승인하여 내보냅니다.

C# · Avalonia
SP↗

SerdeProof

Java 개발팀이 실제 DTO·매퍼 설정·페이로드 코퍼스를 두 직렬화 빌드에서 실행해 입력 수용, JSON 차이와 생산자·소비자 조합을 비교합니다.

Java 17 · CLI
MA↗

Matcha

게임보이 홈브루 개발자와 에뮬레이터 학습자가 CPU·메모리·화면을 관찰하고, 저장 상태를 재생하거나 MCP 도구로 같은 실행을 반복합니다.

Rust · WASM · MCP

WHAGO에서 도구별 사용 흐름 비교하기 ↗

더 보기

그 외 작업

🦺↗

건설현장 PPE 안전장구 감지

사진과 동영상, 웹캠에서 작업자의 안전헬멧과 안전조끼 착용 여부를 감지하는 앱으로, 사람 박스 기준 후처리로 오탐을 줄이고 작업자별 착용 상태를 추적합니다

PythonYOLOGradioOpenCV
📈↗

SEC 공시 알림 인박스

관심 종목의 미국 SEC 공시(8-K, Form 4)를 감시해 플래그 사유와 함께 보여주고, Slack과 웹훅, 메일로 신호를 전달하는 셀프호스팅 도구입니다

PythonSQLiteDocker
🪞↗

스마트 미러 AIoT 운동 코칭

화면과 비전 게이트웨이, AI 코칭 엔진을 한 저장소로 묶은 통합본으로, 자세 분석과 운동 루틴 생성, 실시간 코칭을 연결합니다

PythonWebSocketSQLiteAIoT
🔌↗

FirstCall API Lookup MCP

FirstCall로 만든 읽기 전용 MCP 서버로, 공개 사용자 정보를 조회하는 툴 하나를 AI 에이전트가 바로 쓸 수 있게 제공합니다

TypeScriptMCPNode
🧭↗

취업 코치형 에이전트

희망 직무를 입력하면 채용 공고 탐색부터 분석 리포트와 자소서 초안, 면접 대비, 합격 로드맵까지 한 흐름으로 정리합니다

StreamlitFastAPISQLite
⌨️↗

ASCII 다이어그램 에디터

브라우저에서 동작하는 ASCII 다이어그램 에디터로, 고정 격자 위에서 그린 결과를 실제 텍스트로 렌더링합니다

TypeScriptViteClient-side

전체 저장소는 저장소 목록 페이지에서 볼 수 있습니다

연락

함께 일해요

새로운 협업이나 프로젝트 제안은 언제든 환영하니 편하게 연락 주세요

Built with Jekyll · Designed & developed by HongDae Kim — with a little help from AI