diff --git a/Frontend/dashboard.html b/Frontend/dashboard.html new file mode 100644 index 0000000..ed61494 --- /dev/null +++ b/Frontend/dashboard.html @@ -0,0 +1,35 @@ + + + + + + Sentinel AI — Dashboard (Static) + + + +
+
+
Sentinel AI
+
Simulated Session
+
+ +
+

Dashboard

+

Welcome to your simulated Sentinel AI dashboard.

+
+
Portfolio Value
$1,234,567
+
Daily P&L
+0.42%
+
Active Agents
5
+
+
+
+ + diff --git a/Frontend/index.html b/Frontend/index.html new file mode 100644 index 0000000..b0a37fa --- /dev/null +++ b/Frontend/index.html @@ -0,0 +1,12 @@ + + + + + + Sentinel AI + + +
+ + + diff --git a/Frontend/package.json b/Frontend/package.json new file mode 100644 index 0000000..e0ab6ec --- /dev/null +++ b/Frontend/package.json @@ -0,0 +1,20 @@ +{ + "name": "sentinel-ai-frontend", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "serve:static": "node server.js" + }, + "dependencies": { + "react": "18.2.0", + "react-dom": "18.2.0", + "react-router-dom": "6.14.1" + }, + "devDependencies": { + "vite": "5.2.0", + "@vitejs/plugin-react": "5.0.0" + } +} diff --git a/Frontend/server.js b/Frontend/server.js new file mode 100644 index 0000000..e2a9181 --- /dev/null +++ b/Frontend/server.js @@ -0,0 +1,53 @@ +const http = require('http') +const fs = require('fs') +const path = require('path') + +const port = process.env.PORT ? Number(process.env.PORT) : 5173 +const root = __dirname + +const mime = { + '.html': 'text/html; charset=utf-8', + '.css': 'text/css; charset=utf-8', + '.js': 'application/javascript; charset=utf-8', + '.json': 'application/json; charset=utf-8', + '.png': 'image/png', + '.jpg': 'image/jpeg', + '.jpeg': 'image/jpeg', + '.svg': 'image/svg+xml', + '.ico': 'image/x-icon' +} + +function sendFile(filePath, res) { + fs.readFile(filePath, (error, content) => { + if (error) { + res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' }) + res.end('Not Found') + return + } + + const ext = path.extname(filePath).toLowerCase() + res.writeHead(200, { 'Content-Type': mime[ext] || 'application/octet-stream' }) + res.end(content) + }) +} + +const server = http.createServer((req, res) => { + const urlPath = decodeURIComponent((req.url || '/').split('?')[0]) + + if (urlPath === '/' || urlPath === '/index.html') { + sendFile(path.join(root, 'static.html'), res) + return + } + + if (urlPath === '/dashboard' || urlPath === '/dashboard.html') { + sendFile(path.join(root, 'dashboard.html'), res) + return + } + + const safePath = path.normalize(urlPath).replace(/^([.][.][/\\])+/, '') + sendFile(path.join(root, safePath), res) +}) + +server.listen(port, '127.0.0.1', () => { + console.log(`Sentinel AI static server running at http://127.0.0.1:${port}`) +}) diff --git a/Frontend/src/App.jsx b/Frontend/src/App.jsx new file mode 100644 index 0000000..5a7b29e --- /dev/null +++ b/Frontend/src/App.jsx @@ -0,0 +1,13 @@ +import React from 'react' +import { Routes, Route } from 'react-router-dom' +import Landing from './pages/Landing' +import Dashboard from './pages/Dashboard' + +export default function App() { + return ( + + } /> + } /> + + ) +} diff --git a/Frontend/src/components/Hero.jsx b/Frontend/src/components/Hero.jsx new file mode 100644 index 0000000..5b5fd7a --- /dev/null +++ b/Frontend/src/components/Hero.jsx @@ -0,0 +1,37 @@ +import React from 'react' + +function AgentBubble({ name }) { + return ( +
+
{name}
+
+
+ ) +} + +export default function Hero({ onConnect }) { + return ( +
+
+

Your Autonomous AI Investment Committee

+

A team of AI agents that debate, vote, and execute investment decisions on your behalf.

+
+ + +
+
+ +
+
+
+ + + + + +
+
+
+
+ ) +} diff --git a/Frontend/src/components/Loading.jsx b/Frontend/src/components/Loading.jsx new file mode 100644 index 0000000..56e28ca --- /dev/null +++ b/Frontend/src/components/Loading.jsx @@ -0,0 +1,12 @@ +import React from 'react' + +export default function Loading() { + return ( +
+
+
+
Connecting Sentinel Committee…
+
+
+ ) +} diff --git a/Frontend/src/main.jsx b/Frontend/src/main.jsx new file mode 100644 index 0000000..68d75fa --- /dev/null +++ b/Frontend/src/main.jsx @@ -0,0 +1,13 @@ +import React from 'react' +import { createRoot } from 'react-dom/client' +import { BrowserRouter } from 'react-router-dom' +import App from './App' +import './styles.css' + +createRoot(document.getElementById('root')).render( + + + + + +) diff --git a/Frontend/src/pages/Dashboard.jsx b/Frontend/src/pages/Dashboard.jsx new file mode 100644 index 0000000..71da47e --- /dev/null +++ b/Frontend/src/pages/Dashboard.jsx @@ -0,0 +1,20 @@ +import React from 'react' + +export default function Dashboard() { + return ( +
+
+
Sentinel AI
+
+
+

Dashboard

+

Welcome to your simulated Sentinel AI dashboard.

+
+
Portfolio Value
$1,234,567
+
Daily P&L
+0.42%
+
Active Agents
5
+
+
+
+ ) +} diff --git a/Frontend/src/pages/Landing.jsx b/Frontend/src/pages/Landing.jsx new file mode 100644 index 0000000..1ff442a --- /dev/null +++ b/Frontend/src/pages/Landing.jsx @@ -0,0 +1,71 @@ +import React, { useState } from 'react' +import { useNavigate } from 'react-router-dom' +import Hero from '../components/Hero' +import Loading from '../components/Loading' + +export default function Landing() { + const navigate = useNavigate() + const [loading, setLoading] = useState(false) + + function handleConnect() { + setLoading(true) + // simulate elegant 2s loading + setTimeout(() => { + setLoading(false) + navigate('/dashboard') + }, 2000) + } + + return ( +
+ {loading && } +
+
Sentinel AI
+ +
+ +
+ + +
+

How It Works

+
    +
  1. Connect Wallet
  2. +
  3. Set Risk Profile
  4. +
  5. AI Committee Debates
  6. +
  7. Portfolio Executes
  8. +
  9. Autonomous Rebalancing
  10. +
+
+ +
+

AI Committee

+
+
Bull Agent
+
Bear Agent
+
Neutral Agent
+
Onchain Agent
+
Yield Agent
+
+
+ +
+

Features

+
    +
  • Multi Agent Intelligence
  • +
  • Real-Time Portfolio Monitoring
  • +
  • Smart Account Automation
  • +
  • Autonomous Rebalancing
  • +
  • Institutional Risk Controls
  • +
+
+
+ +
+
© {new Date().getFullYear()} Sentinel AI — Institutional grade AI investing
+
+
+ ) +} diff --git a/Frontend/src/styles.css b/Frontend/src/styles.css new file mode 100644 index 0000000..98d1f8c --- /dev/null +++ b/Frontend/src/styles.css @@ -0,0 +1,61 @@ +:root{ + --bg: #000000; + --bg-2: #0a0a0a; + --card: #111111; + --borders: #1f1f1f; + --text: #ffffff; + --muted: #9a9a9a; + --accent: #3b82f6; + --success: #10b981; + --warning: #f59e0b; + --glass: rgba(255,255,255,0.04); +} +*{box-sizing:border-box} +html,body,#root{height:100%} +body{ + margin:0; + background:var(--bg); + color:var(--text); + font-family: Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; +} +.site-header{ + display:flex;align-items:center;justify-content:space-between;padding:20px 40px;border-bottom:1px solid var(--borders);background:linear-gradient(180deg, rgba(255,255,255,0.02), transparent) +} +.brand{font-weight:700;font-size:18px} +.container{max-width:1100px;margin:40px auto;padding:0 20px} +.hero{display:flex;gap:40px;align-items:center} +.hero-copy{flex:1} +.hero-copy h1{font-size:44px;margin:0 0 10px;font-weight:800} +.hero-copy .sub{color:var(--muted);margin-bottom:20px} +.hero-ctas{display:flex;gap:12px} +.btn{padding:10px 18px;border-radius:10px;border:1px solid var(--borders);background:transparent;color:var(--text);cursor:pointer} +.btn-primary{background:linear-gradient(90deg,var(--accent),#60a5fa);border:none;font-weight:700} +.btn-ghost{background:transparent;border:1px solid rgba(255,255,255,0.04)} +.hero-visual{width:480px} +.glass-panel{background:linear-gradient(135deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));border:1px solid rgba(255,255,255,0.04);backdrop-filter: blur(8px);padding:20px;border-radius:14px} +.agents-row{display:flex;gap:12px;align-items:center;justify-content:space-between} +.agent-bubble{width:80px;height:80px;background:var(--card);border-radius:12px;padding:10px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;position:relative;overflow:hidden;border:1px solid var(--borders)} +.agent-name{font-weight:700;font-size:12px} +.agent-message{position:absolute;right:8px;bottom:8px;width:8px;height:8px;border-radius:50%;background:var(--accent);opacity:0;animation:ping 2s infinite} +@keyframes ping{0%{opacity:0;transform:scale(0.6)}30%{opacity:1;transform:scale(1.4)}100%{opacity:0;transform:scale(2)}} + +.how-it-works, .committee, .features{margin-top:40px;padding:20px;background:linear-gradient(180deg, rgba(255,255,255,0.01), transparent);border:1px solid rgba(255,255,255,0.02);border-radius:10px} +.agent-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:12px} +.agent-card{background:var(--card);padding:16px;border-radius:8px;border:1px solid var(--borders)} +.features ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,1fr);gap:8px} +.site-footer{padding:24px 40px;border-top:1px solid var(--borders);color:var(--muted);font-size:14px} + +.loading-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg, rgba(0,0,0,0.6), rgba(0,0,0,0.75));backdrop-filter: blur(4px);z-index:60} +.loader{display:flex;flex-direction:column;align-items:center;gap:12px} +.spinner{width:64px;height:64px;border-radius:50%;border:6px solid rgba(255,255,255,0.06);border-top-color:var(--accent);animation:spin 1s linear infinite} +@keyframes spin{to{transform:rotate(360deg)}} +.loader-text{color:var(--muted)} + +.dashboard-root{min-height:100vh;background:var(--bg-2)} +.dash-header{padding:20px 40px;border-bottom:1px solid var(--borders)} +.dash-main{max-width:1100px;margin:40px auto;padding:20px} +.dash-cards{display:flex;gap:12px;margin-top:20px} +.card{background:var(--card);padding:20px;border-radius:10px;border:1px solid var(--borders);min-width:180px} +.muted{color:var(--muted)} diff --git a/Frontend/static.html b/Frontend/static.html new file mode 100644 index 0000000..8d6c592 --- /dev/null +++ b/Frontend/static.html @@ -0,0 +1,893 @@ + + + + + + + Sentinel AI — Autonomous Investment Committee + + + +
+
+
+
Sentinel AI
+ +
+ + +
+
+ +
+
+ Institutional AI Platform +

Your Autonomous AI Investment Committee

+

A team of AI agents that debate, vote, and execute investment decisions on your behalf. Sentinel AI combines market context, onchain flows, risk controls, and execution logic into a single operating layer for modern portfolios.

+ +
+ + +
+ +
+
5 AgentsParallel committee analysis across momentum, risk, flow, yield, and balance.
+
24/7Continuous monitoring of volatility, liquidity, and position drift.
+
99.4%Execution reliability across automated portfolio actions and rebalances.
+
+
+ + +
+ +
+
+ Real-time committee debate • Agent consensus before execution + Onchain flow intelligence • Wallet clusters, liquidity, routing + Risk-aware rebalancing • Drawdown, volatility, concentration checks + Autonomous execution • Built-in guardrails for every action + Real-time committee debate • Agent consensus before execution + Onchain flow intelligence • Wallet clusters, liquidity, routing + Risk-aware rebalancing • Drawdown, volatility, concentration checks + Autonomous execution • Built-in guardrails for every action +
+
+ +
+
+
+
+

How It Works

+

The platform ingests market context, lets each agent argue a distinct thesis, and converts the final committee vote into guarded execution actions.

+
+
+
+
Connect Wallet

Login is simulated here for preview. In production, the wallet becomes the portfolio identity layer.

+
Set Risk Profile

Define volatility bands, drawdown ceilings, and allocation constraints before any action can be executed.

+
Agents Debate

Momentum, risk, balance, flow, and yield agents each publish a thesis with evidence and confidence scoring.

+
Committee Votes

A weighted vote produces the final portfolio instruction, with dissent captured for auditability.

+
Portfolio Executes

Orders route through a controlled execution layer with slippage checks and post-trade validation.

+
+
+ +
+
+
+

AI Committee

+

Each agent owns a narrow mandate. That separation keeps the system explainable and prevents any single signal from dominating the portfolio.

+
+
+
+
Bull AgentMomentum

Looks for breakouts, trend continuation, and high-conviction growth setups.

Vote: Buy
+
Bear AgentRisk

Raises hedges when volatility expands or correlation spikes across holdings.

Vote: Hedge
+
Neutral AgentBalance

Prevents overreaction by moderating extremes and enforcing portfolio discipline.

Vote: Hold
+
Onchain AgentFlow

Tracks wallet activity, liquidity changes, and capital rotation across venues.

Vote: Accumulate
+
Yield AgentIncome

Searches for efficient carry, stable yield, and capital-efficient allocations.

Vote: Rotate
+
+
+ +
+
+
+

Portfolio Signal Engine

+

Sentinel AI combines market price action, onchain context, and policy constraints into a single decision surface that reads like a senior investment memo.

+
+
+
+
+
T+00
Market scan begins
Price momentum, liquidity depth, news tone, and cross-asset context are ingested every cycle.
+
T+04
Agent theses are generated
Each agent produces a readable thesis, not just a raw score, so every vote can be audited later.
+
T+09
Consensus is computed
The committee compares conviction, confidence, and policy alignment before deciding whether to act.
+
T+15
Execution is gated
The final route must pass risk checks, slippage thresholds, and account constraints before it executes.
+
+ +
+
Momentum strengthTrend expansion across liquid assets
+
Risk pressureVolatility clustering and drawdown watch
+
Onchain inflowLarge wallet accumulation and transfer flow
+
Yield opportunityCapital-efficient rotation into income
+
+
+
+ +
+
+
+

Features

+

The product is designed to feel like a premium institutional terminal while staying simple enough to read in one pass.

+
+
+
+
Multi-Agent Intelligence

Specialized agents produce different viewpoints so the committee can balance growth, defense, and yield in a coherent process.

+
Real-Time Portfolio Monitoring

Account health, position drift, and market context are monitored continuously rather than only at rebalance time.

+
Smart Account Automation

Execution logic can react to committee votes, thresholds, and recurring policy schedules without manual intervention.

+
Autonomous Rebalancing

When conditions shift, the system can trim, rotate, hedge, or hold based on predefined risk rules.

+
Institutional Risk Controls

Concentration limits, slippage caps, and maximum exposure rules keep automation inside a governed operating range.

+
Readable Audit Trail

Every decision is explainable, timestamped, and structured for review by humans or downstream systems.

+
+
+ +
+
+
+

Operating Metrics

+

A clearer view of what Sentinel AI is designed to protect: capital, speed, and discipline.

+
+
+
+
Risk-Gated

Every trade is checked against policy constraints before execution.

+
Fast Signal Cycle

Debate, vote, and order generation happen in a compact decision loop.

+
Audit Ready

Human-readable reasoning is preserved for oversight and review.

+
Institutional Tone

Built to feel like a private investment desk, not a consumer dashboard.

+
+
+
+ +
+ © Sentinel AI + Institutional-grade autonomous investment platform +
+
+ + + + ++ ++ diff --git a/Frontend/vite.config.js b/Frontend/vite.config.js new file mode 100644 index 0000000..6172571 --- /dev/null +++ b/Frontend/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +export default defineConfig({ + plugins: [react()], + server: { port: 5173 } +}) diff --git a/README.md b/README.md new file mode 100644 index 0000000..c30ecd3 --- /dev/null +++ b/README.md @@ -0,0 +1,228 @@ +# Sentinel AI — Autonomous Investment Committee + +>A focused README describing architecture, stack, frontend design, workflow, demo steps, and prize-track strategy for the Sentinel AI Investment Committee (an autonomous, on-chain AI Investment Committee using MetaMask Smart Accounts, Venice AI, and agent-to-agent coordination). + +--- + +## Overview + +Sentinel AI is an autonomous on-chain investment committee composed of specialized AI agents that debate, propose, vote, and execute portfolio decisions through MetaMask Smart Accounts and permissioned relayers. The product emphasizes agent-to-agent (A2A) coordination, on-chain signals, continuous autonomy, and safe execution limits set by the user. + +This README captures the recommended architecture, component responsibilities, frontend pages and flows, tech stack, demo workflow, and a focused prize-track strategy. + +--- + +## Product Positioning + +Sentinel AI — "An autonomous on-chain investment committee powered by AI agents." +Shift the narrative from "AI tells you what to buy" to: +"A team of specialized AI fund managers debate, vote, execute, and continuously manage your portfolio using MetaMask Smart Accounts." + +This positioning highlights agent intelligence, A2A coordination, Venice AI usage, and real on-chain execution. + +--- + +## Final Architecture (conceptual) + +USER + | + V +MetaMask Smart Account + | + V +Session Manager + | + V +Intent Router + | + V +=============================================== + INVESTMENT COMMITTEE (Agent Layer) +=============================================== + Bull Agent + Bear Agent + Neutral Agent + Onchain Agent + Yield Agent +=============================================== + A2A NEGOTIATION LAYER +=============================================== + Proposal -> CounterProposal -> RiskChallenge -> Revision -> Voting +=============================================== + PORTFOLIO DECISION ENGINE +=============================================== + Portfolio Constructor + Risk Validator + Compliance Validator +=============================================== + EXECUTION LAYER +=============================================== + Execution Agent + MetaMask Smart Accounts + 1Shot Relayer +=============================================== + AUTONOMOUS LOOP +=============================================== + Rebalance Trigger + Market Event Trigger + Risk Trigger + +--- + +## Key Architectural Improvements (why they matter) + +- Session Manager: persists user risk profile, history, and spending limits so decisions are stateful across runs and Smart Account permissions are meaningful. +- Onchain Agent: reads on-chain signals (whale flows, DEX volume, TVL, stablecoin inflows) to produce signals unavailable to off-chain-only systems. +- Structured A2A Negotiation: proposals, counter-proposals, reasoned rejections and revisions passed as formal messages between agents; this explicitly demonstrates coordination. +- Rebalance Triggers (not separate monitor): triggers re-inject intents into the pipeline for a cleaner autonomous loop. +- x402 / ERC-7710 Payments: enable micropayments for premium data used by the Onchain Agent (improves prize eligibility). + +--- + +## Component Details + +- Session Manager + - Persists: risk profile, budget, maximum trade, history of decisions and votes, opt-in toggles (auto rebalance). + - Sample schema: + +```json +{ + "risk":"moderate", + "investment":500, + "max_trade":100, + "history":[] +} +``` + +- Intent Router + - Turns user intent and session data into structured tasks for the committee (e.g., build allocation for $500, moderate risk, 6-month horizon). + +- Agent Layer + - Bull Agent: seeks upside; proposes aggressive allocations. + - Bear Agent: protects capital; vetoes or reduces exposure when risk rises. + - Neutral Agent: provides compromise proposals and tie-breaking votes. + - Onchain Agent: ingests on-chain telemetry (wallet flows, DEX volume, TVL) and premium data (via paid feeds/x402 if needed). + - Yield Agent: finds yield opportunities across lending, staking, vaults. + +- A2A Negotiation Layer + - Message types: Proposal, CounterProposal, RiskChallenge, Revision, Vote, Rationale. + - Flow: proposal -> challenge/reject -> revision -> vote -> final decision. + +- Portfolio Decision Engine + - Inputs: all agent proposals, onchain signals, session constraints + - Outputs: proposed allocation object and confidence/risk metadata. + +- Execution Layer + - Execution Agent composes transactions respecting session limits (max trade, slippage) and uses 1Shot Relayer + Smart Accounts for permissioned, UX-friendly execution. + +--- + +## A2A Protocol (example messages) + +- Proposal: + - { from: "Bull", allocation: {ETH:70, USDC:30}, rationale: "ETF inflows" } +- CounterProposal: + - { from: "Bear", action: "REJECT", reason: "concentration risk", suggested_revision: {ETH:50, BTC:20, USDC:30} } +- Vote: + - { from: "Neutral", vote: "APPROVE", reasons: ["diversified", "within risk limits"] } + +Structured messages allow reproducible debate logs for judges to inspect. + +--- + +## Frontend Design and Pages + +Design principle: Bloomberg Terminal meets ChatGPT — dense data + clear debate timeline and actions. + +- Landing Page + - Hero: "Your Personal AI Investment Committee" + - CTA: Connect Wallet + +- Dashboard + - Portfolio value, change %, allocation cards, quick actions (rebalance, withdraw) + +- Committee Live View (demo centerpiece) + - Live scrolling debate: each agent's latest message, proposal, and vote + - UI: timeline with message bubbles, color-coded agents, expand-to-read rationale + +- Strategy Page + - Form: investment amount, risk profile, horizon + - Start committee (kick off debate) + +- Execution Page + - Shows: proposed allocation, expected yield, risk score + - Button: Execute (opens MetaMask Smart Account approval flow) + +- Governance Page + - Manage Smart Account permissions: Max capital, max single trade, auto rebalance toggle + +UX notes: +- Show structured proposal diff views (before/after allocation) +- Allow live rewind of debate log for judges +- Use micro-animations for proposals and vote results (Framer Motion) + +--- + +## Demo Workflow (concise steps) + +1. Connect MetaMask. +2. Create Smart Account (grant bounded permissions: e.g. max $500, max trade $100, slippage 2%). +3. Set strategy: Moderate Risk, $500 budget, 6-month horizon. +4. Committee starts: Live A2A negotiation and revision. +5. Vote passes; Execution Agent submits through 1Shot Relayer. +6. Transaction relayed -> Smart Account -> Blockchain; gas paid via stablecoin if configured. +7. Portfolio appears on Dashboard. +8. Rebalance triggers on drift or market events; new intent flows through the pipeline. + +--- + +## Tech Stack + +- Frontend: Next.js, Tailwind CSS, shadcn/ui, Framer Motion. +- Agent Orchestration: LangGraph (or similar orchestration layer), Venice AI for reasoning. +- Blockchain: MetaMask Smart Accounts Kit, 1Shot Relayer; x402 / ERC-7710 for micropayments. +- Data: DefiLlama, CoinGecko; optional premium feeds via x402. +- Database: Supabase (session data, proposals, audit logs). +- Deployment: Vercel (frontend), serverless functions for brokered calls and webhook handlers. + +--- + +## Prize Track Strategy + +Primary targets (high probability): +- Best Agent — demonstrate multiple specialized agents + Venice AI integration. +- Best A2A Coordination — structured proposals, counter-proposals, voting, and logs. +- Best Use of Venice AI — Venice used across market analysis, debate generation, and voting rationale. + +Secondary targets: +- Best Use of 1Shot Relayer — show relayed transactions and Smart Account upgrade. +- Best x402 + ERC-7710 — add a small x402 micropayment flow: Execution Agent or Onchain Agent pays for premium signals. + +This approach gives exposure to most of the hackathon prize pool with minimal extra work. + +--- + +## Implementation Next Steps (recommended) + +1. Implement Session Manager tables in Supabase and an API to persist session state. +2. Wire MetaMask Smart Account flows and implement bounded permission UI. +3. Implement a simple A2A message bus (queue in DB or pub/sub) to pass Proposal/CounterProposal messages. +4. Integrate Venice AI for each agent's analysis and proposal generation. +5. Add Onchain Agent feeds (DefiLlama + optional premium feeds via x402) and a simple rule-based parser for signals. +6. Build Committee Live View and a demo script that runs through a full debate -> vote -> execute flow. + +--- + +## Files and Logs + +Keep an auditable log of all A2A messages and vote results (store in DB). Judges will expect to inspect debate transcripts. + +--- + +## Contact / Notes + +This README is intended as the product and architecture blueprint for the hackathon pitch and implementation. If you want, I can scaffold the Next.js frontend layout, the Supabase schema for the Session Manager and message bus, or example LangGraph flows for the Agent orchestration. + +--- + +Created for the Sentinel AI: Autonomous Investment Committee concept.