Skip to content

Commit 1a052b6

Browse files
authored
feat: Add complete React/Next.js PWA frontend for AEAMCP with token integration
- Complete Next.js 14+ frontend with TypeScript and Tailwind CSS - PWA support with manifest.json and service worker - Solana wallet integration (Phantom, Solflare, Torus, Ledger) - Real token integration (Cpzvdx6pppc9TNArsGsqgShCsKC9NCCjA2gtzHvUpump) - AI Agents registry page with search and filtering - MCP Servers registry page with capability indicators - Comprehensive tokenomics page with trading links - Responsive design with dark mode support - Direct Jupiter and Raydium trading integration - Solscan explorer integration - Copy-to-clipboard contract address functionality - Professional UI/UX following Solana design principles - Comprehensive README with setup and usage instructions
1 parent 4066526 commit 1a052b6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+24778
-1
lines changed

.gitignore

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,31 @@ node_modules/
4444
# Solana specific
4545
test-ledger/
4646
.anchor/
47-
keypairs/
47+
keypairs/
48+
49+
# Next.js
50+
frontend/.next/
51+
frontend/out/
52+
frontend/build/
53+
frontend/dist/
54+
55+
# Environment variables
56+
.env
57+
.env.local
58+
.env.development.local
59+
.env.test.local
60+
.env.production.local
61+
62+
# PWA files
63+
frontend/public/sw.js
64+
frontend/public/workbox-*.js
65+
66+
# TypeScript
67+
*.tsbuildinfo
68+
69+
# Vercel
70+
.vercel
71+
72+
# Temporary files
73+
*.tmp
74+
*.temp

README.md

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ A comprehensive on-chain registry system for autonomous AI agents and Model Cont
77
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
88
[![Solana](https://img.shields.io/badge/solana-v1.18+-blue.svg)](https://solana.com)
99

10+
## 🚀 Live on Devnet
11+
12+
**Agent Registry**: `BruRLHGfNaf6C5HKUqFu6md5ePJNELafm1vZdhctPkpr` | [Explorer](https://explorer.solana.com/address/BruRLHGfNaf6C5HKUqFu6md5ePJNELafm1vZdhctPkpr?cluster=devnet)
13+
**MCP Server Registry**: `BCBVehUHR3yhbDbvhV3QHS3s27k3LTbpX5CrXQ2sR2SR` | [Explorer](https://explorer.solana.com/address/BCBVehUHR3yhbDbvhV3QHS3s27k3LTbpX5CrXQ2sR2SR?cluster=devnet)
14+
1015
## 🌟 Overview
1116

1217
The Solana AI Registries protocol provides essential infrastructure for discovering, verifying, and interacting with autonomous AI agents and Model Context Protocol (MCP) servers. This implementation consists of two interconnected on-chain registries:
@@ -308,6 +313,149 @@ solana config set --url devnet
308313
./scripts/verify.sh
309314
```
310315

316+
### 🌐 Live Devnet Deployment
317+
318+
The Solana AI Registries are currently deployed and live on Solana Devnet:
319+
320+
#### Program Addresses
321+
322+
- **Agent Registry**: `BruRLHGfNaf6C5HKUqFu6md5ePJNELafm1vZdhctPkpr`
323+
- **MCP Server Registry**: `BCBVehUHR3yhbDbvhV3QHS3s27k3LTbpX5CrXQ2sR2SR`
324+
325+
#### Explorer Links
326+
327+
- [Agent Registry on Solana Explorer](https://explorer.solana.com/address/BruRLHGfNaf6C5HKUqFu6md5ePJNELafm1vZdhctPkpr?cluster=devnet)
328+
- [MCP Server Registry on Solana Explorer](https://explorer.solana.com/address/BCBVehUHR3yhbDbvhV3QHS3s27k3LTbpX5CrXQ2sR2SR?cluster=devnet)
329+
330+
#### Query Examples
331+
332+
##### Using Solana CLI
333+
334+
```bash
335+
# Configure for devnet
336+
solana config set --url devnet
337+
338+
# Query Agent Registry program info
339+
solana program show BruRLHGfNaf6C5HKUqFu6md5ePJNELafm1vZdhctPkpr
340+
341+
# Query MCP Server Registry program info
342+
solana program show BCBVehUHR3yhbDbvhV3QHS3s27k3LTbpX5CrXQ2sR2SR
343+
344+
# List all agent accounts (requires custom RPC call)
345+
solana account BruRLHGfNaf6C5HKUqFu6md5ePJNELafm1vZdhctPkpr --output json
346+
347+
# List all MCP server accounts (requires custom RPC call)
348+
solana account BCBVehUHR3yhbDbvhV3QHS3s27k3LTbpX5CrXQ2sR2SR --output json
349+
```
350+
351+
##### Using JavaScript/TypeScript
352+
353+
```typescript
354+
import { Connection, PublicKey } from '@solana/web3.js';
355+
356+
const connection = new Connection('https://api.devnet.solana.com');
357+
358+
// Program addresses
359+
const AGENT_REGISTRY_PROGRAM_ID = new PublicKey('BruRLHGfNaf6C5HKUqFu6md5ePJNELafm1vZdhctPkpr');
360+
const MCP_REGISTRY_PROGRAM_ID = new PublicKey('BCBVehUHR3yhbDbvhV3QHS3s27k3LTbpX5CrXQ2sR2SR');
361+
362+
// Query all agent accounts
363+
async function getAllAgents() {
364+
const accounts = await connection.getProgramAccounts(AGENT_REGISTRY_PROGRAM_ID);
365+
return accounts.map(account => ({
366+
pubkey: account.pubkey.toString(),
367+
data: account.account.data,
368+
owner: account.account.owner.toString()
369+
}));
370+
}
371+
372+
// Query all MCP server accounts
373+
async function getAllMcpServers() {
374+
const accounts = await connection.getProgramAccounts(MCP_REGISTRY_PROGRAM_ID);
375+
return accounts.map(account => ({
376+
pubkey: account.pubkey.toString(),
377+
data: account.account.data,
378+
owner: account.account.owner.toString()
379+
}));
380+
}
381+
382+
// Query specific agent by PDA
383+
async function getAgentByOwner(ownerPubkey: PublicKey) {
384+
const [agentPda] = PublicKey.findProgramAddressSync(
385+
[Buffer.from("agent"), ownerPubkey.toBuffer()],
386+
AGENT_REGISTRY_PROGRAM_ID
387+
);
388+
389+
const accountInfo = await connection.getAccountInfo(agentPda);
390+
return accountInfo;
391+
}
392+
393+
// Query specific MCP server by PDA
394+
async function getMcpServerByOwner(ownerPubkey: PublicKey) {
395+
const [serverPda] = PublicKey.findProgramAddressSync(
396+
[Buffer.from("mcp_server"), ownerPubkey.toBuffer()],
397+
MCP_REGISTRY_PROGRAM_ID
398+
);
399+
400+
const accountInfo = await connection.getAccountInfo(serverPda);
401+
return accountInfo;
402+
}
403+
```
404+
405+
##### Using Python
406+
407+
```python
408+
from solana.rpc.api import Client
409+
from solana.publickey import PublicKey
410+
411+
# Connect to devnet
412+
client = Client("https://api.devnet.solana.com")
413+
414+
# Program addresses
415+
AGENT_REGISTRY_PROGRAM_ID = PublicKey("BruRLHGfNaf6C5HKUqFu6md5ePJNELafm1vZdhctPkpr")
416+
MCP_REGISTRY_PROGRAM_ID = PublicKey("BCBVehUHR3yhbDbvhV3QHS3s27k3LTbpX5CrXQ2sR2SR")
417+
418+
# Query all agent accounts
419+
def get_all_agents():
420+
response = client.get_program_accounts(AGENT_REGISTRY_PROGRAM_ID)
421+
return response
422+
423+
# Query all MCP server accounts
424+
def get_all_mcp_servers():
425+
response = client.get_program_accounts(MCP_REGISTRY_PROGRAM_ID)
426+
return response
427+
428+
# Query specific account
429+
def get_account_info(pubkey_str):
430+
pubkey = PublicKey(pubkey_str)
431+
response = client.get_account_info(pubkey)
432+
return response
433+
```
434+
435+
##### Using Rust
436+
437+
```rust
438+
use solana_client::rpc_client::RpcClient;
439+
use solana_sdk::pubkey::Pubkey;
440+
use std::str::FromStr;
441+
442+
// Connect to devnet
443+
let rpc_client = RpcClient::new("https://api.devnet.solana.com");
444+
445+
// Program addresses
446+
let agent_registry_program_id = Pubkey::from_str("BruRLHGfNaf6C5HKUqFu6md5ePJNELafm1vZdhctPkpr").unwrap();
447+
let mcp_registry_program_id = Pubkey::from_str("BCBVehUHR3yhbDbvhV3QHS3s27k3LTbpX5CrXQ2sR2SR").unwrap();
448+
449+
// Query all agent accounts
450+
let agent_accounts = rpc_client.get_program_accounts(&agent_registry_program_id)?;
451+
452+
// Query all MCP server accounts
453+
let mcp_accounts = rpc_client.get_program_accounts(&mcp_registry_program_id)?;
454+
455+
// Query specific account
456+
let account_info = rpc_client.get_account(&some_pubkey)?;
457+
```
458+
311459
### Mainnet Deployment
312460

313461
```bash

0 commit comments

Comments
 (0)