더 이상 지켜보지 않게 된 의존성을 위한 조기 경보 시스템.
AI 시대에는 유지할 수 있는 것보다 더 많은 Node.js 프로젝트를 출시하게 됩니다. Sentinello는 그 하나하나를 지켜보며 npm 의존성에 숨은 알려진 CVE를 드러냅니다 — 잊힌 프로젝트가 사고로 이어지기 전에.
명령 하나로 실행:
docker run -d \
--name sentinello \
-p 3870:3000 \
-v sentinello-data:/app/data \
-v sentinello-nvm:/root/.nvm \
-v ~/Developer:/roots/personal:ro \
ghcr.io/walkofcode/sentinello:latestlinux/amd64 및 arm64에서 실행
계정 불필요. SaaS 없음. 텔레메트리 없음. Docker 이미지 하나와 SQLite 파일 하나 — 코드와 발견 결과가 결코 당신의 머신을 떠나지 않습니다.
기능
자체 호스팅 포털 하나에 모두 — 외부 서비스 없음, 데이터가 네트워크를 떠나지 않음.
단일 분류 대기열
수십 개의 체크아웃에 흩어진 npm audit 대신, 전체 포트폴리오의 CVE를 한곳에서 보고 분류하세요.
프로젝트별 또는 라이브러리별 탐색
어떤 저장소든 들어가 발견 결과, 수정 버전, 기록을 확인하거나 — 취약한 패키지로 전환해 영향을 받는 모든 프로젝트를 보고 한 번에 모든 곳에서 음소거하세요.
지속적인 스캔
백그라운드 워커가 일정에 따라 다시 스캔하므로, 확인하는 것을 기억하지 않아도 새 권고가 나타납니다.
다중 소스
npm audit를 넘어 OSV 데이터베이스와 대조하여 더 넓은 CVE 범위와 알려진 악성 패키지 탐지를 제공합니다.
알림 및 웹훅
실패와 발견 알림을 Slack, Telegram 또는 단순한 웹훅으로 받아보세요 — 루트나 프로젝트 단위로 범위를 지정하고, 선택한 언어로. 자동 수정 에이전트를 위한 JSON 또는 일반 텍스트 페이로드도 제공합니다.
MCP 서버
Claude Desktop, Cursor 등 MCP 클라이언트를 연결해 채팅을 떠나지 않고 발견 항목, 프로젝트, 라이브러리를 조회하고 스캔을 실행하세요.
권고 내보내기
프로젝트나 라이브러리의 발견 결과를 Markdown으로 내보내세요. 팀이나 LLM을 위해 맞춤 설정 가능한 해결 프롬프트가 포함됩니다.
이미지 하나, 파일 하나
Docker 이미지 하나와 SQLite 파일 하나. 데이터베이스 서버도, 메시지 큐도, 클라우드 의존성도 없습니다.
자동 등록되는 Roots
/roots 아래에 마운트한 것은 무엇이든 시작 시 등록되고 스캔됩니다 — 디렉터리 이름이 그 라벨이 됩니다.
프로젝트별 Node
각 프로젝트의 .nvmrc를 존중하여, 고정된 Node 버전을 한 번만 설치하고 캐시합니다.
10개 언어
포털 UI, 스캔 사유 코드, 상태가 10개 언어로 현지화되어 있습니다.
스크린샷
실제 동작 보기 — 몇 개의 데모 프로젝트를 스캔하는 포털. 아무 이미지나 클릭하면 확대됩니다.
비교
Sentinello는 더 무거운 Dependency-Track도, 더 저렴한 Snyk도 아닙니다. 다른 영역을 차지합니다: 아무도 파이프라인에 연결하지 않은 Node 프로젝트의 롱테일입니다.
| Sentinello | Dependency-Track | Snyk | Dependabot | |
|---|---|---|---|---|
| 설정 불필요 — 폴더만 지정 | ~ | ~ | ||
| SBOM / CI 단계 불필요 | ||||
| 실제 해석된 잠금 파일 스캔 | ~ | |||
| 악성 패키지 탐지 | ||||
| 자체 호스팅, SaaS 없음 | ||||
| 단일 이미지 + SQLite | ||||
| AI 네이티브(MCP + 내보내기) | ~ | |||
| 다언어(Python, Go, …) | 예정 | |||
| 엔터프라이즈 정책 / VEX | ~ | ~ |
Dependency-Track는 누군가 SBOM 파이프라인으로 계측한 프로젝트만 봅니다. Sentinello는 당신이 잊은 것을 찾습니다. 엔터프라이즈 정책에서는 그쪽이 더 강력하고, 다중 언어 지원은 Sentinello의 로드맵에 있습니다 — 이미 성숙한 파이프라인에서 그 도구들을 돌리고 있다면 그대로 두세요. Sentinello는 아무도 지켜보지 않는 나머지 포트폴리오를 위한 것입니다.
우리가 이것을 만든 이유
AI 시대에는 유지할 수 있는 것보다 더 많이 출시하게 됩니다.
이제 한 명의 개발자가 한 해에 열 개가 넘는 프로젝트를 띄우고, 납품하고, 떠납니다 — 마케팅 사이트, 고객 대시보드, 조용히 프로덕션에 올라간 사이드 프로젝트. 예전에는 그것들을 안전하게 지키려면 각 체크아웃에 일일이 SSH로 접속해 npm audit를 직접 돌리거나, Next.js CVE가 터지고 며칠 뒤에야 뉴스 헤드라인으로 알게 되는 식이었습니다. 열 개가 넘는 저장소를 그렇게 챙기는 사람은 없으니, 결국 아무도 하지 않게 됩니다.
치명적인 원격 코드 실행 결함을 가진, 잊힌 의존성 하나면 충분합니다. 더 이상 지켜보지 않게 된 가장 단순한 사이트가 침투 경로가 됩니다.
“그냥 Snyk나 Dependabot을 쓰면 되지 않나요?” 그것들은 당신이 직접 연결해 둔 CI 파이프라인 안에서만 동작합니다 — 그런데 롱테일에는 애초에 파이프라인이 없습니다. Sentinello는 그 나머지 전부를 위한 조기 경보 시스템입니다. 폴더 하나를 가리키면 당신이 잊은 모든 프로젝트를 지켜보고, 새로운 CVE가 사고로 번지기 전에 하나의 대기열에 드러냅니다.
작동 방식
세 단계. 프로젝트에 설치할 에이전트도, 만들 계정도 없습니다.
코드를 가리키세요
저장소를 /roots 아래에 마운트하거나 설정 → Roots에서 추가하세요. 각 디렉터리는 시작 시 자동으로 등록되고 탐색됩니다.
지속적으로 스캔
백그라운드 워커가 일정에 따라 의존성을 알려진 CVE와 대조하며, 필요할 때 각 프로젝트가 고정한 Node 버전을 설치합니다.
하나의 대기열에서 분류
모든 프로젝트의 모든 발견 결과가 심각도로 필터링할 수 있는 하나의 대기열에 모입니다 — Slack, Telegram 또는 웹훅으로의 알림은 선택 사항입니다.
누구를 위한 것인가
Sentinello는 지켜볼 수 있는 것보다 더 많은 것을 프로덕션에 두고 있는 모든 이를 위한 것입니다 — 혼자 개발하는 사람, 작은 팀, 고객 작업을 저글링하는 에이전시.
- 출시 후에도 오랫동안 안전해야 하는 사이드 프로젝트와 고객 사이트를 출시합니다.
- 모든 저장소에 CI를 연결하지 않고도 포트폴리오 전반을 한눈에 보고 싶습니다.
- 코드 인벤토리를 SaaS에 넘기기보다 자체 호스팅하는 편을 선호합니다.
이미 성숙한 파이프라인에 Snyk나 Dependabot을 연결해 둔 대규모 조직이라면 그대로 쓰세요 — Sentinello는 엔터프라이즈 SCA를 대체하려는 것이 아닙니다. 아무도 지켜보지 않는 나머지 포트폴리오를 위한 것입니다. 오픈 소스이며 MIT 라이선스이므로, 무엇을 하는지 정확히 읽어볼 수 있습니다.
릴리스 노트
Sentinello는 자주 업데이트됩니다 — 각 릴리스가 제공한 내용입니다.
더 간단해진 MCP 설정 — 환경 변수 불필요
v2.3.0 · 2026. 6. 9.- 이제 MCP를 설정 → MCP에서 전부 구성합니다: 토큰을 생성하면 /api/mcp 엔드포인트가 켜지고, 지우면 꺼집니다 — SENTINELLO_MCP_ENABLED와 SENTINELLO_MCP_API_TOKEN 환경 변수는 제거되었습니다(기존 환경 변수 토큰은 업그레이드 시 한 번만 가져옵니다)
- Claude Code, Codex, Cursor, Claude Desktop용 붙여넣기만 하면 되는 연결 스니펫, 토큰이 미리 채워져 있습니다
- 환경 변수로 SENTINELLO_PORTAL_BASE_URL을 설정하면 우선 적용되며 부팅할 때마다 다시 적용되므로 설정 → 고급에서 읽기 전용으로 표시됩니다
더 적은 오탐과 스스로 정리되는 발견 항목
v2.2.0 · 2026. 6. 9.- 악성코드 권고가 이제 정확히 영향받는 버전과 대조됩니다 — 한때 침해되었던 패키지라도 깨끗하거나 이미 수정된 버전은 더 이상 표시되지 않습니다
- 중복된 발견 항목이 이제 다음 스캔에서 스스로 해결되어, 오래되었거나 남겨진 항목이 자동으로 정리됩니다
- 프로덕션과 개발 라벨이 이제 모든 소스(npm 및 OSV)에서 일관된 단일 방식으로 계산됩니다
더 깔끔한 프로젝트 헤더와 일관된 필터
v2.1.0 · 2026. 6. 6.- 프로젝트 헤더 간소화 — 제목 옆에서 바로 이름 변경, 음소거와 태그는 아이콘으로
- 의존성 유형 필터 옆의 새 드롭다운에서 소스(npm / OSV)별로 발견 항목 필터링
- 앱 전반의 통일되고 일관된 드롭다운, 시간대 같은 긴 목록은 입력하여 검색 지원
더 명확한 업그레이드 안내
v2.0.1 · 2026. 6. 4.- 2.0 호환성 깨짐 변경에 대한 업그레이드 단계 보강
- README에 localhost 전용 포트 바인딩 명시
다중 소스 스캔과 기본값으로 안전한 강화된 설치
v2.0.0 · 2026. 6. 4.- 선택적 두 번째 소스로서의 OSV(설정 → 소스, 기본값 꺼짐). 악성 패키지 탐지를 갖추고 로컬 캐시의 공개 OSV 데이터베이스와 대조합니다
- 이제 검출 결과가 소스 간에 병합됩니다 — 취약점당 한 행으로, 각 소스를 태그하고 사용 가능한 최선의 수정과 의존성 경로의 합집합을 보여주며, 소스 필터와 의존성 경로 팝오버를 제공합니다
- 보안 강화: MCP 엔드포인트는 기본적으로 꺼져 있고 토큰이 필요하며, 웹훅 전송은 SSRF로부터 보호되고, 선택적 포털 로그인 게이트가 있으며, 컨테이너는 비권한 사용자로 실행됩니다
- 설정이 이제 사이드바와 프로필 페이지를 갖춘 최상위 섹션이 되었습니다
MCP 연동 및 새로운 기능
v1.4.0 · 2026. 5. 29.- Claude Desktop, Cursor 등 클라이언트를 위한 /api/mcp MCP 서버
- 서버 URL과 토큰 관리를 갖춘 새로운 설정 → MCP 섹션
- 새로운 기능 배지와 릴리스 노트 기록
푸터 버전 표시 수정
v1.3.1 · 2026. 5. 28.- 실행 중인 버전이 푸터에 깔끔하게 표시됩니다
알림 개선
v1.3.0 · 2026. 5. 28.- 환경별로 알림 필터링
- 더 간단해진 알림 대상 편집 양식
- 기존 알림 대상 복제
프로젝트 및 라이브러리 페이지
v1.2.0 · 2026. 5. 24.- 홈 화면이 전용 프로젝트 페이지와 라이브러리 페이지로 분리되었습니다
일정 실시간 다시 로드
v1.1.2 · 2026. 5. 24.- 포털에서 변경 사항을 저장하면 워커가 즉시 스캔 일정을 다시 로드합니다
더 안전한 삭제와 더 명확한 업데이트 배너
v1.1.0 · 2026. 5. 23.- 루트와 알림 대상을 삭제하기 전에 확인
- 업데이트 알림이 닫을 수 있는 상단 배너로 이동
- 호스트 마운트가 사라지면 워커가 오래된 루트를 정리합니다
스캐너 정확도 수정
v1.0.1 · 2026. 5. 23.- 설치된 버전이 실제로 취약 범위에 없는 점검 결과 제외
- 발송 기록이 있는 알림 대상을 삭제할 수 있도록 허용
첫 오픈 소스 릴리스
v1.0.0 · 2026. 5. 23.- Sentinello의 첫 공개 릴리스
로드맵
지금 Sentinello는 당신의 Node.js 의존성을 지켜봅니다. 앞으로 나아갈 방향과 요청할 수 있는 것을 소개합니다.
더 똑똑한 우선순위
예정악용 가능성과 취약한 코드가 실제로 도달 가능한지를 기준으로 발견 항목의 순위를 매겨 중요한 것부터 처리합니다.
더 많은 생태계
예정동일한 파일시스템 네이티브 탐색으로 스캔을 Node를 넘어 Python, Go, Rust로 확장합니다.
더 많은 통합
예정더 많은 알림 채널과, 팀이 이미 사용하는 도구에 Sentinello를 연결하는 방법.
정적 분석(SAST)
예정의존성의 알려진 CVE뿐 아니라, 당신의 소스 코드에 있는 위험한 패턴도 잡아냅니다.
시크릿 및 라이선스 스캔
예정커밋된 시크릿과 라이선스 문제를 같은 포트폴리오, 같은 대기열에서 표시합니다.
다음에 통합하거나 스캔하고 싶은 것을 알려주세요 — GitHub에 이슈를 열어 로드맵을 함께 만들어요.