어떤 프레임워크로 만든 에이전트든 신원·통신·결제 능력을 갖춘 마이크로서비스로 변환한다.
왜 이런 인프라가 지금 필요한가.
2024~2026년 사이 LangChain, CrewAI, Agno, AutoGen 같은 에이전트 프레임워크가 우후죽순 생겼다. 그런데 문제는 — 이 에이전트들끼리 서로 대화할 표준이 없다는 것. 각자 자기만의 API, 자기만의 인증, 자기만의 호출 규약을 쓴다.
웹 초창기와 비슷한 상황이다. 1990년대 초의 인터넷은 사이트마다 형식이 달라서 서로 연결되지 않았다. 그러다 HTTP, DNS, HTTPS, 결제 API가 표준화되면서 비로소 우리가 아는 "웹"이 됐다. Bindu는 에이전트 세계의 HTTP·DNS·결제 표준을 한 번에 구현한 미들웨어다.
message/send, tasks/get 등)이 통일돼 있어 어느 프레임워크가 보내든 받든 동작한다.did:key:z6Mki....402 Payment Required 상태 코드를 정의해뒀지만 25년간 거의 안 쓰였다. Coinbase가 USDC(달러 페그 스테이블코인) + Base 블록체인으로 이걸 부활시켰다. "이 API 호출은 0.01달러 받고 응답해줄게"가 표준 헤더로 가능해진다.한 문장으로 줄이면.
Bindu는 단순 라이브러리가 아니라 운영 레이어다. 핵심 기능은 세 가지 — (1) 어떤 프레임워크의 에이전트든 한 줄로 감싸기, (2) 표준 프로토콜(A2A/AP2/X402)로 외부에 노출, (3) 신원·결제·관찰가능성을 무료로 얹기.
"백엔드가 모놀리스에서 마이크로서비스로 진화한 것처럼, 에이전트도 결국 분산 시스템이 된다"는 비전을 가장 구체적으로 구현한 첫 사례다.
시대적 배경 + 경쟁 우위.
2025년 후반부터 빅테크들이 에이전트 표준을 동시에 밀기 시작했다. Google이 AP2 (Agent Payments Protocol, 에이전트 결제 협상 프로토콜), Coinbase가 X402, 그리고 A2A 프로젝트가 통신 표준을 만들었다. Bindu는 이 세 표준을 한 번에 구현한 첫 번째 프로덕션 레디 프레임워크다.
또 하나 — 배포 자동화가 미친 듯이 매끄럽다. cookiecutter 한 줄로 본인 에이전트가 GitHub Actions를 통해 Bindu Directory(공개 레지스트리)에 자동 등록된다. README가 9개 언어(영/독/스/프/힌/벵/중/네/타밀)로 있는 것도 글로벌 채택을 정조준한 시그널.
| 비교 항목 | 전통 (LangChain 단독) | Bindu로 감싸기 |
|---|---|---|
| 외부 노출 | FastAPI 직접 작성 | bindufy() 한 줄 |
| 에이전트 간 통신 | 없음 (자체 API) | A2A 프로토콜 자동 |
| 결제 | Stripe·PayPal 직접 통합 | X402 + USDC on Base 자동 |
| 신원 검증 | API Key | DID + Ed25519 서명 |
| 관찰가능성 | OpenTelemetry 직접 세팅 | 내장 + Sentry 통합 |
| 분산 배포 | Celery·Redis 직접 구성 | InMemory→Redis 무중단 전환 |
백엔드 · 프론트엔드 · 인프라 · 개발자 도구.
전체 구조도 → 핵심 패턴 하나하나.
┌─────────────────────────────────────────────────────────────────┐
│ Internet of Agents │
│ │
│ ┌─────────────┐ A2A ┌─────────────┐ │
│ │ Agent A │ ◄──────────────────► │ Agent B │ │
│ │ (LangChain) │ AP2 Negotiation │ (CrewAI) │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ │ X402 (USDC on Base) │ │
│ ▼ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Bindu Directory (DID Registry) │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
▲
│
Bindu Service Layer (per agent)
│
▼
┌────────────────────┐
│ HTTP/JSON-RPC API │
│ (Starlette+Uvi) │
└─────────┬──────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ bindufy() Wrapper │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Task Manager │ Scheduler │ Storage │ │
│ │ (요청 분배) │ InMemory or │ InMemory or │ │
│ │ │ Redis │ PostgreSQL │ │
│ └──────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Auth (OAuth2) │ Skills │ Negotiation │ │
│ │ Ory Hydra │ Registry │ (Capability) │ │
│ └──────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ DID Identity │ Payments │ Observability │ │
│ │ (Ed25519) │ (X402+web3) │ (OTel + Sentry) │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ User Agent (Framework-agnostic) │
│ Agno / CrewAI / LangChain / LlamaIndex / FastAgent │
└─────────────────────────────────────────────────────────┘
bindufy())사용자는 단 한 줄로 평범한 에이전트를 Bindu 서비스로 변환한다. 내부에서는 핸들러 함수를 받아 JSON-RPC 엔드포인트, 작업 큐, 인증, 결제 등 모든 인프라를 자동으로 부착한다.
# Agno 에이전트 예시
agent = Agent(model=OpenAIChat(id="gpt-4o"), tools=[DuckDuckGoTools()])
def handler(messages):
return agent.run(input=messages)
# 단 한 줄!
bindufy(config, handler)
평범한 Python 함수에 @app.route("/api")를 붙이면 Flask가 HTTP 서버·라우팅·요청 파싱을 다 해주는 것과 같다. Bindu는 거기서 더 나아가 결제·신원·분산 처리·텔레메트리까지 한 번에 붙여준다.
저장소(Storage)와 스케줄러(Scheduler) 모두 추상 인터페이스 뒤에 숨어 있다. 개발 단계에서는 외부 의존성 0 (InMemory)으로 시작, 프로덕션에서는 환경변수만 바꿔 PostgreSQL + Redis로 전환한다. 코드 수정 없이 운영 모드 전환 — 이게 핵심.
| 컴포넌트 | 개발 (Zero-config) | 프로덕션 |
|---|---|---|
| Storage | InMemoryStorage | PostgreSQL (asyncpg) |
| Scheduler | InMemoryScheduler | Redis |
| Auth | Disabled | Ory Hydra OAuth2 |
| Identity | 로컬 키 | Vault 통합 DID |
모든 에이전트가 동일한 JSON-RPC 2.0 메시지를 주고받는다. message/send, tasks/get 같은 표준 메서드를 통해 프레임워크와 무관하게 동작한다.
[1] Client [2] Bindu [3] Agent │ │ │ │ POST message/send │ │ ├─────────────────────────────►│ │ │ │ enqueue task │ │ ├─────────────────────────►│ │ ◄────────── task_id │ │ │ (status: submitted) │ │ │ │ │ │ GET tasks/get?id=... │ ◄─── result │ ├─────────────────────────────►│ │ │ ◄────── (status: completed) ─┤ │ │ + artifacts │ │
각 에이전트는 W3C DID 표준의 did:key 또는 did:web으로 식별된다. 메시지에 did.message.signature가 포함되어 Ed25519로 검증된다. 즉 "이 메시지는 정말 그 에이전트가 보낸 것"임을 암호학적으로 증명할 수 있다.
Coinbase가 USDC + Base 블록체인으로 25년 잠자던 HTTP 402를 부활시켰고, Bindu가 그걸 에이전트 세계에 들여왔다. 에이전트끼리 API 키 없이도 "이 작업은 0.10 USDC 받고 해줄게"라고 협상할 수 있다. 마이크로페이먼트가 자연스러워지면 에이전트 경제(Agent Economy)가 가능해진다.
"에이전트가 결제 받게 만들고 싶다"는 요구가 생기면 직관적으로 Stripe + 자체 API Key + Auth0를 조합하게 된다. 그러면 다른 에이전트 프레임워크와 호환이 깨지고, 표준이 굳어지는 순간 다시 다 갈아엎어야 한다.
A2A · AP2 · X402처럼 이미 빅테크가 밀고 있는 표준 위에 얹는다. Bindu는 그걸 기본 채택해서 시간이 지나도 깨지지 않는 인프라를 보장한다.
어디에 뭐가 있는지.
Bindu/ ├── bindu/ # 핵심 Python 패키지 (PyPI에 올라감) │ ├── penguin/ # bindufy() 진입점 (펭귄이 마스코트) │ ├── ... # task manager, scheduler, storage 구현체 │ └── _version.py # hatch-vcs로 git tag → 버전 자동 생성 │ ├── alembic/ # PostgreSQL 마이그레이션 스크립트 │ ├── docs/ # 20개 주제별 가이드 문서 │ ├── AUTHENTICATION.md # Ory Hydra OAuth2 │ ├── PAYMENT.md # X402 결제 통합 │ ├── STORAGE.md # PostgreSQL 전환 │ ├── SCHEDULER.md # Redis 분산 작업 │ ├── SKILLS.md # 재사용 가능한 능력 시스템 │ ├── NEGOTIATION.md # 에이전트 간 협상 │ ├── TUNNELING.md # 로컬 → 인터넷 노출 │ ├── NOTIFICATIONS.md # 푸시 알림 │ ├── OBSERVABILITY.md # OpenTelemetry + Sentry │ ├── DID.md # 분산 신원 │ ├── HEALTH_METRICS.md # 헬스 체크 │ ├── GATEWAY.md # 게이트웨이 설정 │ ├── GRPC_LANGUAGE_AGNOSTIC.md # gRPC 언어 비종속 어댑터 │ ├── SECURITY_STACK.md # 보안 스택 │ ├── STREAMING.md # 스트리밍 │ ├── VAULT_INTEGRATION.md # Vault 통합 │ └── …(외 4개 주제) # AUTH, FILE_HANDLING 등 │ ├── examples/ # 실제 동작 예제 (echo, agno, ag2, typescript-openai 등 28개) ├── tests/ # pytest, 64%+ 커버리지 ├── .agents/ # 에이전트 메타데이터 (DID 등) ├── release-notes/ # 버전별 릴리즈 노트 │ ├── pyproject.toml # 빌드 (hatchling + hatch-vcs) ├── uv.lock # UV 락 파일 ├── alembic.ini # DB 마이그레이션 설정 ├── api-collection.json # Postman/Bruno 컬렉션 ├── bandit.yaml # Python 보안 스캐너 설정 └── .secrets.baseline # detect-secrets baseline
최상위에 README가 9개 언어(영·독·스·프·힌·벵·중·네·타밀)로 있다. 글로벌 채택을 정조준한다는 시그널. 또 .agents 폴더는 Bindu 자체 메타데이터 — "Bindu가 만든 Bindu 에이전트" 같은 메타적 구조.
기술 영역마다 무엇을 가져갈지.
async with sessionuvx로 일회성 실행실습: 본인 FastAPI 프로젝트를 UV로 마이그레이션하고 속도 비교
실습: Echo 에이전트를 띄우고 curl로 JSON-RPC 호출, 응답 분석
실습: 메시지에 서명 추가하고 다른 머신에서 검증
실습: Base Sepolia(테스트넷)에서 USDC 0.01달러 송금
실습: Jaeger를 로컬에 띄우고 Bindu 트레이스 시각화
-n auto), pre-commit + detect-secrets, ruff(Rust 린터)모드별 최소 사양.
| 모드 | 최소 사양 | 외부 의존성 | 용도 |
|---|---|---|---|
| Zero-config Local | Python 3.12 + 1GB RAM | 없음 (InMemory) | 개발, 학습 |
| Single Production | 2 vCPU + 4GB RAM | PostgreSQL 1대 | 소규모 서비스 |
| Distributed | 3+ vCPU + 8GB RAM | PostgreSQL + Redis (+ Ory Hydra) | 멀티워커, 고가용성 |
| + X402 Payment | 위에 더해 Base RPC 접근 | Coinbase CDP 키 or Base 노드 | 유료 에이전트 |
| + MicroVM (boxd) | KVM 지원 Linux 호스트 | boxd 런타임 | 강한 격리 필요시 |
PowerShell에서 먼저 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. 가상환경 활성화는 .venv\Scripts\activate. UV 설치 후 터미널 재시작 필수(PATH 인식). 일부 패키지는 Microsoft Visual C++ Build Tools가 필요하다.
난이도별 실습 — Easy → Hard.
1) UV 설치 후 가상환경 uv venv --python 3.12 2) uv add bindu 3) README의 echo_agent.py 복사·실행 4) curl로 JSON-RPC message/send 호출 5) 응답의 did.message.signature 확인 — 실제로 서명되어 있다.
배우는 것: JSON-RPC 구조, Bindu 메시지 포맷, DID 서명
1) 기존 LangChain·Agno 에이전트 코드 가져오기 2) 핸들러 함수로 감싸기 def handler(messages): ... 3) bindufy(config, handler) 호출 4) curl로 JSON-RPC message/send 호출해 직접 대화
배우는 것: 어댑터 패턴, 프레임워크 비종속 설계
1) Docker로 PostgreSQL 띄우기 2) 환경변수 BINDU_STORAGE_URL=postgresql+asyncpg://... 설정 3) Alembic 마이그레이션 (alembic upgrade head) 4) 에이전트 재시작 → 태스크 상태가 DB에 영구 저장 5) 에이전트 죽였다 살려도 진행 중 태스크 복구 확인
배우는 것: Strategy 패턴, async DB 연결, 마이그레이션 워크플로
1) Agent A(검색): DuckDuckGo로 정보 수집 2) Agent B(요약): 받은 텍스트 한국어 요약 3) A가 B를 HTTP로 호출 → JSON-RPC 응답 4) 두 에이전트의 OpenTelemetry trace를 연결해 분산 추적
배우는 것: 진짜 A2A 통신, 분산 트레이싱, 에이전트 합성(composition)
1) Base Sepolia 테스트넷 USDC 받기 (faucet) 2) Coinbase CDP에서 지갑 생성 3) 특정 메서드를 X402로 보호 "이 작업은 0.01 USDC" 4) 다른 머신/지갑에서 호출 → 결제 → 응답 5) 온체인 트랜잭션을 BaseScan에서 확인
배우는 것: Web3 통합, 마이크로페이먼트, HTTP 402 부활, 에이전트 경제 실험
주차별로 따라가면 전체 스택 마스터.
UV 패키지 매니저 / Python 3.12 async 기초 / Starlette + Uvicorn 작동 원리 → 미니 ASGI 앱 직접 작성
Pydantic 2 BaseModel, validators, pydantic-settings로 12-factor 앱 구성 → Bindu config 시스템 분석
SQLAlchemy 2.0 async + asyncpg → 작은 task queue 만들고 Alembic 마이그레이션 실습
Redis pub/sub, lists, streams → Bindu Scheduler 코드 읽기, Celery와 비교
JSON-RPC 사양 정독, A2A 레포 사양 읽기 → Echo 에이전트 깊게 분석
Ed25519, base58, W3C DID 사양 → pynacl로 직접 서명·검증, did:key 생성기 만들기
OAuth2 4가지 flow, OpenID Connect → Docker로 Ory Hydra 띄우고 Bindu 연동
web3.py로 Base Sepolia 트랜잭션 → x402 사양 + Coinbase CDP SDK 실험
OTel 사양, Jaeger 로컬 실행 → Bindu 트레이스 분석, 본인 앱에 OTel 추가
2~3개 에이전트를 Bindu로 연결, A2A로 대화, AP2로 협상하는 시스템 구축
자주 마주칠 단어들.
message/send, tasks/get 등의 메서드.did:key:z6Mki... 형태.uvx cookiecutter https://...로 새 프로젝트 즉시 스캐폴딩.공식 · 프로토콜 · 학습 리소스.
uv add bindu로 설치하고 examples/echo_agent.py 그대로 실행. curl로 한 번 호출해 응답 구조를 눈으로 확인.did.message.signature를 떼어내 pynacl로 직접 검증. "이 메시지는 정말 그 에이전트가 보냈다"를 손으로 증명해본다.bindufy()로 감싸서 curl로 JSON-RPC 호출. 어댑터 패턴이 어떻게 작동하는지 감 잡기.