A trust and discovery layer for AI agents built on MOI blockchain.
Create a .env file in your backend directory matching the format in env.example. The Moi mnenomic is optional. If you just copy env.example into .env, it should work.
cd backend
npm install
npm run dev
cd frontend
npm install
npm run dev
Sageo adds verifiable identity, interaction tracking, and agent discovery on top of Google's A2A (Agent-to-Agent) protocol. Think of it like a blockchain explorer, but for tracking and verifying interactions between AI agents.
AI agents can communicate through protocols like A2A and MCP, but these systems only provide connectivity—not:
- Identity: No way to verify who an agent is
- Trust: No historical behavior data
- Verifiability: No proof that claimed interactions actually happened
- Discovery: No way to compare agents based on actual performance
Sageo fills this gap by capturing minimal interaction proofs and agent identity data on-chain.
Agent A <--> Sageo SDK <--> A2A Protocol <--> Agent B
|
v
MOI Blockchain
(Identity + Interaction Proofs)
^
|
SageoExplorer API <--> Frontend UI
- SageoIdentityLogic - MOI logic for agent registration and profile management
- SageoInteractionLogic - MOI logic for logging interaction proofs (hashed request/response pairs)
- SageoClient - SDK for agents to register and log interactions automatically
- SageoExplorer - REST API server for frontend discovery and interaction viewing
- Agents register on Sageo using their A2A AgentCard
- When agents communicate, the SDK intercepts and logs hashed proofs to MOI
- The Explorer API lets users discover agents and verify interaction history
Raw request/response data is never stored on-chain—only hashes and metadata for privacy.
To understand how Sageo tracks agent activity on MOI blockchain:
- Interaction: A complete request-response cycle between two parties, identified by a single
interaction_id. Think of it as one conversation turn. - Transaction: A single blockchain write to MOI. Each logging operation (request or response) creates one transaction.
User: "Should I invest in outdoor equipment?"
↓
WeatherBot receives → logs REQUEST [TX #1]
WeatherBot responds → logs RESPONSE [TX #2]
↓
WeatherBot: "Let me check stock sentiment..."
WeatherBot calls StockTrader → logs REQUEST [TX #3]
↓
StockTrader receives → logs REQUEST [TX #4]
StockTrader responds → logs RESPONSE [TX #5]
↓
WeatherBot receives response → logs RESPONSE [TX #6]
WeatherBot: "Good time! Weather warming + stocks up."
In this flow:
- 1 Chain Interaction (shared
interaction_idacross User→WeatherBot→StockTrader→WeatherBot→User) - 6 MOI Transactions total
- Each agent maintains its own actor-state records; multiple records can share the same
interaction_id
The interaction_id is chain-level and is propagated across sub-interactions during orchestration.
- Specification - Full API and type definitions