보안 정보를 외부 서버로 전송할 수 없는 현장을 위한 AI 코딩 에이전트 IDE 'Teaspoon IDE' 정식 버전 v1.0.0 출시
요약
보안 민감 정보를 외부 서버로 전송할 수 없는 환경에 최적화된 AI 코딩 에이전트 IDE 'Teaspoon IDE'가 정식 버전 v1.0.0으로 출시되었습니다. 이 독립형 앱은 파일 탐색기, Monaco 에디터, AI 채팅 등을 통합하고, 모든 쓰기/명령어 실행 시 승인 다이얼로그와 롤백 기능을 제공하여 보안과 사용자 경험을 강화했습니다.
핵심 포인트
- 외부 서버 전송 없이 코딩 가능한 온프레미스 환경에 최적화됨.
- VS Code 확장 기능의 제약에서 벗어난 독립형 애플리케이션 구조.
- AI가 변경하는 모든 내용은 승인 다이얼로그와 롤백 기능을 통해 안전하게 관리됨.
- 사용자가 직접 API 키를 사용하며, 로컬 LLM 연동 시 완전 오프라인 작동 가능.
외주 및 기업 내부 활용을 염두에 두고, 코드를 외부에 노출하지 않도록 설계된 AI 코딩 에이전트 IDE 'Teaspoon IDE'의 정식 버전 v1.0.0을 출시했습니다.
9월 초 공개 이후 2주가 채 안 되는 기간 동안 거의 매일 업데이트를 거쳐 v0.1.0에서 v1.0.0까지 도달했습니다. 구 이름인 Forger에서 변경하게 된 경위도 포함하여, 본 기사에서는 'Teaspoon IDE란 무엇인가'부터 '정식 버전까지 강화한 점'까지를 총정리하여 소개합니다.
파일 탐색기, Monaco 에디터, AI 채팅, Git 작업, 진정한 TTY 지원 터미널이 하나로 통합된 Electron 기반 애플리케이션입니다. VS Code 포크(fork)나 확장 기능이 아닌, 단독으로 구동되는 독립 앱입니다.
AI가 파일 목록 가져오기/읽기/검색/편집을 여러 단계에 걸쳐 자율적으로 실행하는 에이전트 루프를 가지고 있으며, 쓰기/차분 편집/명령어 실행은 모두 승인 다이얼로그를 거칩니다. 체크포인트/롤백 기능을 통해 AI가 변경한 내용만 안전하게 취소할 수 있습니다.
실무에서 AI 코딩 도구를 사용하면서 느꼈던 불만이 계기가 되었습니다.
보안 의무 정보를 외부 서버로 보내고 싶지 않다— 외주 업무의 결과물 작성 등, 기업 내부 활용을 고려할 때 코드나 엔지니어링 지식이 벤더의 서버를 거치는 설계는 피하고 싶었다 -
VS Code 확장 기능의 속박(呪縛)— 확장 기능은 다른 확장과 결합되어 편리한 반면, GitHub Copilot과의 간섭 및 충돌로 고민하게 된다 -
초보자에게 이해하기 쉬운 UI가 필요하다— AI 엔지니어링 초보자에게는 탐색기・에디터・콘솔・AI 채팅이 독립된 페인(pane)으로 보이는 것이 압도적으로 이해하기 쉽다 -
승인 없는 덮어쓰기는 인지 부하가 높다— AI가 임의로 소스를 덮어쓰면, 리뷰어인 인간의 부담이 엄청나게 커진다. 그래서 승인 다이얼로그와 롤백을 필수화했습니다 -
DinD(Docker-in-Docker) 전제가 필요한 도구는 도입 장벽이 높다— Docker-in-Docker로 작동하는 편리한 OSS 에이전트도 있지만, 초보자에게는 어렵다. 단일 exe 파일로 구동되는 것이 필요했다 -
높은 비용 지불이 불가능한 조직도 있다— 인월(人月) 비즈니스 사고방식에서 벗어나지 못한 경영진의 조직에서는 월간 구독 AI IDE 도입 자체가 어려운 것이 현실입니다
없으면 만들자, 라는 생각으로 AI를 사용해 제작했습니다.
초기 공개 당시 이름은 'Forger'였으나, 동명이명 및 유사 명칭 프로젝트가 많아 검색성이 떨어졌기 때문에 v0.6.0에서 Teaspoon IDE로 개명했습니다(패키지명・리포지토리도 forger-ide → teaspoon-ide).
'티스푼(Teaspoon)'에는 '적은 양의 토큰으로 실무를 처리한다(a teaspoon of tokens)'는 설계 목표가 담겨 있습니다. 비용을 낮추기 위한 토큰 절약 설계는 이 이름 그대로 제품의 핵심입니다.
앱 자체는 무료(BYOK)— Gemini API 키를 직접 가져다 쓰는 방식. 월간 구독료도, API 요금에 마진을 붙이는 것도 없습니다. 사용한 만큼 Google에 직접 지불합니다 -
완전 오프라인 작동— Ollama + Gemma와 같은 로컬 LLM을 선택하면 통신처는 localhost뿐입니다. 코드가 외부에 나가지 않습니다 -
텔레메트리가 없다— 외부 통신은 자신이 설정한 LLM 엔드포인트로의 요청에 한정됩니다. 소스 공개이므로 '무엇이 전송되는지'를 스스로 검증할 수 있습니다 -
저비용— Gemini의 저렴한 Flash 계열 모델에 초점을 맞췄습니다. 실측 결과,
- 에이전트 루프의 대폭적인 견고화 — 취약한 로컬 모델에서 발생하기 쉬운 '손상된 명령어 출력'에 대한 대응을 포괄적으로 구현했습니다. - 마크다운 ``` 페인(fence) 내부・
:::
페인 내부의 명령어 기술을 올바르게 해석/무해화 -
...
- **편집 후 테스트의 표준화** — 테스트 스위트가 있는 프로젝트의 경우, 편집 후에 RUN_COMMAND로 테스트를 실행하고, 되돌리기(rollback)를 거쳐 완료 보고하는 흐름을 프롬프트에 포함했습니다. - **긴 대화의 압축(compaction)** — 최근 20 메시지를 초과하는 대화는 이전 턴을 요약하여 전송하는 로링 서머리 방식으로 변경되었습니다. 작은 모델의 컨텍스트 제한을 의식하지 않고도 길게 작업할 수 있습니다. - **프로젝트가 없어도 작동** — 폴더를 열지 않아도 대화를 시작할 수 있으며, AI가 파일을 작성하고 싶을 때 '프로젝트 생성 다이얼로그'로 안내합니다. - **CLOSE_PROJECT 명령어** — AI가 '프로젝트를 닫아라'라는 지시를 실행 가능하게 했습니다.
- **파일 접근의 강제 스코프** — 파일 관련 명령어는 프로젝트 루트 내에서 해결되는 경우에만 수용됩니다. `..`을 이용한 탈출, 절대 경로를 사용한 임의 파일 읽기, 해결 실패 시 폴백(fallback) 읽기를 모두 차단했습니다. - **LLM에게 절대 경로를 보내지 않음** — 컨텍스트와 명령어 결과는 모두 프로젝트 상대 경로로 변환됩니다. `C:\[사용자 이름]
ame`과 같은 OS 사용자명이 클라우드 제공업체에 유출되지 않습니다. - **API 키 클리어의 2단계화** — 오조작 방지 확인 버튼을 추가하고, 키 외 설정(모델 선택, 프록시 URL 등)은 삭제하지 않도록 수정했습니다.
- **어시스턴트 응답의 Markdown 렌더링** — 제목, 목록, 표, 코드 블록이 정형화되어 표시됩니다 (marked + DOMPurify를 통해 사니타이즈됨). - **Ollama의 스트리밍 응답** — 로컬 모델의 답변이 토큰 단위로 흐르도록 했습니다. 취소(cancel)가 실제로 HTTP 요청을 중단시킵니다. - **응답 시간 및 모델명 표시** — 각 답변에 소요 시간과 사용된 모델이 붙어, 모델별 속도 비교를 한눈에 알 수 있습니다. - **채팅 포커스 모드** — Ctrl+Shift+B로 사이드바, 에디터, 터미널을 숨기고 채팅을 전면화했습니다 (v0.9.0 추가). - **대화 목록** — 포커스 모드 시 왼쪽 레일에서 과거 대화를 일람/전환/삭제/신규 생성할 수 있습니다. - **대화 기록의 영속화** — localStorage에서 `userData/chat-history` JSON 파일로 이전되었습니다. 용량 제한과 손실 위험을 해소하여, 프로젝트를 열지 않은 대화도 저장 및 복원됩니다. - **탐색기의 자동 업데이트** — 외부 에디터나 git checkout에 의한 변경 사항을 파일 감시(file watching)로 즉시 반영합니다. Git 패널도 같은 신호로 업데이트됩니다. - **오른쪽 클릭 메뉴** — Electron 표준에는 존재하지 않는 컨텍스트 메뉴(복사/붙여넣기 등)를 구현했습니다. - **터미널의 자동 포커싱** — 스크롤 업으로 추적을 일시 정지하고, 전송 시 재개됩니다. 완료된 명령어 블록은 한 줄로 접힙니다. - **설정 화면의 폴딩 패널화** — v1.0.0에서 외관, AI 컨텍스트, LLM 제공업체, 프록시, 기록을 접을 수 있도록 정리했습니다.
- **GUI로 완결되는 Git** — 스테이징/커밋/Push・Pull에 더해, 리포지토리 클론, 원격 추가/갱신, 최초 커밋, upstream 포함 Push, `user.name`/`user.email` 설정까지 다이얼로그에서 실행 가능하게 되었습니다. - **프로젝트 폴더를 OS로 열기** — 탐색기 헤더에서 한 번에 파일 관리자를 시작할 수 있습니다.
v0.5.0에서 추가된, 회사/학교용의 관리 모드입니다.
- **사인인 게이트(Sign-in Gate)** — '조직의 사인인을 필수화'를 ON으로 설정하면, 조직 서버가 발급한 계정으로만 로그인해야 앱을 사용할 수 있습니다.
**가상 키 방식(Virtual Key Method)** — 로그인 시 서버에서 사용자 전용 가상 API 키가 발급되며, AI 요청은 조직의 LLM 프록시를 통해 이루어집니다. 실제 API 키는 단말기에 전달되지 않습니다.
**예산 배지(Budget Badge)** — 채팅 헤더에 할당된 예산 잔량을 %로 표시합니다 (금액은 비표시). 20% 미만일 경우 경고색, 0%일 경우 빨간색으로 변경됩니다.
**모델 허가 목록(Model Allowlist)** — 사용할 수 있는 모델은 서버가 제어하며, 개인의 모델 설정은 조직 모드 중 잠깁니다.
설정 화면에서 선택할 수 있는 테마가 대폭 늘었습니다. 각 테마는 에디터의 Monaco 테마도 전용으로 설계되었습니다.
- **Dark / Light / System / Organic Light** — 기본 4종 (구 Quiet Light는 따뜻한 계열의 독자적인 색상 배합으로 개명)
- **Muted Ocean** — 심야 바다를 연상시키는 차분한 블루
- **Ancient Console** — 녹색 인광 CRT에 대한 오마주. 눈에 편안한 탁한 초록색
- **Walnut** — 깊은 나뭇결에 금속성 글자색의 우디 다크
- **Heritage** — 베이지색 본체의 레트로 PC 느낌 라이트
- **Rich Wine** — 바의 와인 저장고 같은 붉은 기가 도는 다크
- **Violet Fizz** — 바이올렛 피즈 칵테일 색상. 깊은 보라색에 달빛을 머금은 노란색
- **Otegami** — 생성리 한지(和紙)에 먹의 농담과 낙관의 주홍색. 일본 서신을 모티브로 한 라이트 테마
- **Soda Float** — 하늘색 소다와 흰 거품의 팬시한 색상 배합
- **Modern Syntax eXtensible** — 레트로 PC의 푸른 화면 느낌. 줄이면...
- **Chaya** — 깊은 찻밭의 녹색을 배경 세계로 한 유기적인 다크
- **Coquette** — 리본과 레이스의 페일 핑크 라이트
일본어 UI에서는 이 테마들도 일본어 이름으로 번역됩니다 (예: Otegami → お手紙, Modern Syntax eXtensible → 8bit의 청춘).
- **일본어화의 철저함(徹底)** — v1.0.0에서 `lang/ja.json`을 대폭 확장했습니다. 애플리케이션 메뉴, 마우스 오른쪽 버튼 메뉴, 네이티브 다이얼로그(폴더 선택・내보내기 저장), IPC 에러, Gemini/Ollama/조직 로그인 에러 메시지까지 일본어로 통일되었습니다.
- **번역 파일 사용자 추가 가능** — `lang/<언어 코드>.json` 파일을 놓는 것만으로도 독자적인 언어를 추가할 수 있습니다.
- **커맨드 파서의 단위 테스트(Unit Test)** — 실제로 발생한 모든 깨진 모델 출력을 `npm run test:parser`로 검증합니다.
- **E2E 테스트 스위트** — Playwright를 사용하여 실제 애플리케이션을 실행하고, Gemini 엔드포인트를 스텁 처리하여 승인 흐름・파서・히스토리 저장을 자동 검증합니다 (`npm run test:e2e`).
- **사이트 개편** — 제품 페이지, 설정 가이드, 사용 예시, 테마 목록을 `cuculhart.com`에 정비했습니다.
Electron / React / TypeScript / Monaco Editor / Gemini API・Ollama / Vite / Playwright (E2E)
FSL-1.1-MIT(소스 공개형)입니다. MIT와는 조금 다르지만, 일반적인 사용은 무료로 자유롭습니다.
- **가능한 것**: 다운로드 및 이용 (개인/업무 무관), 개조・커스터마이징, 사내 툴로서의 도입, 라이선스 조항과 저작권 표시를 남긴 상태에서의 포크・재배포
- **불가능한 것**: Teaspoon IDE와 경쟁하는 상용 제품・서비스로서의 이용 (예: 이름을 바꾼 클론 판매)
- **각 릴리스는 공개 후 2년 뒤에 자동으로 MIT 라이선스로 전환**됩니다.
다운로드 (Windows 포터블 exe / Squirrel 인스톨러 / Linux deb):
설정 가이드 (Gemini API 키, Ollama, OpenAI 호환 API, 조직 모드):
사용 예시 (AI에게 오목을 만들게 하는 일련의 과정, 실비용 기록 포함):
테마 목록 (전체 14종 스크린샷):
피드백・오류 보고는 GitHub Issues에서 부탁드립니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기