280개 이상의 piece를 MCP 서버로 노출하는 오픈소스 AI 워크플로 자동화.
한국어는 runchr 제공 번역입니다. 원문 README는 English tool page.
Bindu
Bindu는 하나의
- Install
- uv add bindu
프로젝트 README (번역)
GitHub ↗Written by the project's own authors, not by runchr. Snapshot taken 2026-10-31.
Bindu
AI 에이전트를 위한 아이덴티티, 커뮤니케이션, 결제 레이어.
에이전트 인터넷을 위한 Gmail 형태의 받은편지함. 에이전트들이 서로 서명된 JSON-RPC를 주고받는 모습을 지켜보고, 아이덴티티를 인라인으로 검증하고, 스웜에 스레드처럼 답장하세요.
→ 받은편지함 둘러보기 열기
상황은 이렇습니다. 에이전트를 만들었습니다. 잘 동작합니다. 하지만 실제로 풀어놓으려면 — 다른 에이전트와 대화하고, 자신이 누구인지 증명하고, 작업 대가로 돈을 받으려면 — 지루한 배관 작업을 잔뜩 떠안아야 합니다. 통합할 DID 라이브러리. 설정할 OAuth 플로우. 결제 미들웨어. 나머지 에이전트 세계가 쓰는 프로토콜을 따르는 HTTP 레이어.
Bindu는 그 모든 배관을 하나의 함수 호출 뒤에 담았습니다. 핸들러를 bindufy()로 감싸면 몇 초 뒤 에이전트가 자체 암호화 아이덴티티를 갖고 온라인에 올라가고, A2A(다른 에이전트들이 이미 쓰는 프로토콜)를 구사하며, 어떤 작업이든 하기 전에 모든 EVM 체인에서 USDC를 요구할 준비(x402)가 됩니다. 핸들러는 (messages) -> response만큼 작게 유지됩니다. 핸들러 내부의 프레임워크 — Agno, LangChain, CrewAI, 직접 만든 것 — Bindu는 신경 쓰지 않습니다.
Python, TypeScript, Kotlin용 SDK가 있으며 모두 동일한 gRPC 코어를 공유합니다. 언어는 선택이지만, 프로토콜과 아이덴티티는 어느 쪽이든 동일합니다. 더 깊이 들어갈 준비가 되면 문서가 다음 목적지입니다.
설치
Python 3.12+와 uv가 필요합니다.
uv add bindu
Bindu 자체를 사용하는 게 아니라 해킹하려는 경우:
git clone https://github.com/getbindu/Bindu.git
cd Bindu
uv sync --dev
예제를 실행하려면 최소 하나의 LLM 제공자 API 키가 필요합니다 — OPENROUTER_API_KEY, OPENAI_API_KEY, 또는 MINIMAX_API_KEY.
빠른 시작
원하는 에이전트를 만들고 bindufy()에 넘기면 온라인 상태가 됩니다. 아래 블록이 전부입니다 — 파일에 복사하고, OPENAI_API_KEY를 설정하고, 실행하세요.
import os
from bindu . penguin . bindufy import bindufy
from agno . agent import Agent
from agno . models . openai import OpenAIChat
from agno . tools . duckduckgo import DuckDuckGoTools
agent = Agent (
instructions = "You are a research assistant." ,
model = OpenAIChat ( id = "gpt-4o" ),
tools = [ DuckDuckGoTools ()],
)
config = {
"author" : "[email protected]" ,
"name" : "research_agent" ,
"description" : "Research assistant with web search." ,
"deployment" : { "url" : "http://localhost:3773" , "expose" : True },
"skills" : [ "skills/question-answering" ],
}
def handler ( messages : list [ dict [ str , str ]]):
return agent . run ( input = messages )
bindufy ( config , handler )
이제 에이전트는 http://localhost:3773에서 라이브입니다. expose: True는 FRP 터널을 열어 포트 포워딩을 설정하지 않아도 나머지 인터넷이 접근할 수 있게 합니다.
TypeScript 버전
import { bindufy } from "@bindu/sdk" ;
import OpenAI from "openai" ;
const openai = new OpenAI ( ) ;
bindufy ( {
author : "[email protected]" ,
name : "research_agent" ,
description : "Research assistant." ,
deployment : { url : "http://localhost:3773" , expose : true } ,
skills : [ "skills/question-answering" ] ,
} , async ( messages ) => {
const response = await openai . chat . completions . create ( {
model : "gpt-4o" ,
messages : messages . map ( m => ( { role : m . role as "user" | "assistant" | "system" , content : m . content } ) ) ,
} ) ;
return response . choices [ 0 ] . message . content || "" ;
} ) ;
TypeScript SDK는 백그라운드에서 Python 코어를 실행합니다 — 보이지 않으며, 코드베이스에 Python이 전혀 필요 없습니다. 동일한 프로토콜, 동일한 DID. 전체 예제는 examples/typescript-openai-agent/에 있습니다.
curl로 에이전트 호출하기
curl -X POST http://localhost:3773/ \
-H ' Content-Type: application/json ' \
-d ' {
"jsonrpc": "2.0",
"method": "message/send",
"id": "<uuid>",
"params": {
"message": {
"role": "user",
"kind": "message",
"parts": [{"kind": "text", "text": "Hello"}],
"messageId": "<uuid>",
"contextId": "<uuid>",
"taskId": "<uuid>"
}
}
} '
그런 다음 동일한 taskId로 tasks/get을 폴링하여 state가 completed에 도달할 때까지 확인하세요.
보안: 세 개의 레이어, 기본 활성화
대부분의 에이전트 프레임워크는 보안을 당신의 문제로 취급합니다. Bindu는 그것을 전송 계층으로 취급합니다.
A2A 요청이 Bindu 에이전트에 도착하면 핸들러가 본문을 보기 전에 세 개의 서로 다른 미들웨어가 실행됩니다 — 그리고 각각은 나머지 둘이 답할 수 없는 질문에 답합니다:
레이어
답하는 질문
실체
mTLS
소켓 자체가 암호화되고 상호 인증되었는가?
Smallstep step-ca의 X.509 인증서, SAN = DID, 24시간 TTL, 프로세스 내 자동 갱신
OAuth2 via Hydra
호출자가 지금 이 작업을 수행할 권한이 있는가?
Ed 스타일 베어러 토큰, ~1시간 TTL, Ory Hydra introspection으로 검증
DID 서명
이 정확한 JSON 본문이 주장하는 DID에 의해 작성되었는가?
정규화된 본문에 대한 Ed25519 서명, X-DID-Signature에 담김
하나를 고르지 않습니다. 나중에 덧붙이지도 않습니다. 함께 제공됩니다 — 그리고 운영자의 개인 에이전트에서는 2026.21.1부터 기본으로 활성화됩니다.
왜 하나가 아니라 세 개의 레이어인가? 각각이 나머지가 할 수 없는 방식으로 안전하게 실패하기 때문입니다:
베어러 토큰을 훔친 공격자도 트래픽을 복호화할 수 없습니다 — mTLS가 회선을 소유합니다.
어떻게든 인증서를 위조한 공격자도 DID를 사칭할 수 없습니다 — 서명이 주장된 키에 대해 검증되지 않습니다.
서명 체계를 완전히 깨뜨린 공격자도 Hydra의 인가 검사를 통과할 수 없습니다.
인증서는 소켓에 있습니다. 베어러 토큰은 헤더에 있습니다. 서명은 본문에 있습니다. 각각은 나머지가 보지 못하는 공격 클래스를 거부합니다. 우리가 조사한 어떤 에이전트 프레임워크도 세 가지를 모두 기본 제공하지 않습니다.
→ 전체 이야기: docs/SECURITY_STACK.md는 각 레이어가 하는 일, 단일 요청이 세 가지를 모두 통과하는 흐름, 오늘의 기본값, 기본 활성화 mTLS를 출시하며 마주친 다섯 가지 실제 버그, 그리고 트러블슈팅 매트릭스를 다룹니다.
기능
여기 모든 행은 실제로 자세히 다루는 가이드로 연결됩니다.
기능
하는 일
문서
A2A JSON-RPC
다른 에이전트들이 이미 쓰는 프로토콜. 포트 3773에서 message/send, tasks/get, message/stream.
—
mTLS 전송
소켓이 암호화되고 상호 인증됩니다. 각 에이전트는 step-ca에서 실제 X.509 인증서(SAN = DID)를 받고, TLS 위에서 uvicorn을 서빙하며, ~16시간마다 자체 갱신합니다. 2026.21.1의 받은편지함 개인 에이전트에서 기본 활성화.
SECURITY_STACK.md · MTLS_DEPLOYMENT_GUIDE.md
DID 아이덴티티
에이전트가 보내는 모든 응답은 Ed25519 키로 서명됩니다. 호출자는 W3C DID로 검증합니다 — 유출될 공유 비밀이 없고, 조회할 중앙 권한도 없으며, 동일한 DID가 인증서의 SAN, OAuth2 client_id, 메시지 서명자입니다. 세 가지가 모두 일치해야 하며, 그렇지 않으면 요청이 거부됩니다.
DID.md
OAuth2 via Hydra
모든 문을 여는 하나의 키 대신 스코프된 베어러 토큰(agent:read, agent:write, agent:execute). 각 에이전트는 부팅 시 Hydra 클라이언트로 자체 등록합니다 — DID가 곧 client_id이므로 인가, 아이덴티티, 전송 계층 인증서가 모두 동일한 액터를 가리킵니다.
AUTHENTICATION.md
x402 결제
플래그를 켜면 핸들러가 요청을 보기도 전에 에이전트가 USDC를 요구합니다. 5개 체인 사전 구성 — Base, Base Sepolia, Ethereum, Ethereum Sepolia, SKALE Europa — 그리고 다른 EVM 체인(Polygon, Avalanche, Arbitrum, …)은 extra_networks 항목 하나로 추가됩니다.
PAYMENT.md
푸시 알림
작업 상태가 바뀌면 에이전트가 웹훅으로 알립니다. 폴링을 그만두세요.
NOTIFICATIONS.md
스킬 시스템
에이전트가 할 수 있는 일을 선언하세요. 호출자는 토큰을 써서 묻기 전에 에이전트 카드에서 확인합니다.
SKILLS.md
프라이빗 스킬
상업적 스킬 설명을 공개 카탈로그에서 숨기세요. 공개 크롤러는 일반적인 "우리는 X를 합니다"를 보고 — 허용 목록에 있는 파트너 DID는 두 번째 인증 게이트 엔드포인트에서 실제 메뉴를 봅니다. 스킬 설명이 곧 제품 로드맵일 때 유용합니다.
PRIVATE_SKILLS.md
에이전트 협상
두 에이전트가 가격, 지연시간, SLA를 사전에 합의합니다. 예상치 못한 청구서가 없습니다.
NEGOTIATION.md
스토리지
작업과 메시지용 Postgres. 선호하는 백엔드가 있으면 교체하세요.
STORAGE.md
스케줄러
Redis 기반 재시도, 타임아웃, 반복 작업.
SCHEDULER.md
공개 터널
expose: true는 노트북을 인터넷에 올립니다. 포트 포워딩도, 라우터 설정도 없습니다.
TUNNELING.md
다국어 SDK
Python, TypeScript, Kotlin — 아래에 동일한 gRPC 코어, 동일한 DID, 동일한 인증.
GRPC_LANGUAGE_AGNOSTIC.md
클라우드 배포
bindu deploy agent.py --runtime=boxd가 스크립트를 마이크로VM에 배포하고 HTTPS URL을 출력합니다. Dockerfile 없음.
runtime/quickstart.md
게이트웨이
A2A를 통해 에이전트 함대를 오케스트레이션하고 결과를 스트리밍하는 플래너 LLM.
GATEWAY.md
관측성
OpenTelemetry 트레이스, Sentry 오류, 헬스 엔드포인트. 새벽 2시에 당신을 구하는 지루한 것들.
OBSERVABILITY.md
데모
이 페이지 상단의 운영자 받은편지함은 inbox/에 있습니다 — 동일한 인증, 동일한 DID 서명, 단지 보이는 것뿐입니다. cd inbox && npm run dev로 실행하세요.
예제
examples/에서 몇 가지:
예제
보여주는 것
Agent Swarm
서로에게 작업을 넘기는 Agno 에이전트들의 작은 사회.
Premium Advisor
실전 x402 — 아무것도 실행되기 전에 호출자가 USDC를 지불해야 합니다.
Hermes via Bindu
Nous Research의 Hermes 에이전트를 ~90줄로 bindufy한 것.
Gateway Test Fleet
다섯 에이전트와 하나의 게이트웨이 — 멀티 에이전트 이야기를 처음부터 끝까지.
TypeScript OpenAI Agent
리포지토리에 Python이 전혀 없는 TS 전용 에이전트.
CSV 분석, PDF Q&A, 음성-텍스트 변환, 웹 스크래핑, 다국어 협업, 블로그 작성 등을 다루는 20개 이상의 예제가 더 있습니다. examples/에서 둘러보세요.
왜 Bindu를 만들었나
우리는 프로덕션에서 Bindu를 사용해 Trade Compliance OS를 만들고 있습니다 — CBAM, EUDR, HS 코드, 디지털 제품 여권을 처리하는 에이전트 스웜으로, 중소기업이 법률 사무소에 여섯 자리 수 수표를 쓰지 않고도 커피, 섬유, 철강을 국경 너머로 보낼 수 있게 합니다. 그 스웜의 모든 에이전트는 bindufy되어 있습니다. 프로토콜, 아이덴티티, 결제 레일 — 그게 바로 우리가 Bindu로 해결해야 했던 것들입니다.
관세 서류, 공급업체 감사, 자재 소싱, 규제 신고 등 이와 관련된 어떤 것이든 다루는 에이전트를 만들었다면, 네트워크에 함께하고 싶습니다. Discord에서 만나 이야기해요.
지원 프레임워크
에이전트 작성에 이미 좋아하는 것을 가져오세요. Bindu는 핸들러 내부에 무엇이 있는지 신경 쓰지 않습니다.
언어
이 리포지토리에서 테스트된 프레임워크
Python
AG2, Agno, CrewAI, Hermes Agent, LangChain, LangGraph, Notte
TypeScript
OpenAI SDK, LangChain.js
Kotlin
OpenAI Kotlin SDK
기타
gRPC 코어를 통해 — 새 SDK는 보통 수백 줄
모델 제공자가 OpenAI 또는 Anthropic API를 지원한다면 동작합니다 — OpenRouter, OpenAI, MiniMax 등.
문서
전체 문서 사이트
보안 스택 — mTLS + Hydra + DID — 세 아이덴티티 레이어가 어떻게 구성되는지, 게이트웨이 테스트 함대를 사용한 라이브 워크스루 포함
보안된 에이전트 호출하기 — 가장 짧은 경로: 인증이 켜졌을 때 하는 두 가지 일(토큰 + DID 서명)을 한 페이지에
인증 — 장문 및 DID 서명 — 장문 — 짧은 버전으로 충분하지 않을 때
mTLS 배포 — step-ca 구축, OIDC 프로비저너 구성, 인증서 수명 주기를 위한 DevOps 대상 가이드
클라우드 배포 — bindu deploy 워크스루
게이트웨이 — 멀티 에이전트 오케스트레이션
프라이빗 스킬 — 상업적 메뉴를 공개 카탈로그에서 숨기고 허용 목록에 있는 파트너 DID에게만 표시
gRPC 아키텍처 — 새 언어 SDK를 만드는 사람을 위해
알려진 이슈 — 프로덕션에 푸시하기 전에 읽으세요
트러블슈팅 — 마주칠 오류와 이를 넘어가는 방법
테스트
uv run pytest tests/unit/ -v # 빠른 단위 테스트
uv run pytest tests/integration/grpc/ -v -m e2e # gRPC E2E
uv run pytest -n auto --cov=bindu --cov-report=term-missing # 전체 스위트
기여하기
git clone https://github.com/getbindu/Bindu.git
cd Bindu
uv venv --python 3.12.9 && source .venv/bin/activate
uv sync --dev
pre-commit run --all-files
전체 가이드는 .github/contributing.md에 있습니다. 일상적인 소통의 대부분은 Discord에서 이루어집니다 — 인사하러 오세요.
메인테이너
Raahul Dutta
Paras Chamoli
C…
Other tools that do the same work
Claude Code 및 기타 하네스를 위한 멀티 하네스 플러그인 마켓플레이스입니다.
Python과 .NET에서 프로덕션 AI 에이전트와 멀티 에이전트 워크플로를 구축하세요.
Agent stacks with this tool(1)View graph
암호화폐 신원, A2A 메시징, x402 USDC 결제를 갖춘 연구 에이전트를 Bindufy하세요
From README linksAgno 리서치 에이전트(OpenAI 모델과 DuckDuckGo 검색 도구)를 이미 작동하는 상태로 보유하고 있었고, identity와 payment 배관을 직접 구현하지 않고도 다른 에이전트들이 이 에이전트에 접근할 수 있기를 원했다. DID 라이브러리, OAuth 플로우, payment 미들웨어, A2A 호환 HTTP
View stack
No comments yet.
to comment.