Autonomous AI Quant Agent with Tamper-Evident, Multi-Chain Signal Proof
Read the market's hidden mechanism — natural-language finance research, backtesting, and a 24/7 agent that anchors every result on Sui, Mantle, and Somnia.
Tenki is an autonomous AI quant agent. Describe a strategy in plain English and it generates a signal engine, runs a backtest, and produces a trust-layer run card for every run. A 24/7 worker then makes those artifacts decentralized, portable, and tamper-evident:
- Walrus stores the actual bytes —
run_card.json, metrics, and the LLM-generatedstrategy.py— as content-addressed blobs. - A small manifest blob indexes them with their SHA-256 hashes.
- Three chains (Sui via Tatum, Mantle Sepolia, Somnia Shannon) each pin the manifest's
blobId+ hash + size as an on-chainSignalEntry.
Anyone can fetch a strategy/backtest from any Walrus aggregator and prove — against the on-chain record — that it is exactly what the agent published. No trusted server. No human in the loop.
Each cycle the worker runs as an agent: it runs a backtest, reads what it has already published on-chain, reasons about whether the new result clears a quality bar and is novel, and only then publishes. Otherwise it declines and explains why. That is agent-native behavior.
One autonomous cycle anchored the same Walrus manifest on all three chains. Verify it yourself:
Walrus manifest blob: bTw4KKMbfl_NDDq5N41Huc_NO5S8RKoM6B3Cap3WBbU
| Chain | Contract / Object | Explorer |
|---|---|---|
| Sui (testnet, via Tatum RPC) | SignalEntry 0x758465055fc675598d72d255882521d0f26b0e2836f4f215407cbd7e5290f518 |
SuiScan |
| Mantle Sepolia (chain 5003) | SignalVault 0xD6786AD160648A4C7e232e77394A5FEa2a37Cf14 |
Explorer |
| Somnia Shannon (chain 50312) | SignalVault 0xf61CBfe72aA03a12A64122b0aDA0B19CE57ad80D |
Explorer |
Publisher (EVM): 0x4Bb251A97A9b7e9c235f2ce7e2a3922bBb49Ace7 · Publisher (Sui): 0x0ecf280e25ba8dc55499a9b8a0a9ba73eb04c93ec355619f8bd8a1f85ea89836
# 1. Fetch the manifest bytes from any Walrus aggregator (content-addressed)
curl -s https://aggregator.walrus-testnet.walrus.space/v1/blobs/bTw4KKMbfl_NDDq5N41Huc_NO5S8RKoM6B3Cap3WBbU
# 2. Read the on-chain SignalEntry on Sui (routes through Tatum's RPC gateway)
curl -s -X POST https://sui-testnet.gateway.tatum.io \
-H "Content-Type: application/json" -H "x-api-key: <YOUR_TATUM_KEY>" \
-d '{"jsonrpc":"2.0","id":1,"method":"sui_getObject","params":["0x758465055fc675598d72d255882521d0f26b0e2836f4f215407cbd7e5290f518",{"showContent":true}]}'
# The blob_id + sha256 + size on every chain match the Walrus manifest above.- Natural-language quant — "Backtest a MACD+RSI strategy on BTC-USDT 1h for 90 days" → strategy code + run card + metrics (Sharpe, return, drawdown).
- Multi-market — A-shares, crypto (OKX), US/HK equities (yfinance). Minute-to-daily timeframes.
- Swarm teams — multi-agent presets (investment committee, quant desk) that debate and decide.
- Trade-journal analysis — parse any broker CSV; diagnose behavioral biases.
- Decentralized proof — every run is stored on Walrus and anchored on three chains, tamper-evident and portable.
┌────────────────────────────────────────────────────────────────────────┐
│ USER (natural language) │
│ "Backtest MACD+RSI on BTC-USDT 1h, 90d" │
└────────────────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────────┐
│ Tenki Agent (LangChain · FastAPI) │
│ backtest tool → strategy.py + run_card.json + metrics → run dir │
└────────────────────────────────────────────────────────────────────────┘
│ (24/7 autonomous worker)
▼
┌────────────────────────────────────────────────────────────────────────┐
│ Signal Vault (vault.py) │
│ 1. PUT bytes → Walrus blobs 2. manifest blob (indexes + SHA-256) │
└────────────────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
│ SUI (via Tatum) │ │ MANTLE Sepolia │ │ SOMNIA Shannon │
│ signal_vault Move │ │ SignalVault.sol │ │ SignalVault.sol │
│ publish_signal() │ │ publishSignal() │ │ publishSignal() │
└────────────────────┘ └────────────────────┘ └────────────────────┘
one manifest · three chains · every cycle · no human
The same Walrus manifest is anchored natively on three chains every cycle — one engine, three on-chain registries, fully verifiable.
| Chain | Role | Status |
|---|---|---|
| Sui (via Tatum RPC) | Move signal_vault — content-addressed proof + SignalPublished events |
✅ live + verified |
| Mantle Sepolia | SignalVault.sol — EVM registry for AI trading signals |
✅ live + verified |
| Somnia Shannon | SignalVault.sol — agent-native on-chain anchoring |
✅ live + verified |
Meaningful Walrus storage (signal source + backtest evidence, not decoration), Tatum Sui RPC for reads/anchoring, and the same autonomous engine anchoring natively on each chain.
| Network | Chain ID | Contract | RPC |
|---|---|---|---|
| Mantle Sepolia | 5003 | 0xD6786AD160648A4C7e232e77394A5FEa2a37Cf14 |
https://rpc.sepolia.mantle.xyz |
| Somnia Shannon | 50312 | 0xf61CBfe72aA03a12A64122b0aDA0B19CE57ad80D |
https://dream-rpc.somnia.network |
| Item | Value |
|---|---|
| Package | 0x0e4326568fb219c65f63457849c9878f06ac1c7f8f0c44795d0dc78e18565b87 |
| RPC | https://sui-testnet.gateway.tatum.io (Tatum) |
# 1. Clone
git clone https://github.com/Venkat5599/Tenki.git
cd Tenki
# 2. Configure (LLM key required; chain keys optional)
cp agent/.env.example agent/.env
cp .env.vault.example .env # TATUM_API_KEY for Sui reads/anchoring
# 3. Run the full stack (API + agent)
docker compose up -d # API on :8899, serves the built frontend
# 4. (optional) Frontend dev server
docker compose --profile frontend up -d # Vite on :5899# In agent/.env:
# VIBE_AUTO_PROMPT=Backtest a MACD+RSI crossover strategy on BTC-USDT 1h over 90 days...
# VIBE_AUTO_PUBLISH_VAULT=1
# VIBE_EVM_TARGETS=mantle,somnia
# MANTLE_VAULT_ADDRESS=0x... SOMNIA_VAULT_ADDRESS=0x... EVM_PRIVATE_KEY=0x...
docker compose up -d workerEvery cycle the worker backtests, stores on Walrus, and anchors on every configured chain.
cd evm/signal_vault
forge create src/SignalVault.sol:SignalVault \
--rpc-url https://rpc.sepolia.mantle.xyz \
--private-key 0x<KEY> --broadcast --legacy- Agent: Python, LangChain, FastAPI, SSE streaming
- Frontend: React, Vite, TailwindCSS, Clerk auth
- Storage: Walrus decentralized blobs (content-addressed + SHA-256)
- Chains: Sui (Move, via Tatum RPC), Mantle & Somnia (Solidity, web3.py)
- Infra: Docker Compose, Caddy (auto-HTTPS), single-VPS deploy