하나의 키로는 책임을 나눌 수 없습니다
여러 LLM과 자동화가 같은 결제 수단을 공유하면, 어떤 Agent가 얼마를 쓸 수 있는지 구분하기 어렵습니다.
Agent별 권한 경계 필요
PURCHASING FLEET FOR AI SPEND
Ultari는 조직의 AI 구매를 위한 purchasing fleet입니다. 각 Agent에 예산과 수취인 정책을 부여하고, 요청자 기록과 온체인 payer를 구분해 남깁니다.
PAYMENT REQUEST
경쟁사 리서치01 · 문제
구매 요청은 자동화됐지만 결제 수단은 여전히 공유 키, 개인 선결제, 수동 승인에 머물러 있습니다. Ultari는 지출 신원과 요청자 기록을 처음부터 분리합니다.
여러 LLM과 자동화가 같은 결제 수단을 공유하면, 어떤 Agent가 얼마를 쓸 수 있는지 구분하기 어렵습니다.
Agent별 권한 경계 필요
개인 지갑이나 카드로 먼저 결제하면 요청 이유, 조직 정책, 실제 payer가 서로 다른 기록에 남습니다.
요청과 결제 근거 분리
반복 구매와 예외 구매를 같은 승인 절차로 처리하면, 검토할 일은 늘고 중요한 예외는 묻힙니다.
상시 정책과 JIT 예외 분리
02 · PURCHASING FLEET
Agent는 지속적인 wallet spending identity입니다. 모델이나 런타임이 아니라, 자기 vault와 정책을 가진 조직의 지불 단위입니다.
자기 vault와 예산, 수취인 정책을 가진 지불 주체입니다. 결제에서는 Agent vault가 온체인 payer로 나타납니다.
LLM과 자동화 세션은 구매를 요청하지만 지불 신원은 아닙니다. 모델을 교체해도 Agent의 예산과 정책은 별도로 유지됩니다.
Agent = persistent wallet spending identity · LLM = model/runtime
수취인 · serpapi.com · tavily.com
수취인 · 등록 수취인 3곳
수취인 · apify.com
예시 fleet · 별도 vault의 정책과 지출 상태는 서로 섞이지 않습니다.
03 · 아키텍처
Member 확인, 정책 평가, 온체인 한도, 결제 증거가 한 경로에 있지만 같은 역할은 아닙니다. 각 단계의 집행 주체를 분명히 나눕니다.
04 · SLACK 플로우
Slack adapter는 서명된 요청과 허용된 Workspace를 확인하고, 사용자를 안정적인 Member ID로 변환한 뒤 같은 fleet contract를 호출합니다.
Slack signature와 허용된 Workspace를 먼저 확인합니다.
채널 사용자를 조직의 안정적인 Member ID로 변환합니다.
paired BYOC signer에서 active Agent를 읽어 일관된 순서로 보여줍니다.
사용할 수 있는 Agent 3개를 찾았습니다.
05 · 정책 · JIT
허용 범위 안의 구매는 standing policy로 처리하고, 범위를 벗어난 요청은 Member · Agent · 금액 · 수취인 · 만료가 고정된 JIT 승인으로 보냅니다.
결제 시 signer는 결정론 정책으로 요청을 평가하고, 지원되는 금액·기간·수취인 제약은 Agent vault 경로에서 집행됩니다.
Owner 권한은 승인할 때 서버에서 다시 평가됩니다. caller가 보낸 role이나 Agent hint는 authority가 아닙니다.
06 · 증거 모델
온체인에는 Agent vault가 payer로 남고, signer 기록에는 인증된 Member와 요청 채널, 적용된 정책이 남습니다. 사람을 온체인 payer로 포장하지 않습니다.
체인은 사람의 Workspace 또는 Slack identity를 나타내지 않습니다.
요청자 attribution은 Agent payer와 별도입니다. 관측 기록 자체는 지출 한도를 집행하지 않습니다.
SAS attestation은 닫힌 expense-record commitment를 증명할 수 있지만 KYC, merchant invoice, tax invoice 또는 법정 영수증을 대신하지 않습니다.
07 · 신뢰 모델
Solana, signer policy, Cloud KMS, GCP IAM이 맡는 경계와 남는 신뢰 전제를 구분합니다. 관측 로그는 집행 수단으로 표현하지 않습니다.
지원되는 금액 · 기간 · 수취인 allowance를 Solana 프로그램이 집행합니다.
전제 · Solana 합의와 배포된 프로그램
Member authorization, 최소충분 Agent 선택, standing policy와 JIT request 권한을 signer가 평가합니다.
전제 · Ultari signer와 서버 상태
Agent의 software EC_SIGN_ED25519 key로 서명을 실행하며 private key material을 애플리케이션에 반환하지 않습니다.
전제 · Google Cloud KMS
production preflight는 key-level signer role과 effective IAM Deny가 useToSign 주체를 signer runtime으로 제한하는지 검증합니다.
전제 · 조직 IAM/Deny 관리자
관측 로그는 enforcer가 아닙니다. GCP 조직 관리자와 IAM/Deny 관리자는 cloud trust boundary에 남습니다.
08 · 데모 merchant
공개 merchant는 여러 구매 상황을 보여주기 위해 결정론적인 synthetic 데이터를 판매합니다. 실제 가격, 위험평가 또는 예약 가능성을 주장하지 않습니다.
응답 표기 · synthetic: true · 고정 asOf
402 challenge, signer가 발급한 PAYMENT-SIGNATURE, wallet-agnostic Path 2 verify와 settle, PAYMENT-RESPONSE 반환은 공개 devnet 경로에서 실행됩니다.
측정 범위 · Solana devnet
Production merchant와 facilitator는 x402 v2 exact-SVM smart-wallet payment를 verify하고 settle할 수 있어야 합니다. merchant가 payer의 vault 구조를 알 필요는 없습니다.
third-party 호환성 · controlled payment로 검증
/demo/solana-infrastructure/demo/merchant-risk/demo/saas-procurement/demo/office-supplies/demo/business-travel현재 공개 데모는 Ultari의 x402 processor를 사용합니다. 설치된 pay-kit과 Kit 7 graph의 통합 제약은 Path 2 결제 자체의 실패를 뜻하지 않으며, 외부 merchant 호환성은 개별 facilitator를 통한 결제로 확인해야 합니다.
09 · 인터페이스
접점마다 인증 방식은 달라도 Agent 선택, 정책 평가, 결제 증거의 계약은 공유합니다. 요청 채널이 지출 권한을 새로 만들지는 않습니다.
Slack signature와 workspace Member 검증 뒤 paired BYOC signer의 active fleet을 읽습니다.
Google OAuth session으로 x402 resource를 요청합니다. Agent 인자는 authority가 아닌 hint입니다.
Console presentation은 fleet, policy, Owner transaction, JIT approval 상태를 구분해 보여줍니다.
10 · 시작하기
공개 Slack에서 purchasing fleet를 살펴보거나 GitHub에서 구현과 경계를 확인할 수 있습니다.
Agent = wallet spending identity · LLM = model/runtime