diff --git a/README.md b/README.md index 5517678..5a0f818 100644 --- a/README.md +++ b/README.md @@ -29,20 +29,34 @@ At the core of the network, Google’s A2A protocol and ERC-8004 smart contracts enable identity registration, reputation building, and cooperative task-solving. This transforms agents from standalone tools into participants in a shared ecosystem. We believe in self-organizing agent networks β€” systems that can share context, form teams, and reason collectively without central control. -Visit our website at [isek.xyz](https://www.isek.xyz/) for more details. +## Feature +

+ feature +

+ + +## Ecosystem +We build multiple components to demonstrate the viability of the ecosystem in cluding chatapp. agent explorer and chrome extensions. Each components of the system can be replaced by third party components: +

+ ISEK ecosystem_overview +

+ ## 🌟 Star Us on GitHub and Get Exclusive Reward! Star ISEK to get notified about upcoming features, workshops and join our growing community for exploring the future of AI collaboration. -hippo - ---- +

+ ISEK ecosystem_overview +

+## Resource +Home Page: [Home Page](https://www.isek.xyz/)\ +Chat App: [Chat App](https://chatbot.isek.xyz/) (join discord community at [Discord](https://C.gg/PRzG3MSP) to get activation code)\ +Agent Explorer: [Agent explorer](https://isek-explorer.vercel.app/) ## πŸš€ Quick Start ### Prerequisites -- **Python 3.10+** -- **Node.js 18+** (for P2P functionality) +**Python 3.10+** and **Node.js 18+** (for P2P functionality) ### Installation ```bash @@ -66,7 +80,7 @@ message_content = await node.send_message("http://localhost:9999", query) ### P2P Relay setup ```bash -isek run-realy +isek run relay ``` Expected output: Relay peer started. peerId= @@ -110,74 +124,43 @@ resp = p2p.send_message( ) ``` +## Support: +Join discord and create support ticket:[Discord](https://C.gg/PRzG3MSP) ### Wallet & Identity (optional) ISEK now uses a simple local wallet manager and an ERC-8004 identity flow. - - Wallets are stored in `isek/web3/wallet.{NETWORK}.json` by default. - ABI path is relative by default: `isek/web3/abi/IdentityRegistry.json`. - Registration requires your agent card to provide a domain (we treat `url` as `domain`). -Add these keys to your `.env` (adjust for your network): - -```env -# Network and chain -NETWORK=base-sepolia -ISEK_RPC_URL=https://sepolia.base.org -ISEK_CHAIN_ID=84532 - -# Identity contract -ISEK_IDENTITY_REGISTRY_ADDRESS=0xYourRegistryAddress -ISEK_IDENTITY_ABI_PATH=isek/web3/abi/IdentityRegistry.json - -# Optional -ISEK_NETWORK_NAME=ISEK test network -ISEK_MAX_PRIORITY_FEE_GWEI=1 -ISEK_EXPLORER_TX_URL_TEMPLATE=https://sepolia.basescan.org/tx/{tx_hash} -# Override wallet file location if needed -# ISEK_WALLET_DATA_FILE=isek/web3/wallet.base-sepolia.json -``` - -Register or resolve your agent identity: - +### Register or resolve your agent identity: ```python from isek.web3.isek_identiey import ensure_identity - -# Any object with .name and .domain (or .url) works -agent_card = type("Card", (), {"name": "My Agent", "domain": "http://agent.isek.xyz"})() - -address, agent_id, tx_hash = ensure_identity(agent_card) +address, agent_id, tx_hash = ensure_identity(your_a2a_agent_card) print("wallet:", address, "agent_id:", agent_id, "tx:", tx_hash) ``` - Notes: - If the registry address or ABI are not set, the function returns your wallet address and skips on-chain registration. - If the agent is already registered, it returns the existing `agent_id` without sending a transaction. - ### Try Examples -[A2A Agent Server](https://www.isek.xyz/) -[A2A Agent Client](https://www.isek.xyz/) -[P2P Agent Server](https://www.isek.xyz/) -[A2A Agent Client](https://www.isek.xyz/) +[A2A Agent Server](https://github.com/isekOS/ISEK/blob/main/examples/Agent_servers/Pydantic/openai_agent_a2a.py)\ +[A2A Agent Client](https://github.com/isekOS/ISEK/blob/main/examples/Agent_client/a2a_client.py)\ +[P2P Agent Server](https://github.com/isekOS/ISEK/blob/main/examples/Agent_servers/Pydantic/openai_agent_a2a_p2p.py)\ +[P2P Agent Client](https://github.com/isekOS/ISEK/blob/main/examples/Agent_client/a2a_client_p2p.py) ---- - -## πŸ§ͺ CLI Commands -```bash -isek setup # Install Python and JavaScript dependencies -isek run_relay # Start the relay -isek clean # Clean temporary files -isek --help # View available commands -``` ---- +## Demo +### Registered Agents on block chain +

+ ISEK ecosystem_overview +

## 🀝 Contributing -We welcome collaborators, researchers, and early adopters! - +We welcome collaborators, researchers, and ecosystem collaborators! +* Join Discord to get latest update: [Discord](https://C.gg/PRzG3MSP) * πŸ’¬ Open issues or suggestions via [GitHub Issues](https://github.com/your-repo/issues) * πŸ“§ Contact us directly: [team@isek.xyz](mailto:team@isek.xyz) * πŸ“„ See our [Contribution Guidelines](CONTRIBUTING.md) @@ -186,5 +169,5 @@ We welcome collaborators, researchers, and early adopters!

Made with ❀️ by the Isek Team
- Autonomy is not isolation. It's cooperation, at scale. + Agent Autonomy = Cooperation + Scale

diff --git a/assets/Agent_directory.png b/assets/Agent_directory.png new file mode 100644 index 0000000..0756517 Binary files /dev/null and b/assets/Agent_directory.png differ diff --git a/assets/Chatapp.png b/assets/Chatapp.png new file mode 100644 index 0000000..d5fe983 Binary files /dev/null and b/assets/Chatapp.png differ diff --git a/assets/MCP.png b/assets/MCP.png new file mode 100644 index 0000000..15a03e5 Binary files /dev/null and b/assets/MCP.png differ diff --git a/assets/P2P.png b/assets/P2P.png new file mode 100644 index 0000000..6c895c8 Binary files /dev/null and b/assets/P2P.png differ diff --git a/assets/Tech_pverview.png b/assets/Tech_pverview.png new file mode 100644 index 0000000..14f9bdc Binary files /dev/null and b/assets/Tech_pverview.png differ diff --git a/assets/blockchain.png b/assets/blockchain.png new file mode 100644 index 0000000..0d08a1e Binary files /dev/null and b/assets/blockchain.png differ diff --git a/assets/ecosystem_overview.png b/assets/ecosystem_overview.png new file mode 100644 index 0000000..78779f2 Binary files /dev/null and b/assets/ecosystem_overview.png differ diff --git a/assets/feature.png b/assets/feature.png new file mode 100644 index 0000000..e828601 Binary files /dev/null and b/assets/feature.png differ diff --git a/assets/homepage.png b/assets/homepage.png new file mode 100644 index 0000000..e5517e4 Binary files /dev/null and b/assets/homepage.png differ diff --git a/assets/paper.png b/assets/paper.png new file mode 100644 index 0000000..e73271c Binary files /dev/null and b/assets/paper.png differ diff --git a/assets/vision.png b/assets/vision.png new file mode 100644 index 0000000..834d7c6 Binary files /dev/null and b/assets/vision.png differ diff --git a/isek/cli.py b/isek/cli.py index f109658..b9550e9 100644 --- a/isek/cli.py +++ b/isek/cli.py @@ -136,16 +136,73 @@ def is_development_environment(): click.secho(" P2P functionality may not work correctly", fg="yellow") click.secho("πŸŽ‰ ISEK setup completed successfully!", fg="green") - click.secho(" You can now run relay with 'isek run_relay'", fg="blue") + click.secho(" You can now run relay with 'isek run relay'", fg="blue") -@cli.command() -def run_relay(): - """Run relay""" - subprocess.run( - ["node", "isek/protocol/p2p/relay.js"], check=True, capture_output=True - ) - click.secho("βœ“ Relay started", fg="green") +@cli.group() +def run(): + """Run ISEK servers and services""" + + +@run.command() +@click.option( + "--port", default=9090, type=int, help="Port for the relay server (default: 9090)" +) +def relay(port): + """Start a libp2p circuit relay server""" + import importlib.resources + + # Find the p2p directory + try: + p2p_resource = importlib.resources.files("isek").joinpath("protocol/p2p") + p2p_dir = Path(str(p2p_resource)) + except Exception: + # Fallback to development environment path + p2p_dir = Path(__file__).parent / "protocol" / "p2p" + + relay_script = p2p_dir / "relay.js" + + # Check if relay.js exists + if not relay_script.exists(): + click.secho(f"βœ— Relay script not found at {relay_script}", fg="red") + sys.exit(1) + + # Check if Node.js is installed + try: + subprocess.run(["node", "--version"], check=True, capture_output=True) + except (subprocess.CalledProcessError, FileNotFoundError): + click.secho("βœ— Node.js is required to run the relay server", fg="red") + click.secho(" Please install Node.js from https://nodejs.org/", fg="yellow") + sys.exit(1) + + # Check if node_modules exists + if not (p2p_dir / "node_modules").exists(): + click.secho("βœ— JavaScript dependencies not installed", fg="red") + click.secho( + " Please run 'isek setup' first to install dependencies", fg="yellow" + ) + sys.exit(1) + + # Validate port range + if port <= 0 or port >= 65536: + click.secho(f"βœ— Invalid port: {port}. Must be between 1 and 65535", fg="red") + sys.exit(1) + + click.secho(f"πŸš€ Starting libp2p relay server on port {port}...", fg="blue") + click.secho(" Press Ctrl+C to stop", fg="yellow") + + # Run the relay server + try: + subprocess.run( + ["node", str(relay_script), f"--port={port}"], + cwd=p2p_dir, + check=True, + ) + except KeyboardInterrupt: + click.secho("\nβœ“ Relay server stopped", fg="green") + except subprocess.CalledProcessError as e: + click.secho(f"\nβœ— Relay server failed: {e}", fg="red") + sys.exit(e.returncode) @cli.group()