Skip to main content
Glama

Centian

Release CI License

AI 에이전트가 실제로 수행하는 작업을 실시간으로 제어하고 검증하세요.
AI 에이전트는 "성공"의 의미에 대해 정렬되어 있지 않습니다.

Centian을 사용하면 성공을 정의하고 이를 강제할 수 있습니다.

→ 에이전트가 호출하는 모든 도구 호출을 확인하세요.
→ 안전하지 않은 작업을 즉시 차단하세요.
→ 작업이 단순히 실행된 것이 아니라 실제로 성공했는지 검증하세요.

작동 방식 확인 (2분 데모)

centian demo -a claude

실행 중에 다음을 관찰할 수 있습니다:

✔ 에이전트가 테스트 우회를 시도함 → 차단됨
✔ 작업 검증 실패 → 즉시 플래그 지정됨
✔ 워크플로우 위반 → 에이전트가 계획 단계를 건너뜀

→ Centian이 실시간으로 이를 포착합니다.

아직 설치하지 않으셨나요?

curl -fsSL https://raw.githubusercontent.com/T4cceptor/centian/main/scripts/install.sh | bash

또는 더 많은 옵션은 시작하기를 참조하세요.


문제점

AI 에이전트는 "성공"의 의미에 대해 정렬되어 있지 않습니다.

예시: 에이전트가 실패한 테스트를 수정합니다.

보이는 것: ✔ “작업 완료 - 테스트 통과”

하지만:

  • 에이전트가 코드가 아닌 테스트를 수정했습니다.

  • 실패 조건은 애초에 존재하지 않았습니다.

  • 코드는 여전히 깨져 있습니다.

→ 검증 없이는 이것이 성공처럼 보입니다.

Centian이란 무엇인가요?

Centian은 에이전트와 에이전트가 사용하는 도구 사이에 위치합니다:

Agent (Claude / Codex / Gemini) -- the brain
↓
Centian -- the control layer
↓
MCP Tools (filesystem, APIs, DB) -- the actions

모든 도구 호출은 Centian의 프록시를 통과하며, 이를 통해 다음을 얻을 수 있습니다:

  • 에이전트가 할 수 있는 작업에 대한 완전한 제어

  • 모든 작업에 대한 가시성

  • 작업이 실제로 성공했는지에 대한 검증


에이전트 프로세스 검증 — 성공을 미리 정의하세요

Centian은 에이전트가 약속한 대로 작업을 수행하는지 검증합니다.

실행 전에 성공의 모습을 정의하면 Centian이 단계별로 이를 강제합니다.

Centian 데모 — TDD를 우회하려는 AI 에이전트

검증 없이는 에이전트가 올바른 것처럼 보이지만 실제로는 틀릴 수 있습니다.
Centian을 사용하면 성공을 정의하고 이를 강제할 수 있습니다.

프로세스 검증을 통해 YAML로 선언적 워크플로우 템플릿을 정의할 수 있습니다. 각 템플릿은 온보딩, 계획, 스캐폴딩, 실행과 같은 구조화된 수명 주기를 설명하며, 사전 조건, 사후 조건, 불변 조건 및 단계별 도구 권한을 포함합니다.

에이전트가 템플릿에서 작업을 등록하면:

  1. 온보딩 — 에이전트가 프로젝트 컨텍스트와 제약 조건을 수집합니다.

  2. 계획 — 에이전트가 접근 방식을 제안하고, 이는 실행 계약으로 고정됩니다.

  3. 실행 — 에이전트가 정의된 단계를 수행하며, Centian은 각 관문에서 정확성을 검증합니다.

  4. 완료 — 사후 조건이 작업이 올바르게 수행되었는지 확인합니다.

고정된 실행 계약이 핵심입니다. 계획이 완료되면 에이전트는 변경 가능한 프롬프트 컨텍스트 대신 불변의 계약을 읽습니다. 에이전트가 무엇을 하기로 약속했는지 증명하고 실제로 수행했는지 검증할 수 있습니다.

단계별 도구 거버넌스: 각 워크플로우 노드는 에이전트가 호출할 수 있는 MCP 도구를 선언할 수 있습니다. 승인 대기 단계에서는 모든 하위 도구가 차단됩니다. 스캐폴딩 중에는 파일 시스템 액세스는 허용하되 셸 명령은 차단할 수 있습니다.

TDD 워크플로우를 위한 예시 템플릿은 저장소의 task-templates/에 포함되어 있습니다.

템플릿 스키마는 문서화되어 있으며 확장성을 고려하여 설계되었습니다. 일반적인 워크플로우를 위한 템플릿의 커뮤니티 기여를 환영합니다 — CONTRIBUTING.md를 참조하세요.


시작하기

설치

curl -fsSL https://raw.githubusercontent.com/T4cceptor/centian/main/scripts/install.sh | bash

모든 설치 방법은 설치 옵션을 참조하세요.

로컬 데모

이 데모는 테스트 주도 개발(TDD)이라는 익숙한 환경에서 Centian을 에이전트 제어 평면으로 보여줍니다. 에이전트는 score_paranthesis를 구현하는 작업을 부여받고( 프롬프트 참조), Centian을 사용하여 작업을 안내받습니다.

확인할 수 있는 내용:

✔ 에이전트가 테스트 우회를 시도함 → 차단됨
✔ 작업 검증 실패 → 즉시 플래그 지정됨
✔ 워크플로우 위반 → 에이전트가 계획 단계를 건너뜀

→ Centian이 실시간으로 이를 포착합니다.

전제 조건: centian demo를 실행하기 전에 다음이 준비되어 있는지 확인하세요:

  • node (v24.2.0에서 테스트됨) 및 npx (11.3.0에서 테스트됨)가 PATH에 있어야 합니다. 파일 시스템 및 셸 MCP 서버를 실행하고 테스트를 수행하는 데 필요합니다.

  • Claude Code, Gemini CLI 또는 OpenAI Codex가 설치되고 인증되어야 합니다. Centian은 선택한 에이전트를 로컬 CLI를 통해 헤드리스 모드로 실행하므로, 해당 에이전트 바이너리가 없거나 로그인되어 있지 않으면 데모가 실패합니다.

Claude Code (sonnet)

centian demo -a claude

Gemini CLI (gemini-2.5-flash)

centian demo -a gemini

Codex: (기본 옵션 사용)

centian demo -a codex

참고: codex 데모의 경우 Centian은 OpenAI API에 대한 기존 인증 자료를 복사(나중에 정리)합니다.

데모 수행 작업

  • 환경 설정: 로컬 폴더 .centian/demo를 생성하고 필요한 아티팩트( 여기 참조)를 복사하며 설정을 조정합니다.

  • 사용 가능한 포트에서 Centian 서버를 로컬로 시작합니다(자동 선택).

  • 프롬프트와 함께 선택한 코딩 에이전트를 헤드리스 모드로 시작합니다.

  • Centian UI가 새 브라우저 창에서 열리며 작업 개요 페이지 UI를 보여줍니다. 에이전트가 Centian에 작업을 등록하면 클릭하여 에이전트가 무엇을 하고 있는지 확인하고 MCP 이벤트를 관찰할 수 있습니다.

  • 에이전트 작업이 완료되면 CLI에서 서버를 종료할지 묻습니다. 자유롭게 종료하세요. 데모를 여러 번 실행할 수 있으며, 다른 에이전트를 사용할 수도 있습니다. 이전 실행 기록은 보존됩니다.

참고: 이 데모는 Centian의 기능을 보여주고 첫인상을 제공하기 위한 것이며, 프로덕션 수준의 설정이 아닙니다(예: auth = false, 127.0.0.1 사용). Centian을 사용하려면 생성된 설정을 복사/붙여넣기하거나 참조하지 말고, 구성을 확인하여 자신만의 Centian 프록시를 설정하세요.

기본 프록시 설정을 위한 init 사용 (작업 검증 없음)

# 1. Install
curl -fsSL https://raw.githubusercontent.com/T4cceptor/centian/main/scripts/install.sh | bash

# 2. Initialize with a starter MCP server
centian init -q
# Optional: check created config at ~/.centian/config.json

# 3. Add your own MCP servers
centian server add --name "filesystem" --command "npx" --args "-y,@modelcontextprotocol/server-filesystem,/path/to/project"
centian server add --name "deepwiki" --url "https://mcp.deepwiki.com/mcp"

# 4. Start the proxy
centian start

# 5. Point your MCP client at Centian (use the config shown during init)

작업 검증 포함

~/.centian/config.json의 설정에 기능을 추가하세요. 플랫 레이아웃에서는 기능이 proxy 아래에 위치하며, 프로젝트 기반 레이아웃에서는 각 프로젝트에 위치합니다:

{
  "proxy": {
    "capabilities": {
      "taskVerification": {
        "enabled": true,
        "templatesPath": "/path/to/task-templates"
      },
      "eventStorage": {
        "enabled": true,
        "driver": "sqlite"
      },
      "ui": {
        "enabled": true
      }
    }
  }
}

참고: 기본적으로 task-templates/integrated는 Centian에 자동으로 통합되지만, 동일한 task.id를 사용하는 템플릿에 의해 덮어쓰여질 수 있습니다.

Centian을 시작하고 UI를 엽니다:

centian start
# UI available at http://localhost:9666/ui/tasks

Centian이 이를 가능하게 하는 방법

1. 프록시 계층: 하나의 게이트웨이, 모든 MCP 서버

MCP 서버를 Centian에 한 번만 구성하세요. 모든 클라이언트를 localhost:9666으로 지정하세요. 도구 네임스페이스(<server>_<tool>)가 충돌을 자동으로 제거합니다.

{
  "gateways": {
    "default": {
      "mcpServers": {
        "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"] },
        "github": { "url": "https://api.github.com/mcp", "headers": { "Authorization": "Bearer <token>" } }
      }
    }
  }
}

모든 클라이언트가 하나의 엔드포인트에 연결됩니다:

{
  "mcpServers": {
    "centian": {
      "url": "http://127.0.0.1:9666/mcp/default",
      "headers": { "X-Centian-Auth": "<your-api-key>" }
    }
  }
}

2. 거버넌스 계층: 도구 호출을 위한 프로그래밍 가능한 미들웨어

프로세서는 실행 전후의 모든 도구 호출을 가로챕니다. 전체 요청/응답 컨텍스트를 수신하고, 페이로드를 수정하며, 체인을 중단할 수 있습니다.

사용 사례:

  • 모든 도구 호출을 데이터베이스에 감사 로깅

  • 임계값을 초과하는 호출에 대한 속도 제한

  • 도구 인수에서 비밀 또는 환경 변수 제거

  • 응답에서 PII(개인 식별 정보) 마스킹

  • 에이전트가 호출할 수 있는 도구에 대한 허용 목록 강제

새 프로세서 스캐폴딩:

centian processor new

3. 실행 가시성

모든 MCP 도구 호출은 타임스탬프, 세션 ID, 요청/응답 페이로드와 함께 캡처되며, 작업 검증이 활성화된 경우 이를 생성한 워크플로우 컨텍스트도 함께 캡처됩니다.

작업 검증이 없으면 Centian은 구조화된 JSONL 및 쿼리 가능한 SQLite 이벤트 저장소를 통해 이벤트를 기록합니다. 작업 검증이 활성화되면 Centian은 에이전트 활동을 에이전트가 수행해야 했던 작업의 맥락에서 보여주는 내장 UI를 제공합니다:

  • 워크플로우 단계별로 그룹화된 타임라인

  • 작업 단계와 연관된 도구 호출

  • 상세한 실패 메타데이터가 포함된 사후 조건 검사 실패

  • 전체 요청/응답 검사

# CLI log access
centian logs

# Embedded UI (when task verification + UI are enabled)
# http://localhost:9666/ui/tasks

문서

심층 문서는 docs/에 있습니다.

구성

Centian은 ~/.centian/config.json에 단일 JSON 설정을 사용합니다. 설정은 두 가지 레이아웃을 지원합니다:

플랫 레이아웃 (centian init의 기본값) — 게이트웨이, 인증 및 기능이 최상위 수준에 위치합니다:

{
  "name": "Centian Server",
  "version": "1.0.0",
  "auth": true,
  "authHeader": "X-Centian-Auth",
  "proxy": {
    "host": "127.0.0.1",
    "port": "9666",
    "timeout": 30,
    "logLevel": "info",
    "capabilities": {
      "taskVerification": { "enabled": false },
      "eventStorage": { "enabled": true, "driver": "sqlite" },
      "ui": { "enabled": false }
    }
  },
  "gateways": {
    "default": {
      "mcpServers": {
        "my-server": {
          "url": "https://example.com/mcp",
          "headers": { "Authorization": "Bearer <token>" },
          "enabled": true
        }
      }
    }
  },
  "processors": []
}

프로젝트 기반 레이아웃 — 별도의 데이터베이스, 기능 플래그 및 경로 접두사를 사용하여 여러 워크로드를 격리하기 위한 용도:

{
  "name": "Centian Server",
  "version": "1.0.0",
  "proxy": {
    "host": "127.0.0.1",
    "port": "9666",
    "timeout": 30
  },
  "projects": {
    "team-alpha": {
      "auth": true,
      "capabilities": {
        "taskVerification": { "enabled": true },
        "eventStorage": { "enabled": true },
        "ui": { "enabled": true }
      },
      "gateways": {
        "workbench": {
          "mcpServers": {
            "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"] }
          }
        }
      }
    }
  }
}

각 프로젝트는 자체 SQLite 데이터베이스(~/.centian/projects/<slug>/events.sqlite)와 자체 경로 접두사를 가집니다. 플랫 레이아웃은 런타임에 자동으로 "default" 프로젝트로 마이그레이션되므로 기존 설정은 변경 없이 계속 작동합니다.

엔드포인트

  • 집계 게이트웨이: http://127.0.0.1:9666/mcp/<gateway>

  • 개별 서버: http://127.0.0.1:9666/mcp/<gateway>/<server>

  • 프로젝트 범위 게이트웨이: http://127.0.0.1:9666/<project>/<mcp>/<gateway>

  • 프로젝트 범위 UI: http://127.0.0.1:9666/<project>/ui

집계 모드에서는 충돌을 피하기 위해 도구에 네임스페이스가 지정됩니다. "default" 프로젝트는 하위 호환성을 위해 접두사가 없는 경로를 사용합니다.

보안

0.0.0.0에 바인딩하는 것은 모든 프로젝트에서 auth가 명시적으로 구성된 경우에만 허용됩니다. 이는 우발적인 노출을 방지합니다.


명령어

명령어

설명

centian init

설정 초기화 (빠른 시작은 -q 사용)

centian start

프록시 시작

centian auth new-key

새 API 키 생성

centian server add

MCP 서버 추가

centian server ...

MCP 서버 관리

centian config ...

구성 관리

centian processor new

새 프로세서 스캐폴딩

centian logs

최근 MCP 로그 보기


설치 옵션

방법

플랫폼

전체 UI

명령어

셸 스크립트

Linux, macOS

curl -fsSL .../install.sh | bash

릴리스 바이너리

Linux, macOS, Windows

릴리스에서 다운로드

go install

Any

go install github.com/T4cceptor/centian@latest

Docker

Linux, macOS, Windows

docker run t4ce/centian:latest

Homebrew

계획됨

셸 스크립트 (권장)

curl -fsSL https://raw.githubusercontent.com/T4cceptor/centian/main/scripts/install.sh | bash

--version--install-dir 플래그를 지원합니다. 기본적으로 ~/.local/bin에 설치됩니다.

릴리스 바이너리

최신 릴리스에서 적절한 아카이브를 다운로드하고 압축을 푼 다음 centianPATH에 배치하세요.

go install

go install github.com/T4cceptor/centian@latest

Go 1.25+가 필요합니다. 내장 웹 UI 없이 빌드되므로 전체 UI를 사용하려면 릴리스 바이너리나 Docker를 사용하세요.

Docker

# Full image (Linux, macOS, Windows)
docker run --rm -p 9666:9666 t4ce/centian:latest

# Alpine image
docker run --rm -p 9666:9666 t4ce/centian:latest-alpine

Homebrew

Homebrew 지원은 계획되어 있습니다.


현재 상태

Centian은 사용 가능하며 활발히 개발 중이지만, 의도적인 공백이 있는 1.0 이전 버전입니다. 작동하는 것과 아직

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/T4cceptor/centian'

If you have feedback or need assistance with the MCP directory API, please join our Discord server