Skip to main content
Glama

SENTINEL AGENT — 에이전트 기반 운영 앱 빌더

Foundry 스타일 운영 온톨로지를 위한 AI 명령 계층: MCP를 통해 연결되고, 실제 조회된 데이터로 자연어 질문에 답변하며, 인간 승인을 거친 작업을 제안하고, 요청 시 운영 대시보드를 생성하는 LLM 에이전트 — 자체 구축된 Palantir-AIP 스타일 운영 도구입니다.

계보: 이 프로젝트는 Locari (제가 운영하는 리드 생성 SaaS — 프로덕션에서 운영 중, 비공개 저장소)를 위해 구축한 AI 사이트 생성 에이전트를 "LLM이 웹사이트를 생성"하는 것에서 "LLM이 거버넌스 하에 엔터프라이즈 온톨로지를 운영"하는 것으로 발전시킵니다: 동일한 에이전트 루프 DNA이지만, 모든 기능이 이제 타입화되고, 허용 목록에 등록되며, 미리보기, 인간 승인, 감사가 적용됩니다. 이는 PACIFIC SENTINEL (프로젝트 1)과 연동되며, 해당 프로젝트의 FastAPI 온톨로지를 이 에이전트가 직접 사용할 수 있습니다.

전체 데모: Q&A, 승인된 작업, 생성된 대시보드

3-프롬프트 데모

모든 것을 실행하세요 (오프라인, API 키 불필요):

.venv/bin/python scripts/demo.py

또는 웹 앱에 다음을 입력하세요:

#

프롬프트

확인할 내용

1

Which units are critically low on water?

에이전트가 온톨로지 스키마에 기반하여 필터링된 쿼리를 실행하고, 테이블과 함께 답변합니다 — 모든 도구 호출이 오른쪽 패널에서 실시간으로 스트리밍됩니다.

2

Send 500 water from DEP-1 to UNIT-1

에이전트가 제안합니다; 미리보기 카드에 변경 전/후 상태와 제약 조건 검사 결과가 표시됩니다. 승인 및 실행을 클릭하기 전까지는 아무것도 변경되지 않습니다. 그런 다음 보급소 재고를 다시 질문하여 상태 변경을 확인하고, GET /audit으로 추적을 확인하세요.

3

Build me a dashboard for the depots

에이전트가 실시간 데이터를 조회하고 JSON 대시보드 스펙을 게시합니다; 캔버스에 통계 타일, 테이블, 막대 차트가 렌더링됩니다.

Q&A

작업 미리보기

실행됨

대시보드

Related MCP server: Vela MCP Server

MCP란 무엇이며, 이것이 Palantir AIP를 어떻게 반영하는가

MCP (Model Context Protocol) 는 LLM에 외부 시스템에 대한 타입화되고, 발견 가능하며, 경계가 있는 도구 표면을 제공하는 개방형 프로토콜입니다. 서버는 도구(이름 + 설명 + JSON 스키마)를 노출합니다; 모든 클라이언트(에이전트, IDE, 채팅 앱)가 연결하여 이를 나열하고 호출합니다. 프로토콜 경계는 거버넌스 경계입니다: 모델은 서버가 노출하는 것만 수행할 수 있습니다.

이 프로젝트는 Palantir의 AIP 아키텍처를 축소한 것입니다:

이 프로젝트

Palantir AIP / Foundry 대응

온톨로지 백엔드 (StubOntology, HttpOntology → 프로젝트 1의 FastAPI) — 타입화된 객체 (SupplyDepot, DeployedUnit, ForwardOperatingBase)

Foundry 온톨로지: 원시 데이터 위의 의미론적 객체, 모든 다운스트림 표면이 사용하는 하나의 허브

MCP 읽기 도구 (list_object_types, query_objects)

AIP 에이전트가 기반 정보를 얻기 위해 사용하는 온톨로지 API / 객체 쿼리

propose_action → 제약 조건 검사가 포함된 미리보기 → 인간 승인 → execute_action

제출 기준 + 인간 승인 워크플로우가 있는 AIP 액션 타입 — 쓰기는 거버넌스된 검증된 작업이며, 원시 테이블 편집이 아님

운영자 키 게이트 승인 + 단일 사용 토큰 + 에이전트 도구 허용 목록

에이전트 기능과 인간 권한을 분리하는 AIP

모든 제안/승인/실행/거부의 추가 전용 감사 로그

AIP 평가 및 감사 추적

publish_dashboard JSON 스펙 → 고정 React 렌더러

온톨로지 데이터 위의 Workshop 스타일 운영 앱 (선언적 구성, 임의 코드 아님)

에이전트 루프 (Claude + MCP 도구 + 이벤트 스트림)

도구 접근 + 스트리밍 추론이 있는 AIP Agent Studio 에이전트

인간-인-더-루프 작동 방식

 user ──ask──▶ Agent (LLM)                 MCP server                FastAPI (operator)
                │  propose_action(...) ──▶ validate params
                │                          run constraint checks
                │                          build before/after PREVIEW   (no mutation)
                │ ◀── proposal + action_id ─┘
 UI shows preview card ──── human clicks Approve ──▶ approve_action(operator_key)
                                                     └─ mints SINGLE-USE token
                                                   execute_action(token)
                                                     ├─ re-validates vs CURRENT state
                                                     ├─ applies the change
                                                     └─ audit log: proposed→approved→executed

세 가지 강제 계층이 에이전트를 제안 전용으로 유지합니다:

  1. 허용 목록 — approve_action / reject_action / execute_action은 LLM의 도구 목록에서 제거됩니다; 에이전트 루프는 부여되지 않은 도구에 대한 호출을 거부합니다.

  2. 기능 게이팅 — 승인에는 오케스트레이션 서버의 프로세스에만 존재하는 OPERATOR_KEY가 필요합니다 (MCP 하위 프로세스 환경에 주입됨). 어떤 LLM 컨텍스트도 이를 포함하지 않으므로, 에이전트는 원칙적으로도 승인 토큰을 생성할 수 없습니다.

  3. 토큰 메커니즘 — 토큰은 단일 사용 (secrets.compare_digest, 첫 사용 시 소멸)이며 실행은 현재 상태에 대해 모든 제약 조건을 재검증하므로, 오래된 승인으로 보급소를 초과 인출할 수 없습니다.

동일한 철학이 대시보드에도 적용됩니다: 에이전트는 엄격하게 검증된 JSON 스펙 (extra="forbid", 3가지 위젯 유형, 제한된 크기)을 생성하며, 이는 고정된 React 컴포넌트가 해석합니다 — HTML, JSX 또는 실행 코드는 절대 아닙니다.

아키텍처

 React 18 + Vite + TS + Tailwind          FastAPI (port 8100)              MCP server (stdio subprocess)
 ┌──────────────┬───────────────┐   WS    ┌──────────────────────┐  MCP    ┌─────────────────────────┐
 │ Chat panel   │ Actions cards │ ◀─────▶ │ /ws  agent events    │ ◀─────▶ │ 9 tools over ontology   │
 │ (markdown)   │ Live trace    │  HTTP   │ /actions/{id}/approve│  stdio  │ ┌─ StubOntology (dflt)  │
 │              │ Dashboard     │ ◀─────▶ │ /actions/{id}/reject │         │ └─ HttpOntology ──▶ Project 1
 │              │ canvas        │         │ /audit  /health      │         │    (pacific-sentinel)
 └──────────────┴───────────────┘         │ OpsAgent loop + LLM  │         └─────────────────────────┘
                                          │ (Claude ⟷ MockLLM)  │
                                          └──────────────────────┘

실행 방법

# Backend
python3.11 -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest                  # 60 tests, fully offline
.venv/bin/python scripts/demo.py            # scripted 3-prompt demo (mock LLM)
.venv/bin/python scripts/smoke_mcp.py       # raw MCP stdio smoke run

# CLI
.venv/bin/python -m ops_agent.cli --llm mock "Which units are critically low on water?"

# Web app: API on :8100, frontend on :5174
LLM_MODE=mock .venv/bin/python -m uvicorn ops_agent.server:app --port 8100
cd frontend && npm install && npm run dev   # open http://localhost:5174
npm test                                    # 8 Vitest component tests

# Real LLM (claude-opus-4-8; key read from env, never hardcoded)
export ANTHROPIC_API_KEY=sk-ant-...
.venv/bin/python -m ops_agent.cli "Which units are critically low on water?"

# Against Project 1's live ontology instead of the stub
ONTOLOGY_BACKEND=http ONTOLOGY_API_URL=http://localhost:8000 ...

LLM 모드 — LLM_MODE=auto (기본값: ANTHROPIC_API_KEY가 설정되면 실시간, 그렇지 않으면 모의) / mock / live. MockLLM은 도구 호출 모델처럼 동작합니다 (기반 쿼리 → 필터링된 쿼리 → 답변; 액션 파싱; 대시보드 구축) 따라서 테스트와 데모를 포함한 모든 흐름이 오프라인에서 결정론적으로 실행됩니다.

마일스톤

  • M1 MCP 서버: 교체 가능한 백엔드 + 테스트를 통한 읽기 전용 온톨로지 도구

  • M2 에이전트 루프: MCP를 통한 LLM 도구 호출, 허용 목록, 감사 이벤트, CLI

  • M3 FastAPI WebSocket 스트리밍 + React 채팅/추적 UI

  • M4 제안 → 인간 승인 (운영자 키 + 단일 사용 토큰) → 실행 → 감사

  • M5 대시보드 스펙 생성 (안전한 JSON) + React 렌더러 (recharts)

  • M6 데모 스크립트, 스크린샷, 이 README

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables engineers and plant managers to interact with manufacturing systems using natural language, providing machine health analysis, KPI dashboards, predictive maintenance, and automated workflow execution via MCP.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables governed, agent-agnostic data exploration by allowing users to ask natural language questions through MCP-compatible agents, executing safe, permission-scoped queries against data sources and returning interactive charts.
    8 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables natural language querying of SQL databases and REST APIs through the MCP protocol, grounded in a semantic layer.
    165 npm
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables natural-language SQL queries across multiple databases (ClickHouse, Teradata, PostgreSQL, MySQL, SQL Server, DB2, Oracle, MongoDB) with dialect-correct SQL generation, PII masking, and security-by-construction controls.
    MIT