<p align="left"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/logo-dark.png"><img src="https://raw.githubusercontent.com/cynative/cynative/HEAD/docs/assets/logo.png" alt="cynative" width="350"></picture></p>
자체 보안 에이전트 구축하기
라이브 인프라에 대한 읽기 전용 접근 권한을 가진 보안 에이전트를 위한 오픈 소스 프레임워크입니다.
CI
Release
License: Apache-2.0
OpenSSF Best Practices
Quickstart · Built-in agents · Your first agent · Docs
<!-- BEGIN agent-about -->
인프라에 무엇이든 질문하세요. Cynative는 코드, 클라우드 및 런타임 전반에 걸쳐 최신 모델(frontier models)을 실행하여 GitHub, GitLab, AWS, GCP, Azure 및 Kubernetes를 하나의 시스템으로 추론하고 검증된 답변을 제공합니다.
cynative "내 클라우드에서 공개적으로 노출되었지만 그렇지 않아야 하는 것은 무엇인가?"
AWS, GCP, Azure, GitHub 및 Kubernetes용 45개의 내장 에이전트가 있습니다. 권한 상승(privilege escalation), 공개 노출(public exposure), 공급망(supply chain), 탐지 범위(detection coverage) 등 다양한 기능을 제공하며, 단 하나의 마크다운 파일로 자체 에이전트를 작성할 수도 있습니다.
하나의 질문이 전체 스택으로 퍼져나갑니다: Cynative는 일시적인 샌드박스에서 코드를 작성하고 실행하며, API를 병렬로 조회합니다. 발견된 모든 사항은 교차 확인되고 출처까지 추적됩니다.
코딩 에이전트(coding agents)나 MCP 서버와 달리, 구조적으로 읽기 전용입니다: 모든 호출은 자격 증명(credential)이 연결되기 전에 게이트가 설정되고 승인됩니다. 따라서 프로덕션 환경에 자신감을 가지고 적용할 수 있습니다.
<!-- END agent-about -->
<p align="center">
<img src="https://raw.githubusercontent.com/cynative/cynative/HEAD/docs/assets/demo.gif"
alt="cynative auditing a CI to cloud privilege escalation"
width="900">
</p>
에이전트가 얻는 것들
- 코드-투-런타임 (Code-to-runtime): AWS, GCP, Azure, 모든 K8s, GitHub 및 GitLab을 통해 추론합니다.
- 샌드박스 (Sandbox): 자체 네트워크나 호스트 접근 없이 대규모 연구를 위해 코드를 생성하고 실행합니다.
- 액션-게이트 (Action-gate): 자격 증명(credential)이 연결되기 전에 필요한 모든 IAM 액션을 해결하고 읽기 전용 정책을 적용합니다.
- 증거 기반 (Evidence-backed): 발견된 모든 내용을 교차 확인하여 검증합니다.
- 주권적 (Sovereign): 단일 바이너리로, 모델과 데이터는 사용자의 소유로 유지됩니다.
빠른 시작 (Quickstart)
LLM을 설치하고 설정하세요:
<!-- BEGIN quickstart-example -->
brew install cynative/tap/cynative
export CYNATIVE_LLM_PROVIDER=anthropic
...
<!-- END quickstart-example -->
이는 이미 쉘(shell)에 있는 자격 증명을 가져옵니다. 내장 에이전트를 실행해 보세요:
cynative -p --agent aws-network-exposure
또는 무엇이든 물어보세요:
cynative -p "which IAM roles can escalate to admin?"
cynative -p "high-risk cloud permissions, trace each to the PR where it was granted"
cynative -p "cloud credentials leaked in source code and their current blast radius"
...
내장 에이전트 (Built-in agents)
45개의 에이전트가 바이너리에 내장되어 있습니다. 각 에이전트는 특정 질문에 대한 검토된 프롬프트입니다.
| 에이전트 (Agents) | 예시 (For example) |
|---|
| AWS | 20 | aws-privilege-escalation, aws-public-storage, aws-unpatched-workloads, aws-supply-chain |
| ... | | |
cynative agents list
cynative agents show <name>
각 에이전트에 대한 한 줄 설명과 함께 전체 카탈로그는 docs/agents-catalog.md에 있습니다.
첫 번째 에이전트 만들기 (Your first agent)
cynative agents show <name>은 에이전트가 실행할 정확한 파일을 출력합니다. 자신만의 버전을 만들려면, 이를 복사하여 새 이름으로 에이전트 디렉터리(agents directory)에 붙여넣고 편집하세요:
mkdir -p ~/.cynative/agents
cynative agents show aws-public-datastores > ~/.cynative/agents/my-aws-public-datastores.md
...
에이전트는 마크다운 파일입니다. 이 파일은 description이라는 유일한 키를 가진 엄격한 YAML 프런트매터와 그 뒤의 프롬프트 본문으로 구성됩니다. 파일명이 에이전트의 이름이 됩니다. ~/.cynative/agents/에 있는 파일은 같은 이름의 내장(built-in) 파일보다 우선합니다. 따라서 두 파일을 모두 유지하려면 복사본에 고유한 이름을 부여하세요. 형식은 docs/agents.md를 참조하세요.
에이전트 실행하기
cynative -p --agent aws-public-datastores "AWS account 128149835728 only"
cynative -p --agent aws-public-datastores
cynative --agent aws-public-datastores
`--agent`는 `-p`, `--auto-approve`, `--config` 및 파이프된 표준 입력(stdin)과 결합하여 사용됩니다. 따라서 같은 파일이라도 개발할 때는 대화형으로 실행하고, 안정화되면 비대화형으로 실행할 수 있습니다.
에이전트는 `~/.cynative/agents/`와 바이너리에 내장된 세트에서 읽어오며, 사용자 파일이 같은 이름의 내장 파일보다 우선합니다. `cynative agents list`는 소스별로 모든 에이전트를 보여주고 덮어쓴(shadowed) 복사본을 표시하며, `cynative agents show <name>`은 실행될 정확한 파일을 출력합니다.
| | 코딩 에이전트 + MCPs | Cynative |
|---|---|---|
| 처리량 (Throughput) | 호출당 하나의 작업 수행 | 샌드박스화된 코드를 작성하여 호출을 병렬로 분산 실행합니다. 토큰 수가 적고 답변 속도가 빠릅니다. |
| ... | | |
하나의 바이너리, 모델 엔드포인트, 계정만 있으면 됩니다. 감사하는 클라우드의 인스턴스에서 이를 실행하고, 해당 클라우드가 관리하는 추론(inference)을 통해 처리하며, 아무것도 환경 외부로 나가지 않습니다. 이는 귀하의 인프라 내 보안을, 귀하의 인프라 내부에서 제공합니다.
**Homebrew** (macOS / Linux - 권장):
```bash
brew install cynative/tap/cynative
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
설치 스크립트 (macOS / Linux - 다운로드된 SHA-256을 릴리스 checksums.txt와 비교하여, 실패 시 종료(failing closed)합니다):
curl -fsSL https://raw.githubusercontent.com/cynative/cynative/main/install.sh | sh
Windows (Scoop):
scoop bucket add cynative https://github.com/cynative/scoop-bucket
scoop install cynative
<details>
<summary><strong>업데이트, 제거, Windows 상세 정보, 버전 고정 및 수동 다운로드</strong></summary>
업데이트 / 제거 (Update / uninstall)
| 방법 | 업데이트 | 제거 |
|---|
| Homebrew | brew upgrade cynative | brew uninstall cynative |
| ... | | |
Windows (PowerShell 스크립트): irm https://raw.githubusercontent.com/cynative/cynative/main/install.ps1 | iex; 제거는 & ([scriptblock]::Create((irm https://raw.githubusercontent.com/cynative/cynative/main/install.ps1))) -Uninstall을 사용합니다.
설치 스크립트 옵션: CYNATIVE_VERSION=v1.0.0으로 버전을 고정하거나, CYNATIVE_INSTALL_DIR로 대상 디렉터리를 변경할 수 있습니다 (기본값은 ~/.local/bin, sudo 불필요). 스크립트는 gh가 설치된 경우 GitHub 릴리스 증명(release attestation)을 확인합니다 (기본적으로 권고됨); 실패한 검사를 치명적인 오류로 만들려면 CYNATIVE_REQUIRE_ATTESTATION=1을 설정하세요. 높은 무결성을 가진 설치를 위해서는 main 대신 불변 태그에서 스크립트를 가져오세요.
macOS (수동): 릴리스 페이지에서 cynative_Darwin_arm64.pkg (Apple Silicon) 또는 cynative_Darwin_x86_64.pkg (Intel)를 다운로드하여 sudo installer -pkg <파일> -target /로 설치하거나 더블 클릭하세요. 이 파일들은 서명(signed), 공증(notarized)되었으며 **스테이플링(stapled)**되어 있어 첫 실행 시 Gatekeeper 프롬프트가 나타나지 않습니다. 원본 cynative_Darwin_*.tar.gz 아카이브는 스크립팅/CI용으로 유지됩니다. 격리된 tarball 바이너리의 첫 GUI 실행은 온라인 공증 확인을 위해 인터넷 연결이 필요합니다 (터미널/install.sh/Homebrew 사용에는 영향을 주지 않습니다).
Linux / Windows (수동): 릴리스 페이지에서 미리 빌드된 바이너리와 checksums.txt를 다운로드하고, SHA-256을 검증한 후 바이너리를 PATH에 넣어주세요. 의존성이 없는 단일 정적 바이너리입니다.
릴리스 서명 확인 (선택 사항). 신규 릴리스에는 checksums.txt.sigstore.json이 포함됩니다. 이는 이 리포지토리의 릴리스 워크플로우에 바인딩된 키 없는 인증서로 checksums.txt를 번들링하여 서명한 Sigstore입니다. 매니페스트를 인증한 다음, 아카이브를 이 매니페스트와 비교하세요:
cosign verify-blob checksums.txt \
--bundle checksums.txt.sigstore.json \
--certificate-identity "https://github.com/cynative/cynative/.github/workflows/release.yaml@refs/heads/main"
...
(Get-FileHash .\cynative_Windows_x86_64.zip -Algorithm SHA256).Hash.ToLower()
Select-String -Path checksums.txt -Pattern cynative_Windows_x86_64.zip
이것은 checksums.txt에 명시된 아카이브들을 포괄합니다. .pkg 설치 프로그램의 경우, 개발자 ID(Developer ID)로 서명 및 노타라이즈(notarized)되며 스테이플링(stapled)됩니다. 또한 모든 에셋은 GitHub 릴리스 증명서(gh release verify <tag>)에 의해 추가적으로 보호됩니다. 알아두어야 할 두 가지 제한 사항이 있습니다: cosign은 --trusted-root를 전달하지 않는 한 네트워크를 통해 Sigstore의 신뢰 루트(trust root)를 가져오며, 파일 이름에는 버전 정보가 포함되어 있지 않기 때문에 서명은 출처와 무결성을 증명할 뿐 어떤 릴리스에서 나온지(느슨한 파일 세트)는 증명하지 못합니다. 이 경우 릴리스 URL이나 gh release verify가 버전을 바인딩하는 역할을 합니다.
</details>
LLM 제공업체 (LLM providers)
Cynative는 내장된 Bifrost SDK를 통해 LLM과 통신하며, 거의 모든 AI 제공업체(OpenAI, Anthropic, Azure OpenAI, Amazon Bedrock, Google Vertex/Gemini, Cohere, Mistral, Groq, Ollama, vLLM 등)를 즉시 지원합니다. docs/providers/README.md에서 하나를 선택하고 해당 제공업체의 가이드를 따르세요.
<details>
<summary><strong >간단한 예제 (Quick examples)</strong></summary>
export CYNATIVE_LLM_PROVIDER=vertex
export CYNATIVE_LLM_MODEL=gemini-3.1-pro-preview
...
</details>
<details>
<summary><strong >고급 YAML (Advanced YAML)</strong></summary>
다중 키 로드 밸런싱(multi-key load balancing), 사용자 지정 재시도 동작(custom retry behavior), 프록시 구성 또는 기타 Bifrost 기능의 경우, YAML 파일을 작성하세요:
llm:
provider: openai
model: gpt-5.5
...
지원되는 모든 provider의 설정 참조는 docs/providers/를 참고하세요.
세션 및 승인(Approvals)
cynative는 대화형 세션을 시작합니다 (화살표 키로 전체 줄 편집 및 히스토리 지원); cynative "task"는 작업을 실행한 후 인터랙티브 상태를 유지합니다; -p / --print은 단일 작업을 비대화형으로 실행하고 종료합니다. 이는 스크립트나 파이프에 유용합니다 (예: cat main.tf | cynative -p "misconfigurations가 있는지 이 Terraform을 검토해줘"). 종료 코드는 스크립트를 위한 판결 결과를 담고 있습니다: 보고서가 생성되면 0, 답변 없이 실행이 완료되면 2 (알림에 이유 명시 - 반복 또는 토큰 예산 부족, 비어 있거나 필터링된 모델 응답), 중단 시 130, SIGTERM 시 143, 기타 오류 발생 시 1입니다.
Cynative는 셸(shell)에 이미 있는 자격 증명(credentials)을 사용하여 스택을 호출합니다. 별도의 자격 증명 저장소를 유지하지 않습니다. 항상 필요한 최소 권한의 자격 증명을 제공하세요; 액션 게이트가 이를 대체할 수는 없습니다.
승인: 각 도구 호출은 단일 키 입력을 기다립니다: y는 한 번 실행하고, a는 해당 세션에서 해당 도구에 대한 모든 후속 호출을 취소합니다 (스크립트는 여전히 실행 전에 출력됩니다). 다른 어떤 키도 거부(denies)를 의미합니다. 제어 터미널이 없는 경우 --auto-approve를 사용하세요.
작업 중간 중단: 작업이 실행되는 동안, Esc 또는 Ctrl-C를 한 번 누르면 우아하게 중단할 수 있습니다 (에이전트는 이미 실행 중인 호출을 완료한 후, 멈추고 ⏸ Stopped를 출력합니다). 에이전트가 반복적인 도구 오류나 거부(rejections)에 직면하면 자동으로 멈추고, 어떤 부분에서 막혔는지 요약하며 누락된 정보를 요청합니다.
Bash 완성: 각 셸의 전체 설치 지침은 cynative completion <shell> --help를 참고하세요.
Cynative는 짧은 운영 푸터(timing, 토큰 사용량)를 stderr로 출력합니다. stdout을 리디렉션(cynative -p "..." > out.txt)하면 캡처된 답변이 깨끗하게 유지됩니다. --version은 버전, 커밋, 빌드 날짜, Go 버전 및 플랫폼을 출력합니다.
cynative doctor는 연구 세션을 시작하지 않고도 구성 및 커넥터 준비 상태를 검증합니다. --live-llm을 전달하면 설정된 모델에 도구 없는 왕복(round-trip) 테스트로 프로빙할 수도 있습니다.
<details>
<summary><strong>비감독 실행을 위한 리소스 및 비용 제어</strong></summary>
리소스 및 비용 제어: 비감독적(unattended), 예약되거나 장기 지평선(long-horizon)의 실행에 대해 — cron, CI 또는 모든 트리거에 연결되는 경우 — 작업을 명시적으로 바인딩합니다. 주요 노브(config keys / env vars):