Solply — Settle On Ledger, for supply
프랜차이즈 본사와 가맹점 사이의 식자재 대금(물대)을, AI 에이전트들이 청구·검수·협상·온체인 정산까지 사람 개입 없이 처리합니다.
에이전트는 청구서를 받으면 입고 기록과 대조하고, 수량이 틀리면 차액을 깎아달라 협상하고,
발주한 적 없는 품목이면 거부하고, 점주가 정한 한도를 넘으면 멈춰서 사람을 부릅니다.
발주량이 과하면 본사가 지점과 전국의 일별 시계열을 읽어 축소를 제안하고, 지점끼리는 값을 흥정하고,
한 지점이 혼자 못 채우는 물량은 본사가 짝을 지어 중개합니다.
합의가 되면 x402 프로토콜로 Solana 위에서 USDC를 지불하고, 본사가 온체인에서 대조해 정산을 확정합니다.
Background — 개발 이력
This project predates Crypto World's Fair (Sep 14 – Oct 12, 2026) and is disclosed here as prior work.
Solply was built between 2026-07-25 and 2026-08-20 for the GCP × Solana AI Agentic Hackathon,
where it placed first. That version already included the LangGraph settlement agents, the ADK
assistant, nine negotiation types, x402 implemented on both the buyer and the seller side, and
A2A agent cards — and it had been running unattended on 10-minute ticks since 2026-07-29.
The repository state at the start of Crypto World's Fair is tagged cwf-baseline
(commit fbde663, 2026-08-20).
All 201 commits up to that point are dated before 2026-08-22. Everything submitted for
Crypto World's Fair judging is the diff from that tag onward:
→ compare cwf-baseline...main
Usage figures elsewhere in this README were measured in August 2026. They are prior traction
and labeled with their measurement date; metrics for Crypto World's Fair are measured from
2026-09-14 onward and reported separately.
한국어 — 이 저장소는 2026년 78월에 GCP × Solana AI Agentic 해커톤 출품작으로 만들어 수상했습니다.
Crypto World's Fair(9/1410/12) 시작 시점의 상태가 태그 cwf-baseline(커밋 fbde663, 8/20)이고,
이번 대회 심사 대상은 그 태그 이후의 diff입니다. 아래 본문의 숫자는 8월 실측이며 이전 실적입니다.
이번 대회 지표는 9/14 이후로 따로 계측합니다.
이건 목업이 아닙니다
주최측이 "목업은 심사 대상에서 제외"라고 명시했으므로, 무엇이 실제인지 먼저 밝힙니다.
실제로 일어나는 일 — 위 라이브 URL은 2026-07-29부터 사람 없이 10분마다 스스로 거래하고 있습니다
(Cloud Scheduler → 판매 → 카드정산 → 조달 → 재입고 → 예약납부). 모든 결제는 Solana devnet의 실제 트랜잭션이고,
공개 익스플로러에서 누구나 검증할 수 있습니다. 예를 들어 이 청구서:
INV-0731-C76 · 1.5 USDC
https://explorer.solana.com/tx/3fs9sHQa6XtZLm9fGWUXYMyRJyyFxAmFKSvPW5cFNjHGuyjCux6APYE9P6oPuPTjemajZNGrQrrQKtaupJqdvMDz?cluster=devnet
정직하게 밝히는 한계 — devnet 토큰은 실제 가치가 없습니다(테스트 네트워크). 시세 데이터를 사는
pay.sh는 --sandbox 모드라 그 결제는 공개 체인에 남지 않고, 시세 숫자 자체는 주최측 데모 API가 만들어 주는 값입니다
(화면에도 제공 pay.sh 데모 시세로 표기). 메인넷은 사고 방지를 위해 코드 규칙으로 금지했습니다.
그 외 정산·직거래·카드정산은 전부 devnet 실거래입니다.
3분 안에 확인하는 방법
- 라이브 대시보드 접속 → 역할 선택에서 시스템 관리자
- 실행 로그 패널 — 에이전트들이 방금 한 일이 시간순으로 쌓여 있습니다.
x402 정산 완료 옆의 서명을 누르면 익스플로러로 넘어갑니다
- 청구서 표에서 아무 행이나 누르면 그 한 건의 발행 → 검수 → 협상 → 결제 → 정산 전 과정이 펼쳐집니다.
금액이
7.00 → 6.50처럼 바뀐 행이 있으면 그게 에이전트가 깎아낸 것입니다
- 마스트헤드의
‹ 오늘 ›로 지난 날짜를 넘겨보면 그날의 거래만 보입니다
- /shop 에서 아무거나 하나 사보세요 —
재고가 안전선을 깨면 다음 틱(10분 내)에 에이전트가 조달을 시작합니다
심사 기준별로 어디를 보면 되는가
| 기준 | 우리가 한 것 | 코드 |
|---|
| ① 혁신성·UX | 에이전트가 따지고·거부하고·멈춘다. 협상 9종(정상·차감·유예·분할 역제안·거부·지점 간 직거래·발주량 축소 심사·직거래 가격 흥정·본사 부분잉여 중개 — 뒤 3종은 문턱값 없이 LLM이 시계열을 읽고 판단한다). 손님이 직접 수요를 만드는 /shop | agents/*/graph.py · api/shop.py |
| ② AI 활용도 | Vertex AI(Gemini) + LangGraph(거래 두뇌 — 경로가 그래프로 드러난다) + ADK(사람 창구 — 대화로 승인). 분담에 근거가 있다 | llm/judge.py · agents/ · assistant/ |
| ③ 인프라 연동 | USDC(정산 통화 — Circle 공식 devnet 민트) · x402(판매자·구매자 양쪽을 직접 구현 — 에이전트가 자기 지갑으로 판단 재료를 사고, 우리 체결 지수를 같은 규약으로 판다) · pay.sh(첫 시세 출처였고 지금은 폴백 — 카탈로그 입점은 메인넷 로드맵) | core/protocol.py · api/x402.py · core/market.py · api/data_products.py |
| ④ 실제 구동 | 라이브가 10분마다 스스로 거래 중 — 청구서 4,005건·직거래 3,516건, 그중 사람이 개입한 결정은 49건 (8/20 실측). 모든 결제에 devnet 익스플로러 링크 | core/economy.py · api/dashboard.py |
세부 주제 대응: A(결제 요청 생성→입금→정산) = 402 발행·온체인 3중 대조 ·
B(정책 한도 내 자율 서명) = route_after_cashflow의 상한·하한·승인 경계 ·
C(A2A 협상) = 두 에이전트 그래프의 왕복.
직접 돌려보기
로컬 재현은 라이브와 같은 코드, 같은 도커 이미지로 돕니다. 다른 것은 아래 표의 재료뿐인데 —
공통점은 전부 "남의 것을 빌려 쓸 수 없는 것"(자격증명·자금이 든 지갑·관리형 인프라)이라
로컬 대체물로 갈아 끼웠다는 점입니다. 협상 갈림길·온체인 결제·검증 로직은 동일합니다.
| 구성 요소 | 라이브 (Cloud Run) | 로컬 재현 | 왜 다르게 두었나 |
|---|
| API · 결제 서비스 | Cloud Run 서비스 2개 | 같은 Dockerfile로 직접 빌드 | 다르지 않습니다 — 코드 경로 동일 |
| AI 판단 | Vertex AI Gemini (서비스 계정) | 기본 규칙 판단(키 불필요) · 선택: 자기 AI Studio 키 | Vertex는 GCP 프로젝트·자격증명이 필요해 요구가 큽니다. 규칙 모드는 같은 갈림길을 지나고 판단 근거 문장만 다릅니다 |
| 블록체인 | devnet (공개 테스트넷) | localnet (자기 컴퓨터 속 체인) | devnet 결제엔 자금 있는 지갑이 필요한데 우리 키를 드릴 수 없으니, 무한 에어드랍 되는 로컬 체인을 씁니다 |
| 지갑 · USDC | Secret Manager의 키 · Circle 공식 devnet USDC | make localnet-setup이 새로 생성·발행 | 진짜 키는 저장소에 없고(보안), 로컬 체인엔 공식 민트가 없어 직접 발행합니다 |
| DB | Cloud SQL (PostgreSQL 16) | postgres:16 컨테이너 | 관리형이냐 컨테이너냐 차이일 뿐 — 같은 엔진, 같은 스키마, 같은 store 코드 |
| 실행 주기 | Cloud Scheduler가 10분마다 | demo.py 1회 압축 재생 | 심사가 10분을 기다릴 필요 없이 5개 시나리오를 한 번에 봅니다 (make tick으로 루프도 가능) |
| 시세 구매 | 자가 지수 기본(우리 데이터 상점, devnet 실결제) · pay.sh 샌드박스는 폴백 | 꺼짐 | pay CLI가 x86_64 전용이라 Apple Silicon 호환을 위해 껐습니다 — 시세는 없어도 조달이 계속되는 선택 재료입니다 |
(운영과 완전히 동일한 Vertex 판단이 굳이 필요하면 docker-compose.vertex.yml 오버레이가 있습니다 — GCP 프로젝트 보유자용 선택사항.)
가장 빠른 검증(체인 불필요): make setup && make test — 137개, 3초.
경로 A — Docker (권장, 설치 최소) · 필요한 것: Docker · Solana CLI
This is the beginning of the README. Read the rest at the original. Read the full README ↗